Динамический ответ в Twilio с узлом (ожидание ответа) - PullRequest
0 голосов
/ 04 декабря 2018

В настоящее время я пытаюсь создать приложение Twilio SMS , которое отвечает на входящие смс-сообщения на основе их предыдущего сообщения с использованием условных операторов.

Мое приложение получает запрос и публикует ответ.

Я хочу, чтобы приложение ожидало ответа и продолжало выполнение следующего оператора if, но вместо этого оно просто запускается сверху и проверяетсначала if if снова и снова.

Цель состоит в том, чтобы я хотел относиться к нему как к чату и реальному разговору и хранить данные и контекст из предыдущего сообщения, а не только сообщение до.

Пример:

app.post('/sms', (req,res) => {
const twiml = new messageResponse();
let textData = req.body.Body // Incoming SMS Body

 if(textData === "Hello") {
     twiml.message('Hello! Thanks for reaching out');
 };

 //Step 2: wait for next incoming message
if(textData === "Order Status") {
    twiml.message(`Your order status is ${order.status}`)
}

Я хочу, чтобы приложение ожидало ответа и получило ответ с шага 2, а не снова запускало весь пост?

ЧтоЯ пробовал - я пытался создавать функции и запускать эти функции с помощью операторов If, возвращающих значения.Пример:

app.post('/sms', (req,res) => {
    const twiml = new messageResponse();
    let textData = req.body.Body // Incoming SMS Body
    let userGreet = false

    let replyBack = () => {
        if (textData.includes('hello')) {
            return userGreet = true;
        } 
    }

    userGreet = replyBackBack()

     if(userGreet) {
         twiml.message('Hello! Thanks for reaching out');
     };

     //Step 2: wait for next incoming message
    if(textData === "Order Status") {
        twiml.message(`Your order status is ${order.status}`)
    }

}

Возможно ли это вообще?Все помощь и предложения приветствуются

1 Ответ

0 голосов
/ 05 декабря 2018

Twanio developer evangelist здесь.

Когда вы отвечаете на подобные сообщения, вы фактически возвращаете ответ на входящий HTTP-запрос.Ответом является XML ( TwiML ), и такие методы, как twiml.message, создают этот ответ.Вам необходимо вернуть результат и завершить функцию, чтобы получить ответ.Поэтому вы не можете дождаться следующего ответа внутри функции.

Что вы можете сделать, так это сохранить сохраненный вами разговор в файле cookie, который затем отправляется обратно со следующим веб-крюком изследующее сообщение.Я мог бы описать все это в этом ответе, но вместо этого я рекомендую этот урок по построению SMS-разговора с Twilio и Node , который проведет вас через полный пример того, как этого добиться.

...