bot框架conversationUpdate事件似乎发生了两次

时间:2018-02-24 19:26:47

标签: node.js botframework

我已经看了好几个小时,但我没有到达任何地方......

我要做的是在用户首次到达之前,在他们输入任何内容之前向用户显示问候语,然后在此之后回显。我正在使用'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, '/');
    } 
});

谢谢,   编

1 个答案:

答案 0 :(得分:1)

bot.on('conversationUpdate', function (message) {
if (message.membersAdded && message.membersAdded.length > 0) {
        message.membersAdded.forEach(function (identity) {
        if (identity.id === message.address.bot.id) {
            bot.beginDialog(message.address, '/');
        }
    });
} 
});