如何排除 Watson 对话中的特定日期
How exclude especific days in Watson conversation
我正在进行服务聊天,我想提取与星期日相对应的日子。例如:
Watson:选择日期
用户:第 30 天
华生:我们今天不营业,因为是星期天。
问题是..这个月的星期日与下个月不同..我尝试在上下文中使用本月星期日的数组(例如:“2”,“9”, 16","23","30"),但对话不明白第 30 天是星期天..有人可以帮我吗?
谢谢! :)
在这种情况下,不幸的是,@sys-date
不等于 @sys-number
。
在这种情况下 @sys-number
,如果用户输入 1,@sys-number
识别并可以使用 @sys-number:1
和流内的条件。
不幸的是,@sys-date
没有。
在这种情况下,要获取带有 javascript 的日期,您可以使用:
new Date() //get the date NOW
new Date(milliseconds)
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
可以看到now()是同样的格式来获取日期:
new Date(year, month, day, hours, minutes, seconds, milliseconds)
您可以将 @sys-date
转换为相同的格式,并使用它来验证日期的名称。
使用上下文变量获取日期并在您的应用程序中使用代码。例如:
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var dateObject = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var dayName = days[dateObject.getDay()];
console.log(dayName);
并提出一些条件...例如:
if(dayName === 'Sunday'){
data.output.text[0] = "We don't open this day, because it's a Sunday."
}
我对此进行了编码并且工作正常,请参阅:
function dayRequest(data, req, res){
console.log('works the true condition context')
var dateString = data.context.day; //context variable with <? @sys-date ?>
var dateParts = dateString.split("/");
var dateObject = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var dateObject = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var dayName = days[dateObject.getDay()];
console.log(dayName);
if(dayName === 'Sunday'){
data.output.text[0] = "We don't open this day, because it's a Sunday.";
return res.json(data);
}
}
检查我的应用程序:
在这种情况下,您可以使用 now 来获取日期,如果当天是星期日,您将在应用程序中结束一条消息...您也可以为此使用上下文变量,但是,您需要设置所有日期.. 使用此代码,您将检查日期并且您的应用程序将发送一条消息。
总结: 将您的 @sys-date
转换为相同的格式 now()
并使用我的代码为您的用户发送消息(如果当天是星期天)。我创建了一个上下文变量来保存请求后的日期,在下一个流程中我创建了一个上下文与 dayTrue: true 在对话流程中。在我的应用程序中,我在 updateMessage()
中创建了一个条件,如果 data.context.date === true
,我的函数 dayRequest()
将执行。
我正在进行服务聊天,我想提取与星期日相对应的日子。例如:
Watson:选择日期
用户:第 30 天
华生:我们今天不营业,因为是星期天。
问题是..这个月的星期日与下个月不同..我尝试在上下文中使用本月星期日的数组(例如:“2”,“9”, 16","23","30"),但对话不明白第 30 天是星期天..有人可以帮我吗?
谢谢! :)
在这种情况下,不幸的是,@sys-date
不等于 @sys-number
。
在这种情况下 @sys-number
,如果用户输入 1,@sys-number
识别并可以使用 @sys-number:1
和流内的条件。
不幸的是,@sys-date
没有。
在这种情况下,要获取带有 javascript 的日期,您可以使用:
new Date() //get the date NOW
new Date(milliseconds)
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
可以看到now()是同样的格式来获取日期:
new Date(year, month, day, hours, minutes, seconds, milliseconds)
您可以将 @sys-date
转换为相同的格式,并使用它来验证日期的名称。
使用上下文变量获取日期并在您的应用程序中使用代码。例如:
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var dateObject = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var dayName = days[dateObject.getDay()];
console.log(dayName);
并提出一些条件...例如:
if(dayName === 'Sunday'){
data.output.text[0] = "We don't open this day, because it's a Sunday."
}
我对此进行了编码并且工作正常,请参阅:
function dayRequest(data, req, res){
console.log('works the true condition context')
var dateString = data.context.day; //context variable with <? @sys-date ?>
var dateParts = dateString.split("/");
var dateObject = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var dateObject = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var dayName = days[dateObject.getDay()];
console.log(dayName);
if(dayName === 'Sunday'){
data.output.text[0] = "We don't open this day, because it's a Sunday.";
return res.json(data);
}
}
检查我的应用程序:
在这种情况下,您可以使用 now 来获取日期,如果当天是星期日,您将在应用程序中结束一条消息...您也可以为此使用上下文变量,但是,您需要设置所有日期.. 使用此代码,您将检查日期并且您的应用程序将发送一条消息。
总结: 将您的 @sys-date
转换为相同的格式 now()
并使用我的代码为您的用户发送消息(如果当天是星期天)。我创建了一个上下文变量来保存请求后的日期,在下一个流程中我创建了一个上下文与 dayTrue: true 在对话流程中。在我的应用程序中,我在 updateMessage()
中创建了一个条件,如果 data.context.date === true
,我的函数 dayRequest()
将执行。