Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

213
Views
Twilio: retrasar el mensaje SMS mientras reacciona a la llamada

Estoy construyendo una función twilio que reacciona a las llamadas telefónicas entrantes. Después de recibir una llamada, la función debe enviar un SMS a la persona que llama. Sin embargo, me gustaría que el SMS se retrase un par de minutos. Actualmente, mi función se ve así:

 exports.handler = function (context, event, callback) { // Create a new voice response object const client = context.getTwilioClient(); const client_number = event.From; const twilio_number = +xxxx; client.messages.create({ // Send SMS to: client_number, from: twilio_number, body: "Hello on SMS" }).then(() => { // When request to send SMS is complete, deal with the caller let twiml = new Twilio.twiml.VoiceResponse(); twiml.say(""); // respond to voice caller callback(null, twiml); }) };

Ahora mismo se envía el SMS y luego se envía la respuesta a la llamada. No estoy seguro de cómo retrasar el mensaje. He estado leyendo esto pero no funciona porque no puedo atender la llamada primero y luego enviar el mensaje. https://www.twilio.com/docs/runtime/quickstart/add-delay

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Esto no funciona con las funciones de Twilio, verifique la respuesta de @philnash

Primero debe devolver la llamada para responder la llamada y luego, en una promesa retrasada, enviar el SMS

 exports.handler = function (context, event, callback) { const delay = (delayMS) => new Promise((res) => { setTimeout(res, delayMS) }) // Create a new voice response object const client = context.getTwilioClient(); const client_number = event.From; const twilio_number = +xxxx; let twiml = new Twilio.twiml.VoiceResponse(); twiml.say(""); // respond to voice caller callback(null, twiml); return ( delay(10000) .then(() => client.messages.create({ // Send SMS to: client_number, from: twilio_number, body: "Hello on SMS" }) ) .then(() => console.log("SMS sent")) ) }

Espero que esto ayude.

Nota: el retraso es una función de utilidad en la que pasa la cantidad de milisegundos que desea esperar.

about 4 years ago · Juan Pablo Isaza Report

0

Desarrollador evangelista de Twilio aquí.

Esto no es algo que pueda hacer con solo una función de Twilio. Si bien la respuesta de aLittleSalty funcionará en una situación en la que su aplicación y el ciclo de eventos continúan ejecutándose, como en una aplicación Express que ejecuta, pero en una función de Twilio, una vez que llama al método de callback de llamada, el ciclo de eventos finaliza, por lo que la demora se cancelará.

Del mismo modo, el tiempo de ejecución de la función Twilio está limitado a 10 segundos, por lo que no puede retrasar un mensaje un par de minutos, incluso si lo anterior funciona.

Una idea podría ser que envíe el mensaje una vez que se haya completado la llamada. Su código de ejemplo solo incluye un <Say> , por lo que trabajaré con eso, pero podría hacerlo de otras maneras si la llamada continúa de manera diferente.

Primero, actualice su función inicial para devolver solo el TwiML, pero agregue un <Redirect> después de <Say> para que una vez que se complete el mensaje, Twilio envíe un nuevo webhook.

 exports.handler = function (context, event, callback) { let twiml = new Twilio.twiml.VoiceResponse(); twiml.say(""); // respond to voice caller twiml.redirect("/after_say"); callback(null, twiml); };

Luego cree otra función en la ruta /after_say que envíe el mensaje y cuelgue la llamada.

 exports.handler = function (context, event, callback) { // Create a new voice response object const client = context.getTwilioClient(); const client_number = event.From; const twilio_number = +xxxx; let twiml = new Twilio.twiml.VoiceResponse(); twiml.hangup(); client.messages.create({ // Send SMS to: client_number, from: twilio_number, body: "Hello on SMS" }).then(() => { callback(null, twiml); }).catch(error => { console.error(error); callback(null, twiml); }); }

Eso todavía no le dará un par de minutos entre la llamada entrante y el mensaje enviado, pero con suerte se enviará una vez que se complete la llamada y sea una mejor experiencia.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!