2017-08-13 63 views
1

我知道如何通过Twilio发送SMS到请求正文中指定的电话号码,但是我需要一种方法让此路由等待用户用短信回复。我需要捕获该消息体并将其作为响应发送。如何使用Twilio发送短信,并等待来自电话的响应,以完成NodeJS中的请求

router.post('/', function(req, res){ 

    var customerNumber = req.body.mobileNumber; 
    var twilioNumber = process.env.TWILIO_NUMBER; 

    client.messages 
     .create({ 
      to: '+1' + customerNumber, 
      from: twilioNumber, 
      body: 'message to user', 
      provideFeedback: 'true', 
     }, function(err, message){ 
      if(err) res.send('message err: ' + err); 
      else{ 
      // wait 10-20 seconds for user to respond 
      res.send("A response from the user"); 
      } 
     })  
}); 

我也知道如何倾听与回应Twilio,但这并不工作,因为我需要上述途径与信息,我从以下途径获取用户响应。

router.post('/sms-response', function(req, res){ 
    var twilio = require('twilio'); 
    var twiml = new twilio.twiml.MessagingResponse(); 
    twiml.message('thanks for your feedback'); 
    res.writeHead(200, {'Content-Type':'text/xml'}); 
    res.end(twiml.toString()); 
}); 

我一直在寻找一种方法来完成这一整天都没有成功。我感谢您的帮助!

回答

1

我不知道这是否可能,但我通过他们的文档,并没有看到该功能呢。我会建议使用像socket.io这样的网络套接字。当消息进入时,您可以将响应通过套接字传递给用户。

1

Twilio开发人员在这里传播。

虽然这在技术上是可行的,但我强烈建议不要这样做。你提到你可能会等待10-20秒,但用户比移动网络更易变质。所以得到回应可能需要更长的时间甚至永远不会发生。然后,你会留下长时间连接到你的服务器,等待可能永远不会到来的响应。

正如Hammer所建议的那样,最好马上向用户返回一个响应,比如说“我们正在等待您的响应”,然后通过websocket或服务器发送事件将该用户的浏览器连接到您的服务器流。当您在webhook端点上收到传入消息时,您可以将信息发送到WebSocket或事件源,并对前端中的信息做出反应。

让我知道这是否有帮助。