BroadNet
Referencia SMPP v3.4 · command_status

Códigos de error SMPP.

Cada valor command_status definido en la especificación SMPP v3.4 — código hexadecimal, nombre simbólico, significado en lenguaje sencillo y causa probable y solución. Busque por código o nombre para depurar rápidamente un fallo de bind o submit_sm.

48 de 48 códigos
SMPP v3.4 command_status error codes
HexadecimalNombre simbólicoSignificado y causa probable / solución
0x00000000ESME_ROKSin errores. La PDU fue aceptada. En submit_sm, esto solo significa que el SMSC aceptó el mensaje para su procesamiento, no que fue entregado — siga la entrega mediante la confirmación de entrega (DLR) en deliver_sm.
0x00000001ESME_RINVMSGLENLongitud de mensaje no válida. short_message o message_payload es demasiado largo o está vacío para la codificación usada. Segmente el contenido largo o use el TLV message_payload; verifique que data_coding coincida con la longitud en bytes.
0x00000002ESME_RINVCMDLENLongitud de comando no válida. El command_length de la cabecera de la PDU no coincide con los bytes realmente enviados. Casi siempre un error del codificador de PDU del cliente o un error de límite de trama/búfer.
0x00000003ESME_RINVCMDIDID de comando no válido. El command_id es desconocido o no compatible con el SMSC. Compruebe que envía una operación válida y la versión correcta de SMPP.
0x00000004ESME_RINVBNDSTSEstado BIND incorrecto para el comando dado. Operación no permitida en el modo de bind actual — por ejemplo, submit_sm en un bind receiver, o una solicitud antes de completar el bind. Enlace primero como transmitter o transceiver.
0x00000005ESME_RALYBNDEl ESME ya está en estado enlazado. Se emitió un segundo bind en una sesión ya enlazada. Reutilice la sesión existente o haga unbind antes de volver a enlazar.
0x00000006ESME_RINVPRTFLGIndicador de prioridad no válido. priority_flag está fuera del rango 0–3 que acepta el SMSC. Use un valor admitido (normalmente 0).
0x00000007ESME_RINVREGDLVFLGIndicador de entrega registrada no válido. registered_delivery contiene un valor no admitido. Use una máscara de bits que el SMSC admita (p. ej., 0x01 para solicitar un DLR final).
0x00000008ESME_RSYSERRError del sistema. Fallo genérico del lado del SMSC que impide el procesamiento. Transitorio: reintente con backoff; si persiste, contacte al proveedor.
0x0000000AESME_RINVSRCADRDirección de origen no válida. source_addr (el ID de remitente) está malformado o no permitido — longitud incorrecta, caracteres ilegales, o un remitente alfanumérico no registrado. Registre o autorice el remitente.
0x0000000BESME_RINVDSTADRDirección de destino no válida. destination_addr está malformada o no es enrutable — formato de MSISDN incorrecto, código de país ausente, o rango bloqueado. Normalice al formato E.164.
0x0000000CESME_RINVMSGIDID de mensaje no válido. El message_id de un query_sm, cancel_sm o replace_sm no coincide con ningún mensaje conocido. Use el ID exacto devuelto en submit_sm_resp.
0x0000000DESME_RBINDFAILFallo de bind. La solicitud de bind fue rechazada por un motivo distinto de las credenciales — p. ej., IP no autorizada, TLS requerido, o tipo de bind no permitido para la cuenta.
0x0000000EESME_RINVPASWDContraseña no válida. La contraseña en la PDU de bind es incorrecta o ha caducado. Verifique las credenciales; el campo está limitado a 8 octetos en SMPP 3.4.
0x0000000FESME_RINVSYSIDID de sistema no válido. El system_id (nombre de usuario) es desconocido para el SMSC. Verifique el identificador de la cuenta y que esté habilitado.
0x00000011ESME_RCANCELFAILFallo de Cancel SM. cancel_sm no pudo eliminar el mensaje — puede que ya se haya entregado o haya caducado. Nada que reintentar.
0x00000013ESME_RREPLACEFAILFallo de Replace SM. replace_sm no pudo actualizar el mensaje, normalmente porque ya salió de la cola. Envíe un mensaje nuevo en su lugar.
0x00000014ESME_RMSGQFULCola de mensajes llena. La cola de almacenamiento y reenvío del SMSC está al máximo de su capacidad. Reduzca su tasa de envío y reintente con backoff.
0x00000015ESME_RINVSERTYPTipo de servicio no válido. El valor de service_type no se reconoce o no está permitido. Déjelo nulo o use un valor acordado con el proveedor.
0x00000033ESME_RINVNUMDESTSNúmero de destinos no válido. number_of_dests en una PDU submit_multi está fuera de rango. Manténgalo dentro del límite de destinos por PDU del SMSC.
0x00000034ESME_RINVDLNAMENombre de lista de distribución no válido. La lista de distribución referenciada en submit_multi no existe en el SMSC. Cree la lista o envíe a direcciones explícitas.
0x00000040ESME_RINVDESTFLAGIndicador de destino no válido. En submit_multi, el dest_flag de una entrada no es ni una dirección SME (1) ni una lista de distribución (2). Corrija el indicador por destino.
0x00000042ESME_RINVSUBREPSolicitud de 'envío con reemplazo' no válida. replace_if_present_flag se estableció en una operación que no lo admite, o se combinó con listas de distribución. Elimine el indicador.
0x00000043ESME_RINVESMCLASSDatos del campo esm_class no válidos. esm_class contiene una combinación no admitida — p. ej., un bit UDHI o de confirmación de entrega que el SMSC rechaza. Revise los bits de modo/tipo del mensaje.
0x00000044ESME_RCNTSUBDLNo se puede enviar a la lista de distribución. La cuenta no tiene permiso para enviar a la lista de distribución indicada. Use direccionamiento directo o solicite permiso.
0x00000045ESME_RSUBMITFAILFallo de submit_sm o submit_multi. Fallo genérico de envío en el SMSC. Suele ser transitorio (enrutamiento/capacidad); reintente con backoff e inspeccione los TLV para un motivo más específico.
0x00000048ESME_RINVSRCTONTON de dirección de origen no válido. source_addr_ton no es válido para el formato del remitente — p. ej., se requiere TON 5 (alfanumérico) para un remitente de texto, pero se envió un TON numérico.
0x00000049ESME_RINVSRCNPINPI de dirección de origen no válido. source_addr_npi no es válido o es incoherente con el TON. Use NPI 0 con remitentes alfanuméricos y NPI 1 (E.164) para MSISDN.
0x00000050ESME_RINVDSTTONTON de dirección de destino no válido. dest_addr_ton no es válido para el destino. Use TON 1 (internacional) con un MSISDN en formato E.164.
0x00000051ESME_RINVDSTNPINPI de dirección de destino no válido. dest_addr_npi no es válido o es incoherente con el TON. NPI 1 (ISDN/E.164) es el valor habitual para números móviles.
0x00000053ESME_RINVSYSTYPCampo system_type no válido. El system_type de la PDU de bind no es aceptado. Déjelo nulo o use el valor exacto asignado por el proveedor.
0x00000054ESME_RINVREPFLAGIndicador replace_if_present no válido. replace_if_present_flag tiene un valor distinto de 0 o 1. Envíe un indicador booleano válido.
0x00000055ESME_RINVNUMMSGSNúmero de mensajes no válido. El campo sm_count / número de mensajes está fuera de rango. Corrija el valor en la PDU.
0x00000058ESME_RTHROTTLEDError de limitación — se superó el límite de mensajes. Está enviando más rápido que la tasa permitida para la cuenta (mensajes por segundo). Reduzca el ritmo de envío y reintente con backoff. Es una condición transitoria y reintentable.
0x00000061ESME_RINVSCHEDHora de entrega programada no válida. schedule_delivery_time está malformado o en el pasado. Use el formato de hora SMPP absoluto/relativo (YYMMDDhhmmsstnnp) o déjelo nulo.
0x00000062ESME_RINVEXPIRYPeríodo de validez del mensaje no válido. validity_period está malformado o fuera de la ventana permitida. Use el formato de hora SMPP o déjelo nulo para el valor predeterminado del SMSC.
0x00000063ESME_RINVDFTMSGIDMensaje predefinido no válido o no encontrado. sm_default_msg_id hace referencia a un mensaje predefinido que el SMSC no tiene. Envíe el texto completo o un ID predefinido válido.
0x00000064ESME_RX_T_APPNCódigo de error de aplicación temporal del receptor ESME. Devuelto por su ESME (o un sistema anterior) para indicar un fallo temporal de la aplicación al procesar deliver_sm/data_sm. El SMSC puede reintentar la entrega más tarde.
0x00000065ESME_RX_P_APPNCódigo de error de aplicación permanente del receptor ESME. La aplicación receptora rechaza el mensaje de forma permanente. El SMSC no reintentará — corrija el gestor posterior o el motivo del rechazo.
0x00000066ESME_RX_R_APPNCódigo de error de rechazo de mensaje del receptor ESME. La aplicación receptora pide al SMSC que rechace el mensaje. Se usa para declinar contenido entrante específico.
0x00000067ESME_RQUERYFAILFallo de la solicitud query_sm. No se pudo completar la consulta de estado — el message_id puede ser desconocido o haber caducado del almacén del SMSC. Verifique el ID.
0x000000C0ESME_RINVOPTPARSTREAMError en la parte opcional del cuerpo de la PDU. El flujo TLV (parámetro opcional) está malformado — longitud incorrecta o truncada. Corrija el codificador de TLV de su cliente.
0x000000C1ESME_ROPTPARNOTALLWDParámetro opcional no permitido. Se envió un TLV que esta operación o el SMSC no permite. Elimine el parámetro opcional no admitido.
0x000000C2ESME_RINVPARLENLongitud de parámetro no válida. La longitud declarada de un TLV no coincide con su valor. Corrija el campo de longitud del parámetro opcional.
0x000000C3ESME_RMISSINGOPTPARAMFalta el parámetro opcional esperado. No se proporcionó un TLV requerido para esta operación (p. ej., message_payload cuando short_message está vacío). Añada el parámetro opcional obligatorio.
0x000000C4ESME_RINVOPTPARAMVALValor de parámetro opcional no válido. Un TLV tiene un valor fuera de su conjunto permitido. Consulte la especificación SMPP para los valores permitidos de ese parámetro.
0x000000FEESME_RDELIVERYFAILUREFallo de entrega (data_sm_resp). Se usa con data_sm para indicar que el mensaje no pudo entregarse al teléfono. Trátelo como un DLR fallido e inspeccione la red/ruta.
0x000000FFESME_RUNKNOWNERRError desconocido. Valor genérico cuando el SMSC no tiene un código específico. Reintente una vez con backoff; si persiste, repórtelo al proveedor con una muestra de la PDU.

