Twilio中带有节点的动态响应(等待响应)

时间:2018-12-04 18:33:52

标签: node.js express post twilio

我目前正在尝试构建一个 Twilio SMS 应用,该应用可以使用条件语句基于前一条消息来响应传入的SMS消息。

我的应用收到请求并发布回复。

我希望应用程序等待响应并从下一个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 :(得分:0)

这里是Twilio开发人员的传播者。

当您响应这样的传入消息时,实际上是在返回对传入HTTP请求的响应。响应是XML(TwiML),类似twiml.message的方法将建立响应。您需要返回结果并结束函数以进行回复。因此,您不能等待函数中的下一个响应。

但是,您可以做的是将到目前为止的对话存储在cookie中,然后将其与下一条消息中的下一个webhook一起发送回去。我可以在此答案中描述所有这些内容,但是,我建议在building an SMS conversation with Twilio and Node上使用本教程,该教程将向您介绍如何实现此目的的完整示例。