我正在使用Dialogflow的内联编辑器来处理用户数据并在in.js中查询我的数据库,与此同时,我还希望聊天机器人回答诸如以下的问题:
“我的下一次艺术测验什么时候开始。”
作为管理员,我知道艺术测试是一年中的每周三,每三周一次,但是我该如何将其转换为聊天机器人的响应,例如;
“您的下一次考试是8月8日星期三”,甚至是“您的下一次考试是今天!”
我看过this,这是启动js时间的不同方法,但似乎都不符合我的要求。
我为以下时间创建了一个函数,在该函数中,我假设必须进行计算:
function getDate(agent){
var today = new Date();
}
响应将类似于:
function getTestDate(agent){
agent.add('Your next test date is' + today); #etc
}
最近,我在stack上看到了另一篇文章,它计算两个日期之间的天数,尽管这行得通,但我不太确定如何将其实现到Dialogflow环境中。
我不认为moment.js可以在内联编辑器中工作,但如果这样做,按照示例here,这看起来很容易:
moment([2007, 0, 29]).fromNow(); // 4 years ago
moment([2007, 0, 29]).fromNow(true); // 4 years
然后我可以简单地在每个函数中针对不同的日期执行fromNow()命令,并知道如何将此类内容解释为普通的js?
更新
此事尚无定论,但又有了另一个主意,是否有办法确定月份并从那里触发响应?例如,我可以立即创建一个标识日期的函数,然后就可以将3/4个测试日期写为文本响应:
function (getTestDate(agent){
if(date) == May
} agent.add('Tests for May are....etc')
答案 0 :(得分:0)
好吧,不完全是我想要的,但是我能得到的最接近的是声明一个测试日期,然后创建if语句来建议今天是否在某个日期之前,那么我知道用下一个最接近的日期进行响应,依此类推。
function getTestDate(agent){
var today = new Date();
var testDate= new Date("08/08/2018");
var timeDiff = Math.abs(testDate.getTime() - today.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
if (today < testDate){
agent.add('Your next test date is in ' + diffDays + 'days, at 9pm on Wednesday');
}else if (today > testDate) {
agent.add('Your test date was on Wednesday 8th August 2018');
}else if (today == testDate){
agent.add('Your test is today, Wednesday 8th August 2018');
}
同样,这不是理想的,因为我知道必须在不同的时间创建各种功能,但是要把工作做好。 如果您还有其他建议,请随时提出建议。