我试图在我的机器人启动时显示一条欢迎消息,同时加载一个特定的对话框。我们在我工作的公司使用的是版本3(我知道,它很旧,不受支持(。
就欢迎信息而言,https://learn.microsoft.com/en-us/azure/bot-service/nodejs/bot-builder-nodejs-handle-conversation-events?view=azure-bot-service-3.0表示使用on conversationUpdate
,这很好,但这似乎与https://blog.botframework.com/2018/07/12/how-to-properly-send-a-greeting-message-and-common-issues-from-customers/,这建议不要使用conversationUpdate
,除非使用DirectLine,而是发送事件。这是对此事的最终决定吗?有更好的方法吗?
我还想在欢迎信息后自动加载一个对话框。我该怎么做?我可以在上面的"on conversationUpdate"事件期间访问会话并直接在那里加载对话框吗?有更好的方法吗?
谢谢你的帮助!
这是矛盾的,但在大多数情况下,conversationUpdate
可能是您的最佳选择。但是,由于通道处理此问题的方式不同,您应该意识到结果可能会有所不同。对于直达线路,利用发送事件是一个更好的选择。
一个例子,在需要的情况下:
bot.on('conversationUpdate', function(message) {
if (message.membersAdded) {
message.membersAdded.forEach(function(identity) {
if (identity.id === message.address.bot.id) {
var reply = new builder.Message()
.address(message.address)
.text("Welcome");
bot.send(reply);
}
});
}
});
要立即调用特定对话框,请执行以下操作:
bot.on('conversationUpdate', function (message) {
if (message.membersAdded) {
message.membersAdded.forEach(function (identity) {
if (identity.id === message.address.bot.id) {
bot.beginDialog(message.address, '/main');
}
});
}
});
bot.dialog('/main', [
function (session, args, next) {
session.send("Glad you could join.");
session.beginDialog('/next');
}
]);
只需将两者结合起来即可发送欢迎信息并启动对话框。
希望得到帮助!