BroadNet
SMPPOperaciones

Formato de las confirmaciones de entrega (DLR) de SMPP

Actualizado el 3 min de lecturaBasado en estándares
Respuesta directa

Una confirmación de entrega (DLR) es un deliver_sm cuyo esm_class lo marca como acuse. short_message transporta un texto de formato fijo —id, sub, dlvrd, submit date, done date, stat, err, Text— definido en el Apéndice B de SMPP v3.4. El campo stat (DELIVRD, EXPIRED, UNDELIV, REJECTD…) es el estado terminal del mensaje.

DiagramaUna sesión SMPP entre su plataforma y BroadNet
Su plataforma (ESME)
BroadNet SMSC
Una conexión TCP/TLS persistente
  1. bind_transceiverAbrir y autenticar la sesión
  2. bind_transceiver_respSesión aceptada
  3. submit_smEnviar un mensaje
  4. submit_sm_respAceptado, ID de mensaje devuelto
  5. deliver_smConfirmación de entrega o mensaje entrante
  6. deliver_sm_respConfirmado
  7. enquire_linkKeepalive en estado de inactividad
§01

El texto de acuse del Apéndice B

Cuando el SMSC informa del resultado de un mensaje, envía un deliver_sm con el bit de acuse activo en esm_class (0x04) y coloca una cadena de texto estructurada en short_message. El formato se define en el Apéndice B de la especificación v3.4. Cada campo es una clave seguida de un valor; el campo id vincula el acuse con el message_id de tu submit_sm_resp.

Un acuse de entrega correcta (contenido de short_message)text
id:0a1b2c3d4e sub:001 dlvrd:001 submit date:2607181432 done date:2607181433 stat:DELIVRD err:000 Text:Your code is 4
§02

Campo por campo

El acuse es compacto pero cada campo importa para la conciliación. Las fechas usan el formato YYMMDDhhmm. sub y dlvrd cuentan los segmentos enviados y entregados. stat es el estado terminal de siete caracteres. err es un código de error específico de la red/SMSC (000 en caso de éxito). Text son los primeros 20 caracteres del mensaje original.

Campos de la confirmación de entrega (Apéndice B)
CampoSignificado
idSMSC message_id del submit_sm original
subNúmero de mensajes cortos enviados (segmentos)
dlvrdNúmero de mensajes cortos entregados
fecha de envíoFecha y hora de envío del mensaje (AAMMDDhhmm)
fecha de finalizaciónCuando el mensaje alcanzó su estado final (AAMMDDhhmm)
statEstado final del mensaje: palabra clave de 7 caracteres (ver más abajo)
errCódigo de error específico de la red/SMSC (000 = ninguno)
TextoLos primeros 20 caracteres del mensaje original
§03

Palabras clave stat y números message_state

La palabra clave stat es el estado terminal legible por humanos; el TLV message_state (0x0427) transporta la misma información como número. Trata DELIVRD como el único éxito inequívoco; EXPIRED, UNDELIV, REJECTD, DELETED y UNKNOWN son fallos terminales. ACCEPTD y ENROUTE no son finales y no deben cerrar un mensaje.

Palabras clave stat ↔ message_state
statmessage_state¿Final?Significado
ENROUTE1NoEn tránsito
DELIVRD2SíEntregado al terminal
EXPIRED3SíPeríodo de validez transcurrido
DELETED4SíMensaje eliminado
UNDELIV5SíNo entregable
ACCEPTD6NoAceptado / leído manualmente
UNKNOWN7SíEstado desconocido
REJECTD8SíRechazado por la red
§04

Analizar con seguridad

Analiza el acuse desde el short_message del deliver_sm, pero correlaciona con el TLV receipted_message_id (0x001E) en lugar de solo el texto id, y normaliza los formatos hexadecimal frente a decimal del identificador. Distingue los acuses intermedios (bit de notificación intermedia de esm_class) de los estados finales, y asigna el código err a una taxonomía normalizada —abonado ausente, terminal ocupado, bloqueado por spam, número no válido— ya que los valores de err brutos varían por ruta. Responde siempre deliver_sm_resp.

Preguntas frecuentes

Preguntas frecuentes

¿Qué significa stat:DELIVRD?

DELIVRD es el estado terminal que significa que el mensaje llegó al terminal del destinatario. Se corresponde con message_state 2 y es el único valor de stat que representa éxito de forma inequívoca.

¿Dónde está el texto de la confirmación de entrega dentro de la PDU?

En el campo short_message de un deliver_sm cuyo esm_class tiene activo el bit de confirmación de entrega (0x04). El texto sigue el formato del Apéndice B: id, sub, dlvrd, submit date, done date, stat, err, Text.

¿Qué es el campo err en un DLR?

err es un código de error específico de la red o del SMSC que da el motivo de una no entrega (000 significa ninguno). Como los valores difieren por ruta, asígnalos a una taxonomía interna normalizada para un informe de calidad coherente.

¿Por qué no coincide mi id de DLR con el message_id de submit_sm_resp?

Suele ser un desajuste de formato: algunos SMSC devuelven el message_id en hexadecimal en submit_sm_resp pero en decimal en el acuse (o viceversa). Normaliza ambos a una representación antes de comparar y prefiere el TLV receipted_message_id.

¿Son finales todas las confirmaciones de entrega?

No. ENROUTE y ACCEPTD son estados intermedios, y algunas redes envían notificaciones intermedias. Cierra un mensaje solo con un stat final como DELIVRD, EXPIRED, UNDELIV, REJECTD, DELETED o UNKNOWN.

Referencias

Especificaciones de la fuente

Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.

BNMantenido por el equipo de ingeniería BroadNet·Mensajería de nivel empresarial desde 2003.
Colócalo en el cable

Desarrollado con un enlace SMPP real y una API REST.

Solicita acceso de prueba con claves de prueba reales: primero envía a tu propio número verificado y, una vez aprobada tu identidad de remitente y las rutas, pasa a producción en más de 200 países.