【问题标题】:wait for user input to reply on a facebook bot using Node.js等待用户输入使用 Node.js 在 facebook bot 上回复
【发布时间】:2019-01-23 19:32:06
【问题描述】:

我需要做的是让我的机器人在回复某些内容后等待用户响应,以便他可以回复一个流程结束消息示例:

用户:点击开始按钮

机器人:我可以帮助您完成以下(付款)(选项2)(选项3)

用户:点击付款

Bot:请输入账单号

用户:3922509234

..................

Bot:好的,谢谢,您的付款将被处理

这就是 facebook 应用程序与机器人通信的方式

 app.post('/webhook', function(request, response) {
 var data = request.body;
 if(data.object == 'page'){
  data.entry.forEach(function(pageEntry){
   pageEntry.messaging.forEach(function (messagingEvent) {
       if(messagingEvent.message){
         console.log("MESSAGE---------------------> ",messagingEvent);
       var messageInfo = functions.reciveMessage(messagingEvent);
       console.log("MESSAGEINFO ", messageInfo);
       evaluateMessage(messageInfo);
      }
       if(messagingEvent.postback){
         console.log("POSTBACK--------------------> ",messagingEvent);
        var postBackInfo = functions.recivePostBack(messagingEvent);
        evaluatePostBack(postBackInfo);
       }
     });
   });
  response.sendStatus(200);
 }
});

这是评估用户输入的关键字的地方

function evaluateMessage(messageInfo, type) {
if(functions.isWordContain(messageInfo.senderMessage,'Pagar')||
 functions.isWordContain(messageInfo.senderMessage,'pagar')||
 functions.isWordContain(messageInfo.senderMessage,'Factura')||
 functions.isWordContain(messageInfo.senderMessage,'factura')){
  var message = functions.sendTextMessage(messageInfo.senderId, "Por 
   favor ingresa el numero de tu contrato");
   callSendAPI(message);
    }
   }

messageInfo 检查是否包含关键字,然后将消息返回给用户。

我如何让机器人等待用户输入以便他可以回复

我正在使用带有 express 的 Node.Js,而不是任何机器人构建平台,请帮助

【问题讨论】:

    标签: node.js facebook bots


    【解决方案1】:

    我找到了一种简单的方法,尽管可能有更好的方法来创建全局变量

    var verifier = {
      origin:null,
      state:false
    };
    

    然后当它进入消息验证器并使用某种令牌修改json并将状态设置为true时

    function evaluateMessage(messageInfo) {
    
     if (functions.isWordContain(messageInfo.senderMessage,'Pagar')||
       functions.isWordContain(messageInfo.senderMessage,'pagar')|| 
       functions.isWordContain(messageInfo.senderMessage,'Factura')|| 
       functions.isWordContain(messageInfo.senderMessage,'factura')){
    
     var message = functions.sendTextMessage(messageInfo.senderId, "Por favor 
       ingresa el numero de tu contrato");
    
      verifier.origin = 'pagoFactura';
      verifier.state = true;
    
       callSendAPI(message);
        }
      }
    

    稍后消息进入的位置,我只是询问该状态是否为真,哪个是来源,取决于它的一个或另一个我发送消息

     app.post('/webhook', function(request, response) {
    
      var data = request.body;
      if(data.object == 'page'){
        data.entry.forEach(function(pageEntry){
          pageEntry.messaging.forEach(function (messagingEvent) {
              if(messagingEvent.message){
                if(verifier.state == false){
                  console.log("MESSAGE---------------------> ",messagingEvent);
                  var messageInfo = functions.reciveMessage(messagingEvent);
                  console.log("MESSAGEINFO ", messageInfo);
                  evaluateMessage(messageInfo);
                }else {
                  console.log("verifierOrigin ", verifier.origin);
                  var messageInfo = functions.reciveMessage(messagingEvent);
                  switch (verifier.origin) {
                    case 'pagoFactura':
                    var message = functions.sendTextMessage(messageInfo.senderId, 
                       "Gracias su pago se a procesado exitosamente");
                    callSendAPI(message);
                      break;
                    default:
    
                  }
                }
              }
              if(messagingEvent.postback){
                console.log("POSTBACK--------------------> ",messagingEvent);
                var postBackInfo = functions.recivePostBack(messagingEvent);
                evaluatePostBack(postBackInfo);
              }
           });
         });
         response.sendStatus(200);
       }
     });
    

    如果有人找到更好的方法,请发表评论,我知道这不是最好的方法,这只是为了测试目的

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多