如何使用Twilio发送短信,并等待来自电话的响应,以完成NodeJS中的请求
问题描述:
我知道如何通过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());
});
我一直在寻找一种方法来完成这一整天都没有成功。我感谢您的帮助!
答
我不知道这是否可能,但我通过他们的文档,并没有看到该功能呢。我会建议使用像socket.io这样的网络套接字。当消息进入时,您可以将响应通过套接字传递给用户。
答
Twilio开发人员在这里传播。
虽然这在技术上是可行的,但我强烈建议不要这样做。你提到你可能会等待10-20秒,但用户比移动网络更易变质。所以得到回应可能需要更长的时间甚至永远不会发生。然后,你会留下长时间连接到你的服务器,等待可能永远不会到来的响应。
正如Hammer所建议的那样,最好马上向用户返回一个响应,比如说“我们正在等待您的响应”,然后通过websocket或服务器发送事件将该用户的浏览器连接到您的服务器流。当您在webhook端点上收到传入消息时,您可以将信息发送到WebSocket或事件源,并对前端中的信息做出反应。
让我知道这是否有帮助。