Как правильно связать следующий постбэк между многими постбэками в фейсбуке? - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть много функций обратной передачи в коде app.POST.
Но я хочу, чтобы бот следовал по порядку.
Как мне сделать этот заказ?
Это мой полный код.

app.post('/webhook/', function (req, res) {
  let messaging_events = req.body.entry[0].messaging
  for (let i = 0; i < messaging_events.length; i++) {
    let event = req.body.entry[0].messaging[i]
    let sender = event.sender.id
    if (event.message && event.message.text) {
      let text = event.message.text
      if (text === 'hello') {
        sendGenericMessage(sender)
      }
    }

    if (event.postback) {
      let text = JSON.stringify(event.postback)
        sendTextMessage(sender, "write city name")
    }

    if (event.message && event.message.text) {
      let text = event.message.text
      if (text === 'Castillo de la Alameda') {
        information().then((bd) => {
          var bd2 = bd;
          var model = [];
          for (i = 0; i < Object.keys(bd2).length; i++) {
              model[i] = bd2[i].title;
          }

          if (model.includes(text)) {
             sendButtonMessage(sender);

            if (event.postback) {
               let text = JSON.stringify(event.postback);
               var cc = model.indexOf(text);
               var hour = bd2[cc].organization.schedule;
               sendTextMessage(sender, `${hour}`);
            }
          }
        });
      }
    }
  }
  res.sendStatus(200);
})



Это первое сообщение от GenericMessage

 if (text === 'hello') {
            sendGenericMessage(sender)
          }
        }
    if (event.postback) {
      let text = JSON.stringify(event.postback)
        sendTextMessage(sender, "write city name")
    }



А потом я хочучтобы ButtonMessage следовал за его обратной передачей.
Поэтому я помещаю эту обратную передачу внутри ButtonMessage.
Но когда я нажимаю обратную передачу Button, она читает обратную передачу Generic.
Как я могу решить эту проблему?

             if (model.includes(text)) {
                 sendButtonMessage(sender);

                if (event.postback) {
                   let text = JSON.stringify(event.postback);
                   var cc = model.indexOf(text);
                   var hour = bd2[cc].organization.schedule;
                   sendTextMessage(sender, `${hour}`);
                }
              }



И это моя функция сообщения кнопки.
Общая функция та же, что и у функции Buttonmessage

function sendButtonMessage(sender) {
    let messageData = {
      "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
        "text":"What do you want to do next?",
        "buttons":[{
            "type": "postback",
            "title": "Postback",
            "payload": "Payload for second element in a generic bubble"
          }
        ]
      }
    }
  };
  request({
    url: 'https://graph.facebook.com/v2.6/me/messages',
    qs: { access_token: PAGE_ACCESS_TOKEN },
    method: 'POST',
    json: {
      recipient: {id:sender},
      message: messageData,
    }
  }, function(error, response, body) {
    if (error) {
      console.log('Error sending messages: ', error)
    } else if (response.body.error) {
      console.log('Error: ', response.body.error)
    }
  })
}
...