Ожидание текстового ответа с посыльным ботом Facebook

голоса
1

Я пишу посыльный бот Facebook и пытаюсь сохранить текстовый ответ после обратной передачи. То, что я имею в виду, у меня есть сообщение, которое посылает почту назад и в зависимости от того, какой вариант они выбирают, они могут напечатать сообщение назад и хранить этот текст. Проблема заключается в том, я только хочу, чтобы сохранить этот текст после того, как они выбирают опцию для поста обратно сообщения. Кроме того, текст может быть что угодно, так что я не могу написать, если заявление об этом.

Вот мой код:

app.post('/', function (req, res) {
  messaging_events = req.body.entry[0].messaging;
  for (i = 0; i < messaging_events.length; i++) {

    event = req.body.entry[0].messaging[i];
    sender = event.sender.id;

    if (event.message && event.message.text) {
      text = event.message.text;

      if (text == Start) {
        sendTextMessage(sender, Hey User! I'm a bot);
      }
    }

    else if (event.postback) {
      // These are for chosing availibility
      if (JSON.stringify(event.postback) == '{payload:postback}') {
        setTextMessage(sender, Postback recieved);
      }
    }
}

Все настроено и работает. Но когда постбэк получен я хочу ждать ответа от пользователя до окончания, так что я могу сохранить текст. Как я уже говорил ранее, это может быть что угодно, то есть я не могу просто написать, если заявление, как я сделал с «Start». Я также хочу только сохранить текст после того, как они нажимают на кнопку обратной передачи.

Я думал о добавлении время цикла и ожидания текста, которые будут получены до окончания функции обратной передачи, но не мог понять.

Так как же я жду текста после того, как я отправил сообщение с постбэка?

Любая помощь приветствуется, спасибо!

Задан 10/05/2016 в 15:31
источник пользователем
На других языках...                            


2 ответов

голоса
0

В принципе не существует никакого способа сделать для вашего требования. Так что вы только могли бы сделать, это попросить пользователя ввести текст с некоторыми символами в префиксом, например, с «?» или «#» или что-то другое, что вы можете разобрать.

Ответил 17/05/2016 в 06:34
источник пользователем

голоса
1

Я также пытался в течение длительного времени , чтобы найти способ , чтобы сохранить текст посланного отправителем , используя идентификаторы сообщений и раз сообщение безрезультатно. Единственный метод , который работал для меня был объявить глобальную переменную «состояние» , а затем в конце каждого сообщения , которое я посылаю, я изменить значение переменной «состояния» на что - то вроде «001» или «002». Таким образом , если я хотел бы получить доступ к ответу конкретного сообщения я послал, я бы поставил if (state === '001'). Вот пример:

var state = '000';

// if user sends me 'I want dogs'
    sendTextMessage(sender, "How many dogs?");
    state = '001';

// if user sends me 'I want cats'
    sendTextMessage(sender, "How many cats?);
    state = '002';

/* now if I want to access the user's response to how many cats they want, I simply write in an if statement:
if (state === '002' && /^\d+$/.test(text)) {
    var numberOfCatsWanted = text
}

// in this last part I essentially write 'if the state is '002' and the text contains numbers then a new variable will store the value of the text

Надеюсь, это поможет!

Ответил 13/09/2017 в 00:04
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more