如何使用Twilio发送短信,并等待来自手机的响应,在NodeJS中完成请求

我知道如何通过Twilio发送短信到请求正文中指定的电话号码,但是我需要一种方法来等待用户使用短信作出回应。 我需要捕获邮件正文并将其作为响应发送。

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()); }); 

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

我不知道如果这是可能的,我通过他们的文档,并没有看到这个function呢。 我会build议使用像socket.io一样的networking套接字。 当消息进来时,你可以通过socket将响应传递给用户。

Twilio开发者在这里传道。

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

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

让我知道这是否有帮助。