代码之家  ›  专栏  ›  技术社区  ›  Ashy Ashcsi

如何使用bot builder sdk在键入栏中添加“开始”按钮节点.js

  •  1
  • Ashy Ashcsi  · 技术社区  · 6 年前

    我正在使用bot builder sdk节点.js创建聊天机器人。也连接到了facebook频道。我使用以下代码向用户致意:

    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) => {
        }
    ]);
    

    enter image description here

    有没有一种方法可以使用bot builder sdk for节点.js?

    谢谢

    2 回复  |  直到 6 年前
        1
  •  1
  •   Master Chief    6 年前

    虽然人们当然可以添加一个按钮来启动机器人的任何活动,但这将限制机器人程序的潜力,只有一个可自定义的频道,即WebChat。

    弗斯特

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

    这将使机器人发送消息 对于用户,如果它确定这是第一次访问。这将给访问者足够的提示来发送机器人 您好! 通过打字。虽然他可以输入他想要的任何内容,但这将导致调用第一个配置的对话框,在本例中,这将是您发布的对话框。

    如果您的bot从未遇到过此访问者,您可以将某些对话框标记为自动调用。下面是示例代码。。。

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

    这里我们将bot创建和对话框注册分为两个步骤。在注册 第一次运行 对话框,我们提供了一个触发器操作,如果访问者是新的,则触发此对话框。

    这两种方法都不需要添加一些额外的按钮,而是由机器人来指导他发送一些消息,然后这些消息将启动第一个对话框,或者直接启动一些对话框。

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

        2
  •  1
  •   Ashy Ashcsi    6 年前

    我尝试了上述选项,但它们似乎不适用于facebook messenger。但我找到了一个解决方案,将“开始”按钮添加到messenger的输入栏中。为此,我们需要使用Facebook图形API,而不是bot builder sdk。

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

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

    谢谢大家的帮助!!