我正在进行服务聊天,我想提取与星期日相对应的日子。例如:
Watson:选择日期
用户:第30天
沃森:我们今天不开放,因为这是星期天。
问题是......这个月的星期日与下个月的星期日不一样了。我在本月的星期日几天内尝试了一个阵列(例如:“2”,“9”,“16” ,“23”,“30”),但是对话并不明白第30天是星期天..有人可以帮我吗?
韩国社交协会! :)
答案 0 :(得分:1)
在这种情况下,不幸的是,@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);
}
}
检查我的应用:
在这种情况下,您可以立即使用获取日期,如果当天是星期日,您将在应用程序中结束消息...您也可以使用上下文变量,但是,您需要设置所有日期。使用此代码,您将检查日期,您的应用程序将发送消息。
摘要:将您的@sys-date
转换为相同的格式now()
并使用我的代码为您的用户发送一条消息,如果这一天是星期日。我创建了一个上下文变量,用于在请求之后保存日期,在下一个流程中,我创建了一个带有dayTrue的上下文:在会话流中为true。在我的应用程序中,我在updateMessage()
创建了一个条件data.context.date === true
,我的函数dayRequest()
将会执行。