Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

208
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda