BroadNet
SMPPErrores

Códigos de error command_status de SMPP

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

command_status es el campo de 4 bytes de la cabecera que informa del resultado de una operación. En una solicitud es 0 (ESME_ROK); en una respuesta transporta un código de error ESME_R*. 0x00000000 es éxito; los valores distintos de cero indican fallos concretos como contraseña no válida, limitación o cola de mensajes llena.

§01

Cómo funciona command_status

Toda PDU de respuesta refleja el sequence_number de la solicitud y ajusta command_status al resultado. ESME_ROK (0) significa éxito. Cualquier otro valor es un error cuyo código numérico se corresponde con una constante ESME_R* con nombre en la especificación. Los códigos 0x00000100–0x000003FF se reservan para extensiones de SMPP y 0x00000400–0x000004FF para errores específicos del fabricante del SMSC, así que gestiona siempre con elegancia los códigos desconocidos.

§02

Los códigos que verás de verdad

Un pequeño conjunto de códigos cubre la mayor parte del tratamiento real. Agrúpalos por respuesta: reintentar tras espera (limitación, cola llena, error de sistema), corregir la solicitud (dirección, TON/NPI, data_coding o longitud de mensaje no válidos) y fatal para la sesión (contraseña o system id no válidos, fallo de bind).

Códigos de command_status más frecuentes
ValorNombreSignificadoReacción típica
0x00000000ESME_ROKNo hay errorÉxito
0x00000001ESME_RINVMSGLENLongitud de mensaje no válidaCorregir la carga útil/segmento
0x00000005ESME_RALYBNDBind ya establecidoNo volver a hacer bind; reutilizar la sesión
0x0000000AESME_RINVSRCADRDirección de origen no válidaCorregir remitente / TON / NPI
0x0000000BESME_RINVDSTADRDirección de destino no válidaCorregir MSISDN del destinatario
0x0000000DESME_RBINDFAILFallo del bindAplicar backoff, verificar las credenciales
0x0000000EESME_RINVPASWDContraseña no válidaFatal: corregir credenciales
0x0000000FESME_RINVSYSIDID de sistema no válidoFatal: corregir credenciales
0x00000014ESME_RMSGQFULCola de mensajes llenaAplicar backoff y reintentar
0x00000043ESME_RINVESMCLASSesm_class no válidoCorregir bits de esm_class
0x00000058ESME_RTHROTTLEDLimitación de tasa: tasa superadaReducir la velocidad, backoff con jitter
0x00000062ESME_RINVEXPIRYvalidity_period no válidoCorregir el formato de validez
0x000000FEESME_RDELIVERYFAILUREError de entrega (data_sm)Inspeccionar/reintentar según la política
0x000000FFESME_RUNKNOWNERRError desconocidoRegistrar, alertar, reintentar con precaución
§03

Rangos reservados y de fabricante

No todos los códigos que recibas están en la especificación básica. La especificación reserva 0x00000100–0x000003FF para uso futuro de SMPP y 0x00000400–0x000004FF para códigos específicos del SMSC, así que tu proveedor puede devolver un valor que solo explique su documentación. Asigna los códigos específicos del proveedor a una taxonomía interna normalizada (número no válido, bloqueado, limitado, fallo temporal) para que la calidad entre rutas siga siendo comparable.

Rangos reservados de command_status
RangoReservado para
0x00000100 – 0x000003FFExtensiones del protocolo SMPP
0x00000400 – 0x000004FFErrores específicos del proveedor SMSC
0x00000500 – 0xFFFFFFFFReservado
Preguntas frecuentes

Preguntas frecuentes

¿Qué significa ESME_RTHROTTLED y cómo debo gestionarlo?

ESME_RTHROTTLED (0x00000058) significa que superaste tu tasa de mensajes permitida. Deja de aumentar la carga, pausa los envíos y aplica una espera con variación aleatoria antes de reintentar. Insistir a la misma tasa arriesga que el proveedor cierre el bind.

¿Es recuperable ESME_RINVPASWD?

No, no en tiempo de ejecución. ESME_RINVPASWD (0x0000000E) indica credenciales erróneas. No repitas el bind en bucle; corrige la configuración de system_id/password y reconecta. Bind fallidos repetidos pueden provocar el bloqueo de la IP.

¿Cuál es la diferencia entre ESME_RMSGQFUL y ESME_RTHROTTLED?

ESME_RMSGQFUL (0x00000014) significa que la cola del SMSC está temporalmente llena; ESME_RTHROTTLED (0x00000058) significa que superaste tu límite de tasa. Ambos exigen espera, pero la limitación tiene que ver con tu TPS y la cola llena con la capacidad del SMSC.

Recibí un código de error que no está en la especificación, ¿por qué?

SMPP reserva 0x400–0x4FF para códigos específicos del fabricante del SMSC, así que tu proveedor puede devolver un valor documentado solo por él. Consulta la tabla de errores del proveedor y asígnalo a tu taxonomía interna.

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.