【问题标题】:bot framework conversationUpdate event seems to fire twice机器人框架对话更新事件似乎触发了两次
【发布时间】:2018-02-25 17:53:45
【问题描述】:

我已经看了好几个小时了,但我没有得到任何结果......

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

谢谢, 埃德

【问题讨论】:

标签: node.js botframework


【解决方案1】:

它会触发两次,一次用于用户加入对话,另一次用于机器人加入对话,因此您应该检查何时要触发操作。在下一个示例中,它会在 bot 加入对话时触发。

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);
        }
    });
}

});

【讨论】:

  • 太棒了,效果很好!仅供有类似用例的任何人参考,我最终得到的代码发布在下面:
【解决方案2】:
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, '/');
        }
    });
} 
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2014-08-02
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    相关资源
    最近更新 更多