node.js - 获取机器人发送消息和用户回复之间的持续时间

标签 node.js bots botframework chatbot

首先感谢您在构建和维护这个库方面所做的出色工作。 我有一个场景,我需要检查该人是否在 10 秒内回答。我有一些看起来与此类似的代码,其中我测量第一个 waterfall 步骤中的开始时间,并测量下一个 waterfall 步骤中的结束时间,我将在第二个 waterfall 步骤中找到两者之间的差异。

bot.dialog('/duration', [(session, args)=>{
    session.dialogData.startTime = new Date().getTime()
}, (session, results)=>{
    session.dialogData.endTime = new Date().getTime()
}])

我感觉上面的代码不太准确。我看到了 session.message.timestamp 属性。它与上面的代码有何不同

有没有更好的方法来测量这样的时差? 在这种情况下如何考虑网络延迟? 感谢您提前的答复

最佳答案

您可以设置发送消息的时间,然后使用消息时间戳重新评估,例如:

var bot = new builder.UniversalBot(connector, [
    function (session) {
        session.userData.lastMessageSent = new Date();
        builder.Prompts.text(session, 'Send something in 10 seconds or you die.');
    },
    function (session, result) {
        if (session.userData.lastMessageSent) {
            var lastMessageSent = new Date(session.userData.lastMessageSent);
            var lastMessageReceived = new Date(session.message.timestamp);

            var diff = lastMessageReceived - lastMessageSent / 1000;

            if (diff >= 10) {
                session.send('Game over.');
            } else  {
                session.send('Good boy!');
            }
        }
    }
]);

关于node.js - 获取机器人发送消息和用户回复之间的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42069081/

相关文章:

node.js - Botpress - 如何将数据库值带入聊天窗口?

c# - PromptDialog.Choice 中的重大更改?

node.js - Mongoose .js : _id of embedded document

node.js - Paypal 批准/完成交易后调用外部函数

node.js - 在没有模板引擎的情况下使用 express

python - 如何将 Telegram python变量值保存到本地数据库?

node.js - Mongoose 获取引用模型的_id,无论是否填充

python - 如何阻止 discord bot 响应自身/所有其他 bot [Python 3.6 中的 Discord Bot]

c# - 为什么 BotConnector 的行为与模拟器不同?

azure - 机器人在模拟器中运行完美,但在网络聊天测试中部署时失败发送失败重试错误