0
router.post('/sms', (req, res)=>{
    main();   
    res.sendStatus(200);    
})

res.sendStatus(200) responds with a 'OK' text message instantly. How do I delay responding back to the post request by 10 minutes? Is it possible to acknowledge the post request and then send the message later?

I'm trying to use https://www.twilio.com/docs/sms/api/message-resource#create-a-message-resource

sam
  • 39
  • 6

1 Answers1

1

The trick is returning an empty TwiML response on the incoming http call. This means that no message should be send as a response.

<?xml version="1.0" encoding="UTF-8"?>
<Response>
</Response>

In parallel, you need to trigger an API call to manually send another message 10 minutes later. For this, you can use a timeout()

app.post('/sms', (req, res) => {
  const twiml = new MessagingResponse();
  // Don't add a message twiml.message('');
  res.writeHead(200, {'Content-Type': 'text/xml'});
  res.end(twiml.toString());


  setTimeout(function(){
    client.messages.create({
      from: req.body.To,
      to: req.body.From,
      body: "Response in here",
    });
  }, 10 * 60 * 1000);

});

IObert
  • 2,118
  • 1
  • 10
  • 17