如何使用 Twilio 发送短信,并等待 phone 的响应以在 NodeJS 中完成请求
How to use Twilio to send SMS, and wait for response from phone to finish request in NodeJS
我知道如何通过 Twilio 将短信发送到请求正文中指定的 phone 号码,但是我需要一种方法让这条路线等待用户回复短信。我需要捕获该消息正文并将其作为响应发送。
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 所建议的那样,最好 return 立即回复用户,比如 "We're waiting for your response",然后通过 websocket 或发送的服务器将用户的浏览器连接到您的服务器事件流。当您在 webhook 端点上收到传入消息时,您可以将信息发送到 websocket 或事件源,并在前端做出反应。
如果有帮助请告诉我。
我知道如何通过 Twilio 将短信发送到请求正文中指定的 phone 号码,但是我需要一种方法让这条路线等待用户回复短信。我需要捕获该消息正文并将其作为响应发送。
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 所建议的那样,最好 return 立即回复用户,比如 "We're waiting for your response",然后通过 websocket 或发送的服务器将用户的浏览器连接到您的服务器事件流。当您在 webhook 端点上收到传入消息时,您可以将信息发送到 websocket 或事件源,并在前端做出反应。
如果有帮助请告诉我。