Los valores no listados están reservados. Según la especificación SMPP v3.4: 0x00000100–0x000003FF está reservado para extensiones del protocolo SMPP, 0x00000400–0x000004FF para errores específicos del proveedor del SMSC, y 0x00000500–0xFFFFFFFF está reservado. Los huecos individuales por debajo de 0xFF (p. ej. 0x09, 0x10) están reservados por el estándar.

La respuesta breve

¿Qué es un código de error SMPP?

Un código de error SMPP es el valor del campo command_status de cada PDU de respuesta SMPP. Indica al cliente (ESME) si el SMSC aceptó la operación — 0x00000000 (ESME_ROK) significa éxito, y cualquier valor distinto de cero identifica por qué falló un bind, submit_sm, query_sm u otra solicitud. Los códigos están definidos por la especificación SMPP v3.4 y son coherentes en todos los SMSC compatibles.

Un submit_sm_resp exitoso con ESME_ROK solo confirma que el SMSC aceptó el mensaje para su procesamiento — la entrega final al teléfono se informa por separado en la confirmación de entrega (deliver_sm). Trate los errores en el momento del envío y en el momento de la entrega como dos capas distintas.

Preguntas frecuentes

¿Qué es command_status en SMPP?

command_status es un campo de 4 bytes en la cabecera de cada PDU de respuesta SMPP. En una PDU de solicitud es cero; en una respuesta lleva el resultado — 0x00000000 (ESME_ROK) para éxito o un código de error distinto de cero que identifica el fallo. Es la señal principal que usa su cliente para decidir si reintentar, corregir la PDU, o fallar.

