Ogave

Inicio / Recibos de entrega SMPP

Recibos de entrega SMPP: Formato, valores de stat, códigos err y tiempos

Un recibo de entrega (DLR) te dice qué pasó con un mensaje después de que el gateway lo aceptara. En SMPP llega como un deliver_sm del servidor, con un texto de formato estándar y, en la mayoría de servidores, algunos TLV.

Cómo pedir el recibo

Pon registered_delivery a 1 en submit_sm para recibir un recibo por cada estado final (éxito y fallo). Los recibos llegan por un bind receiver o transceiver; con solo un bind transmitter nunca llegan.

El formato del recibo

El recibo es un deliver_sm con esm_class 0x04 y un short_message como este (SMPP 3.4, apéndice B):

id:2611041903 sub:001 dlvrd:001 submit date:2611041903 done date:2611041904 stat:DELIVRD err:000 text:Your code is 4821

CampoSignificado
idEl ID del mensaje que devolvió el servidor en submit_sm_resp.
subNúmero de mensajes enviados (normalmente 001; suele ser fijo).
dlvrdNúmero de entregados (001 = entregado, 000 = no).
submit dateCuándo se envió el mensaje, AAMMDDhhmm, con el reloj de la red.
done dateCuándo llegó a su estado final, mismo formato.
statEl estado final (o intermedio), ver la tabla siguiente.
errCódigo de error de 3 dígitos. 000 = sin error. Su significado depende de la red o del fabricante.
textLos primeros caracteres del mensaje (a menudo 20).

Valores de stat

statSignificadoFinal
ENROUTEEn camino (intermedio)no
DELIVRDEntregado al teléfonosí
EXPIREDNo entregado antes de que venciera su validez (teléfono apagado o sin cobertura)sí
DELETEDBorrado por la red antes de entregarsesí
UNDELIVNo entregable (número no válido, bloqueado o inalcanzable)sí
ACCEPTDAceptado por la red (intermedio, o leído en nombre del abonado)no
UNKNOWNLa red no informó de un estado finalsí
REJECTDRechazado por la red (ruta, contenido o remitente)sí

TLV del recibo

La mayoría de servidores envían también receipted_message_id (0x001E: el ID del mensaje, sin tener que leer el texto), message_state (0x0427: 1 ENROUTE, 2 DELIVERED, 3 EXPIRED, 4 DELETED, 5 UNDELIVERABLE, 6 ACCEPTED, 7 UNKNOWN, 8 REJECTED) y network_error_code (0x0423: 3 octetos, un tipo de red — 1 ANSI-136, 2 IS-95, 3 GSM — y un error de 2 octetos).

Errores de red GSM habituales

Cuando network_error_code es de tipo GSM, el error suele ser un error MAP de 3GPP TS 29.002. Estos son los más frecuentes:

CódigoSignificado
1Abonado desconocido (el número no existe)
5Abonado no identificado
6Abonado ausente (SM)
9Abonado no permitido
11Teleservicio no aprovisionado (la línea no puede recibir SMS)
12Equipo no permitido
13Llamada bloqueada
21Función no soportada
27Abonado ausente (teléfono apagado o sin cobertura)
31Abonado ocupado para SMS MT
32Fallo de entrega del SM (memoria llena o error del teléfono)
33Lista de mensajes en espera llena
34Fallo del sistema
35Faltan datos
36Valor de datos inesperado

Cuánto tarda un recibo

La mayoría llegan en segundos. Si el teléfono está apagado o sin cobertura, la red guarda el mensaje hasta que vuelve o vence el periodo de validez; entonces el recibo dice EXPIRED. Sin periodo de validez se aplica el de la red (a menudo de 24 a 72 horas).

Las fechas del recibo las escribe la red con su propio reloj y zona horaria: compáralas entre sí, no con la hora de tu servidor.

Un recibo no prueba la lectura

DELIVRD significa que el teléfono confirmó el mensaje, no que la persona lo leyera. Algunas rutas envían DELIVRD sin confirmación real del teléfono; una plataforma que muestre el código err y la ruta ayuda a detectarlo.

Preguntas frecuentes

¿Por qué no recibo recibos de entrega?

Comprueba que registered_delivery sea 1, que tengas abierto un bind receiver o transceiver y que relacionas los recibos por receipted_message_id o por el id del texto.

¿Qué significa err:000?

Sin error. Cualquier otro valor de err es propio de la red o del fabricante; junto con stat explica por qué falló un mensaje.

¿Puede un mensaje recibir más de un recibo?

Sí: algunas rutas envían un recibo intermedio (ENROUTE o ACCEPTD) antes del final. Toma como resultado solo los estados finales.

Sigue leyendo

Habla con un equipo técnico

Somos un equipo técnico. Hablarás con alguien que entiende SMPP, enrutamiento wholesale e interconexiones carrier. Propuesta técnica en menos de 24 horas.

Email técnico: Email address