Saltar al contenido
OmniChannels.ai

API y SMPP

¿Cómo recibir los informes de entrega (DLR) con un webhook?

Actualizado

Respuesta breve

Para recibir los informes de entrega (DLR) con un webhook, exponga un endpoint HTTPS que acepte peticiones POST y registre su URL en su proveedor de mensajería. Guarde cada evento, responda rápido con un código 2xx y procéselo de forma asíncrona. Asocie los eventos a sus registros por ID de mensaje, elimine duplicados y no permita que un estado tardío sobrescriba uno final.

Configurar el endpoint

Durante el desarrollo, un túnel da a un servidor local una URL HTTPS pública.

  1. Exponga un endpoint HTTPS que acepte peticiones POST con cuerpo JSON.
  2. Facilite la URL a su proveedor para que la configure en la cuenta o subcuenta correcta.
  3. Envíe un mensaje de prueba a su propio número y registre el cuerpo bruto del evento.
  4. Mapee los campos que necesita a partir de eventos reales, no de nombres de campo supuestos.
  5. Conserve payloads de ejemplo como datos de prueba para cada canal que use.

¿Qué estados recibirá?

Los proveedores traducen los informes de entrega de operadores y canales a sus propios nombres de estado. Este conjunto normalizado es el que usa OmniChannels.ai para SMS, WhatsApp y otros canales.

EstadoSignificado¿Final?
SUBMITTEDAceptado y en colaNo
SENTEntregado al operador o al canalNo
DELIVEREDConfirmado en el dispositivoNormalmente; puede seguir READ
READAbierto, en canales que informan de la lecturaSí
FAILEDNo entregado, con motivo cuando está disponibleSí
REJECTEDRechazado, por ejemplo por un ID de remitente (sender ID) sin registrarSí

Haga el handler fiable

  • Guarde el cuerpo bruto y después devuelva 2xx. Si falla el guardado, devuelva 5xx para que el evento se reintente.
  • Haga el trabajo real en una cola o un worker, no antes de responder.
  • Elimine duplicados por ID de mensaje; el mismo estado puede llegar dos veces.
  • Jerarquice los estados para que un SENT tardío nunca sobrescriba DELIVERED.
  • Acepte los valores de estado que no reconozca en lugar de fallar.
  • No reenvíe nunca un mensaje desde el handler del webhook.

Protéjalo y recupere los informes perdidos

Acepte solo HTTPS, use una ruta larga e imposible de adivinar, valide la estructura del cuerpo y confirme el estado con una consulta antes de acciones irreversibles como un reembolso. Si su endpoint estuvo caído, pida al proveedor que reenvíe los informes de entrega de ese periodo o consulte los estados en sus endpoints de informes.

Por SMPP, los informes de entrega llegan como deliver_sm en el bind en lugar de por webhook. Algunos operadores los devuelven tarde o nunca, así que trátelos como un indicio sólido, no como prueba de lectura.

Fuentes oficiales