Twilio 如何使用sms挂钩延迟用户消息的响应?
我的目标是在回答用户消息时延迟1-5分钟。 但在文档中,我看不到任何设置超时的功能。 这是我的密码:Twilio 如何使用sms挂钩延迟用户消息的响应?,twilio,twilio-api,Twilio,Twilio Api,我的目标是在回答用户消息时延迟1-5分钟。 但在文档中,我看不到任何设置超时的功能。 这是我的密码: app.post('/sms', async (req, res) => { const twiml = new MessagingResponse(); const msg = req.body.Body; const toroMsg = await toroProcess(msg); twiml.message(toroMsg); res.writeHead(200
app.post('/sms', async (req, res) => {
const twiml = new MessagingResponse();
const msg = req.body.Body;
const toroMsg = await toroProcess(msg);
twiml.message(toroMsg);
res.writeHead(200, {'Content-Type': 'text/xml'});
res.end(twiml.toString());
});
这里是Twilio开发者福音传道者 没有办法延迟对Twilio内消息的响应 相反,您需要控制应用程序中的延迟,以及以后的延迟 看起来您在问题中使用了Express和Node。最简单的方法是使用如下
setTimeout
:
const twilioClient = require('twilio')(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
app.post('/sms', async (req, res) => {
const msg = req.body.Body;
const toroMsg = await toroProcess(msg);
setTimeout(() => {
twilioClient.messages.create({
to: req.body.From,
from: req.body.To,
body: toroMsg
})
}, 60 * 1000)
const twiml = new MessagingResponse();
res.writeHead(200, {'Content-Type': 'text/xml'});
res.end(twiml.toString());
});
因为这依赖于当前正在运行的进程,所以您可能希望使用更具弹性的方法,在进程重新启动或崩溃时不会丢失消息。类似于或
让我知道这是否有帮助。谢谢,在您的示例中,您将向用户发送两条消息,
res.end(twiml.toString())代码>作为webhook响应一次,在setTimeout中作为第二个响应。有没有办法跳过它?我实际上在初始响应中返回空TwiML,这将给Twilio一个初始响应,它只说“什么都不做”。然后在超时时发送消息。Hi@philnash,我看到您使用不同的方法发送这两条消息,其中在setTimeout中使用API,另一条使用twiml,您对此有何顾虑?有什么区别?Thanks@Windo当您使用TwiML进行响应时,Twilio将对响应作出响应,并立即执行TwiML中的说明。在这种情况下,问题是推迟答复。您可以延迟对请求的响应,但Twilio将在15秒后超时。因此,在这种情况下,最好使用RESTAPI进行响应。在代码中,我仍然使用TwiML进行响应,但它是一个空的
,所以它什么也不做。用API或TwiML发送消息作为响应并没有什么区别,这取决于您的偏好或用例。我明白了,这是因为15秒的超时。如果用户回复RESTAPI消息,它是否仍在同一会话中?谢谢。