Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Dialogflow的内联编辑器中基于当前日期计算未来日期_Javascript_Dialogflow Es - Fatal编程技术网

Javascript 在Dialogflow的内联编辑器中基于当前日期计算未来日期

Javascript 在Dialogflow的内联编辑器中基于当前日期计算未来日期,javascript,dialogflow-es,Javascript,Dialogflow Es,我正在使用Dialogflow的内联编辑器来处理用户数据并在.js中查询我的数据库,我还希望聊天机器人能够回答以下问题: “我的下一次艺术考试是什么时候?” 作为管理员,我知道艺术测试每年每3周在周三进行一次,但我如何将其转化为聊天机器人的响应,比如 “你的下一次艺术考试是8月8日星期三”,甚至“你的下一次考试是今天!” 我已经研究过启动js的不同方法,但似乎没有一种适合我所寻找的 我为时间创建了一个函数,如下所示,我假设我必须在这里进行计算: function getDate(agent)

我正在使用Dialogflow的内联编辑器来处理用户数据并在.js中查询我的数据库,我还希望聊天机器人能够回答以下问题:

“我的下一次艺术考试是什么时候?”

作为管理员,我知道艺术测试每年每3周在周三进行一次,但我如何将其转化为聊天机器人的响应,比如

“你的下一次艺术考试是8月8日星期三”,甚至“你的下一次考试是今天!”

我已经研究过启动js的不同方法,但似乎没有一种适合我所寻找的

我为时间创建了一个函数,如下所示,我假设我必须在这里进行计算:

  function getDate(agent){
      var today = new Date();
  }
而反应会是这样的:

function getTestDate(agent){
        agent.add('Your next test date is' + today); #etc   
}
最后,我看到了另一篇关于计算两个日期之间的天数的文章,虽然这可能有效,但我不太确定如何在Dialogflow环境中实现这一点

我不认为moment.js可以在内联编辑器中工作,但如果它可以工作,那么看起来就很容易了,根据示例:

然后我就可以在每个函数中针对不同的日期执行fromNow()命令,并了解如何将类似的内容解释为普通js

更新

还没有得到任何进展,但有另一个想法,是否有任何方法来确定月份,并从那里触发响应?例如,我现在可以创建一个识别日期的函数,然后我可以将3/4测试日期作为文本响应写入:

function (getTestDate(agent){
        if(date) == May
} agent.add('Tests for May are....etc')

好吧,这不是我想要的,但我能得到的最接近我想要的是声明一个测试日期,然后创建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');
        }
函数getTestDate(代理){
var today=新日期();
var测试日期=新日期(“2018年8月8日”);
var timeDiff=Math.abs(testDate.getTime()-today.getTime());
var diffDays=数学单元(timeDiff/(1000*3600*24));
如果(今天<测试日期){
add('您的下一个测试日期为'+diffDays+'天,周三晚上9点');
}else if(今天>测试日期){
代理。添加(“您的测试日期为2018年8月8日星期三”);
}else if(今天==测试日期){
代理。添加(“您的测试是今天,2018年8月8日星期三”);
}
再说一次,正如我所知,不理想的情况是必须为不同的时间创建各种各样的函数,但是要完成工作。
如果您有任何其他建议,请随时提出。

getTestDate
中,
getTestDate
怎么可能是错误的?您确定吗?函数getTestDate(代理){If(getTestDate){}Gah,我甚至不知道我在那里做什么。更新了,这仍然涵盖了我的问题,但没有不可靠的代码。只要安装js,你的工作就会更容易
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');
        }