Twilio 如何使用sms挂钩延迟用户消息的响应?

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

我的目标是在回答用户消息时延迟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, {'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消息,它是否仍在同一会话中?谢谢。