¿Qué significa ESME_RTHROTTLED (0x00000058)?

Significa que está enviando mensajes más rápido que la tasa permitida para su cuenta (mensajes por segundo). Reduzca su bucle de envío, aplique un retroceso exponencial y manténgase dentro del rendimiento acordado con su proveedor. Es una condición transitoria y reintentable.

¿Cuál es la diferencia entre ESME_RINVSRCADR y ESME_RINVDSTADR?

ESME_RINVSRCADR (0x0000000A) significa que la dirección de origen — su ID de remitente — está malformada o no permitida, a menudo un remitente alfanumérico no registrado. ESME_RINVDSTADR (0x0000000B) significa que el MSISDN de destino está malformado o no es enrutable. Normalice las direcciones a E.164 y registre los ID de remitente donde sea necesario.

¿Significa ESME_ROK que el mensaje fue entregado?

No. ESME_ROK en submit_sm_resp solo confirma que el SMSC aceptó el mensaje para su procesamiento. La entrega final al teléfono se informa más tarde en la confirmación de entrega (deliver_sm), que lleva su propio estado como DELIVRD, UNDELIV o EXPIRED. Concilie siempre la aceptación del envío con el DLR.

¿Qué errores de SMPP son seguros de reintentar?

Los códigos transitorios del lado del sistema son reintentables con backoff: ESME_RSYSERR (0x08), ESME_RMSGQFUL (0x14), ESME_RTHROTTLED (0x58), ESME_RSUBMITFAIL (0x45) y ESME_RUNKNOWNERR (0xFF). Los errores de validación como direcciones no válidas, TON/NPI, longitud del mensaje o credenciales incorrectas son permanentes — corrija la solicitud o la configuración en lugar de reintentar.

¿Son estos códigos iguales en todos los SMSC?

Los códigos 0x00000000–0x000000FF están definidos por la especificación SMPP v3.4 y son coherentes en todos los SMSC compatibles. Los rangos 0x00000400–0x000004FF están reservados para errores específicos del proveedor, por lo que un SMSC dado puede devolver códigos adicionales allí con sus propios significados — consulte siempre la documentación de su proveedor para esos casos.

¿Va a establecer una sesión SMPP?

BroadNet ofrece enlaces SMPP 3.4 directos con rendimiento predecible y un manejo claro de command_status. Hable con nuestro equipo sobre una conexión.