首页 文章

如何使用bot builder sdk为node.js在输入栏中添加“入门”按钮

提问于
浏览
1

我正在使用bot builder sdk为node.js创建一个聊天机器人 . 还连接到Facebook Channels . 我使用以下代码来问候用户:

var bot = new builder.UniversalBot(connector, [
    (session, result, next) => {

        let text = '';
        switch(session.message.address.channelId) {
            case 'facebook':
                text = 'Hi ' + session.message.user.name + ' !';
                break;    
            default:
                text = 'Hi !';
        }        

        session.sendTyping();
        session.say(text);
        next();
    },
    (session, say) => {
    }
]);

上面的代码工作正常,但我想在输入栏中添加“Get Started”按钮来调用上面的代码 . 请注意,此按钮仅出现一次 . 请在下面找到打字栏的图片:

enter image description here

有没有办法使用bot builder sdk为node.js实现这一目的?

谢谢

2 回答

  • 1

    虽然可以添加一个按钮来启动机器人的任何活动,但这将限制机器人只有一个可定制的通道,即WebChat .

    我认为有更好的两种替代方法可以获得所需的功能,这些功能可用于多种渠道 .

    First

    我建议添加 conversation update 事件 . 代码在 botbuilder's 中间件中 . 以下是文档中的示例代码 .

    bot.on('conversationUpdate', function (message) {
    if (message.membersAdded && message.membersAdded.length > 0) {
        // Say hello
        var txt = "Send me a Hi";
        var reply = new builder.Message()
                .address(message.address)
                .text(txt);
        bot.send(reply);
    });
    

    这将做的是让机器人发送消息向我发送一个Hi给用户,如果它确定这是第一次访问者 . 这将为访问者提供足够的提示,通过键入来发送机器人Hi . 虽然他可以输入他想要的任何内容,但是这将导致调用配置的第一个对话框,在这种情况下将是您发布的对话框 .

    Second

    如果您的机器人从未遇到此访问者,您可以标记一些自动调用的对话框 . 这是示例代码......

    var bot = new builder.UniversalBot(connector);
    bot.dialog('firstRun', function (session) {    
        session.userData.firstRun = true;
        session.send("Hello...").endDialog();
    }).triggerAction({
        onFindAction: function (context, callback) {
            // Only trigger if we've never seen user before
            if (!context.userData.firstRun) {
                // Return a score of 1.1 to ensure the first run dialog wins
                callback(null, 1.1);
            } else {
                callback(null, 0.0);
            }
        }
    });
    

    在这里,我们分两步拆分机器人创建和对话框注册 . 在注册firstRun对话框时,我们为它提供了triggerAction,如果访问者是新的,则触发此对话框 .

    这两种方法都不使用添加一些额外的按钮,并且由机器人来教育他发送一些消息,这反过来将启动第一个对话框或直接启动一些对话框 .

    有关conversationEvent的更多信息,请参阅此page

  • 1

    我尝试了上面的选项,但他们似乎没有为facebook messenger工作 . 但我找到了一个解决方案,将“入门”按钮添加到信使的输入栏中 . 为此我们需要使用Facebook Graph API而不是bot builder sdk .

    https://graph.facebook.com/v2.6/me/messenger_profile?access_token=<PAGE_ACCESS_TOKEN>
    
    { 
      "get_started":{
        "payload":"Get Started"
      }
    }
    

    上面的API调用将为您添加按钮以启动对话 .

    谢谢大家的帮助!!

相关问题