如何在沃森谈话中排除特定日期

时间:2017-04-19 18:01:00

标签: ibm-watson watson-conversation

我正在进行服务聊天,我想提取与星期日相对应的日子。例如:

Watson:选择日期
用户:第30天 沃森:我们今天不开放,因为这是星期天。

问题是......这个月的星期日与下个月的星期日不一样了。我在本月的星期日几天内尝试了一个阵列(例如:“2”,“9”,“16” ,“23”,“30”),但是对话并不明白第30天是星期天..有人可以帮我吗?

韩国社交协会! :)

1 个答案:

答案 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);
  }
}

检查我的应用:

enter image description here

在这种情况下,您可以立即使用获取日期,如果当天是星期日,您将在应用程序中结束消息...您也可以使用上下文变量,但是,您需要设置所有日期。使用此代码,您将检查日期,您的应用程序将发送消息。

摘要:将您的@sys-date转换为相同的格式now()并使用我的代码为您的用户发送一条消息,如果这一天是星期日。我创建了一个上下文变量,用于在请求之后保存日期,在下一个流程中,我创建了一个带有dayTrue的上下文:在会话流中为true。在我的应用程序中,我在updateMessage()创建了一个条件data.context.date === true,我的函数dayRequest()将会执行。