如何排除 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() 将执行。