获取机器人发送消息和用户回复之间的持续时间
Get duration between the bot sending the message and user replying
首先感谢您在构建和维护这个库方面所做的出色工作。
我有一个场景,我需要检查这个人是否在 10 秒内回答。我有一些看起来与此类似的代码,我在第一个瀑布步骤中测量开始时间,并在下一个瀑布步骤中测量结束时间,我将在第二个瀑布步骤中找到两者之间的区别。
bot.dialog('/duration', [(session, args)=>{
session.dialogData.startTime = new Date().getTime()
}, (session, results)=>{
session.dialogData.endTime = new Date().getTime()
}])
感觉上面的代码不准确。我看过一个session.message.timestamp 属性。它与上面的代码有何不同
有没有更好的方法来测量这样的时差?
在这种情况下如何考虑网络延迟?
预先感谢您的回答
更好的方法可能是在注册机器人时使用 Application Insights 连接。
通过这种方式,Bot Framework 服务可以测量您的 requests/responses 并将时间戳自动存储到 Application Insights 中。
一旦你copy the instrumentation key to the bot registration page, events under customEvents in Application Insights Analytics.
如果您只是想要一个可操作的代码,上面的答案是更好的解决方案。
您可以设置发送消息的时间,然后 re-evaluate 使用消息时间戳,例如:
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!');
}
}
}
]);
首先感谢您在构建和维护这个库方面所做的出色工作。 我有一个场景,我需要检查这个人是否在 10 秒内回答。我有一些看起来与此类似的代码,我在第一个瀑布步骤中测量开始时间,并在下一个瀑布步骤中测量结束时间,我将在第二个瀑布步骤中找到两者之间的区别。
bot.dialog('/duration', [(session, args)=>{
session.dialogData.startTime = new Date().getTime()
}, (session, results)=>{
session.dialogData.endTime = new Date().getTime()
}])
感觉上面的代码不准确。我看过一个session.message.timestamp 属性。它与上面的代码有何不同
有没有更好的方法来测量这样的时差? 在这种情况下如何考虑网络延迟? 预先感谢您的回答
更好的方法可能是在注册机器人时使用 Application Insights 连接。 通过这种方式,Bot Framework 服务可以测量您的 requests/responses 并将时间戳自动存储到 Application Insights 中。
一旦你copy the instrumentation key to the bot registration page, events under customEvents in Application Insights Analytics.
如果您只是想要一个可操作的代码,上面的答案是更好的解决方案。
您可以设置发送消息的时间,然后 re-evaluate 使用消息时间戳,例如:
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!');
}
}
}
]);