我已经看了好几个小时了,但我一无所获......
我想做的是在用户第一次到达时向他们显示问候语,然后再输入任何内容,然后回显。我正在使用“conversationUpdate”事件为我的用户触发问候消息。我不明白的是为什么它似乎触发了两次,因为 conversationUpdate 事件只应在用户加入时触发一次。
var restify = require('restify');
var builder = require('botbuilder');
var connector = new builder.ChatConnector({
appId: process.env.MICROSOFT_APP_ID,
appPassword: process.env.MICROSOFT_APP_PASSWORD
});
var server = require('restify').createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
console.log('%s listening to %s', server.name, server.url);
});
server.post('/api/messages', connector.listen());
var bot = new builder.UniversalBot(connector);
bot.dialog('/', function (session) {
var message = null;
if (session.message.text == ''){
message = 'hello and welcome!';
session.send(message);
} else{
message = session.message.text;
session.send("You said: %s", message);
}
});
bot.on('conversationUpdate', function (message) {
if (message.membersAdded && message.membersAdded.length > 0) {
bot.beginDialog(message.address, '/');
}
});
谢谢, 埃德
最佳答案
它会触发两次,一次用于用户加入对话,另一次用于机器人加入对话,因此您应该检查何时要触发操作。在下一个示例中,它会在机器人加入对话时触发。
bot.on('conversationUpdate', function (message) {
if (message.membersAdded) {
message.membersAdded.forEach(function (identity) {
if (identity.id === message.address.bot.id) {
var msg = new builder.Message().address(message.address);
msg.text("Hail User");
bot.send(msg);
}
});
}
});
关于node.js - 机器人框架 conversationUpdate 事件似乎触发了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48966749/