Los códigos de error SMPP son los valores de command_status que devuelve un proveedor en respuestas como submit_sm_resp. 0x00000000 (ESME_ROK) significa aceptado; cualquier otro valor es un error, por ejemplo 0x0B dirección de destino no válida, 0x14 cola llena o 0x58 throttling. Algunos errores son temporales y vale la pena reintentar; otros son permanentes y no deben reintentarse.
Dónde aparecen los códigos
Cada PDU de respuesta SMPP lleva un campo command_status. Cuando envía submit_sm, el proveedor responde con submit_sm_resp: el estado 0 más un ID de mensaje significa que el mensaje se aceptó para su entrega; un estado distinto de cero significa que se rechazó en el envío. Estos códigos son distintos del campo err de los informes de entrega, que llega después y describe lo que ocurrió en la red. Para esos, consulte estados de los informes de entrega SMS.
Códigos más habituales (SMPP 3.4)
| Código | Nombre | Significado | ¿Reintentar? |
|---|---|---|---|
| 0x00 | ESME_ROK | Sin error | No es necesario |
| 0x01 | ESME_RINVMSGLEN | Longitud de mensaje no válida | No, corrija el mensaje |
| 0x02 | ESME_RINVCMDLEN | Longitud de comando no válida | No, corrija el cliente |
| 0x04 | ESME_RINVBNDSTS | Estado de bind incorrecto para este comando (por ejemplo, enviar en un bind receiver) | No, corrija el bind |
| 0x05 | ESME_RALYBND | Bind ya establecido | No |
| 0x08 | ESME_RSYSERR | Error de sistema en el proveedor | Sí, más tarde |
| 0x0A | ESME_RINVSRCADR | Dirección de origen (sender ID) no válida | No |
| 0x0B | ESME_RINVDSTADR | Dirección de destino no válida | No |
| 0x0D | ESME_RBINDFAIL | Fallo de bind | Tras revisar credenciales y límites |
| 0x0E | ESME_RINVPASWD | Contraseña no válida | No |
| 0x0F | ESME_RINVSYSID | System ID no válido | No |
| 0x14 | ESME_RMSGQFUL | Cola de mensajes llena | Sí, con esperas crecientes |
| 0x45 | ESME_RSUBMITFAIL | Fallo de submit_sm (genérico) | Depende, pregunte al proveedor |
| 0x48 / 0x49 | ESME_RINVSRCTON / NPI | TON o NPI de origen no válidos | No, corrija la configuración de direcciones |
| 0x50 / 0x51 | ESME_RINVDSTTON / NPI | TON o NPI de destino no válidos | No, corrija la configuración de direcciones |
| 0x58 | ESME_RTHROTTLED | Error de throttling, demasiados mensajes por segundo | Sí, reduzca el ritmo |
| 0x61 | ESME_RINVSCHED | Hora de entrega programada no válida | No |
| 0x62 | ESME_RINVEXPIRY | Periodo de validez no válido | No |
| 0x64 | ESME_RX_T_APPN | Error temporal de la aplicación receptora | Sí |
| 0x65 | ESME_RX_P_APPN | Error permanente de la aplicación receptora | No |
| 0x66 | ESME_RX_R_APPN | Mensaje rechazado por la aplicación receptora | No |
| 0xFF | ESME_RUNKNOWNERR | Error desconocido | Investigar |
Los códigos 0x0400 a 0x04FF están reservados para errores específicos de cada proveedor. Muchos proveedores los usan para reglas de negocio como "sin crédito", "destino no permitido", "sender ID no registrado" o "contenido bloqueado". Pida a cada proveedor su propia tabla.
Causas típicas y soluciones
- Destino no válido (0x0B): número sin formato internacional, un cero inicial o un signo más donde el proveedor no lo espera, o un país no habilitado en su cuenta. Envíe los números como dígitos E.164 y revise la configuración TON/NPI (normalmente TON 1, NPI 1 para números internacionales).
- Origen no válido (0x0A): remitente alfanumérico de más de 11 caracteres, TON incorrecto para un remitente alfanumérico (normalmente TON 5) o un sender ID no permitido o no registrado en esa ruta. Consulte tipos de sender ID para SMS.
- Longitud de mensaje no válida (0x01): texto demasiado largo para una PDU, a menudo un mensaje largo enviado sin dividirlo correctamente. Consulte SMS largos concatenados.
- Throttling (0x58) y cola llena (0x14): está por encima de sus TPS o el proveedor está congestionado. Consulte binds SMPP y TPS.
- Fallos de bind (0x0D, 0x0E, 0x0F): credenciales incorrectas, IP fuera de la lista blanca o más binds de los permitidos.
Cómo definir una política de reintentos
- Clasifique cada código, incluidos los del proveedor, como temporal o permanente.
- Reintente los errores temporales con esperas crecientes (por ejemplo 1, 5 y 30 segundos) y pare tras unos pocos intentos.
- En OTP, pasar a una segunda ruta suele ser mejor que esperar. Consulte buenas prácticas para SMS OTP.
- No reintente nunca en bucle los errores permanentes: desperdicia capacidad y puede hacer que marquen su cuenta.
- Registre el código por destino y por proveedor para detectar rápido los nuevos rechazos.
Ayuda con una ruta
Un aumento repentino de un código de error suele indicar un cambio de configuración o de reglas en el lado del proveedor. Cuando VoIPMatcher gestiona sus rutas SMS A2P, nosotros tratamos con el proveedor por usted. Solicite una ruta SMPP.
Preguntas frecuentes
¿Qué es el código de error SMPP 69?
El error 69 es 0x45 en hexadecimal, ESME_RSUBMITFAIL: el submit_sm falló por un motivo que el propio código no especifica. Algunas plataformas lo usan para reglas de negocio como falta de crédito o un destino no habilitado. Si conviene reintentar depende de la causa, así que pregunte al proveedor qué lo provoca en su lado.
¿Qué es el código de error SMPP 88?
El error 88 es 0x58 en hexadecimal, ESME_RTHROTTLED: está enviando más mensajes por segundo de los que permite su cuenta o su bind. Es temporal. Reduzca el ritmo y reintente con esperas crecientes en lugar de hacerlo de inmediato, y compruebe si el límite de TPS se aplica por bind o a toda la cuenta.
¿Qué es el código de error SMPP 11?
El error 11 es 0x0B, ESME_RINVDSTADR: dirección de destino no válida. Normalmente el número tiene un formato incorrecto, con un cero inicial o un signo más que el proveedor no espera, o el país no está habilitado en su cuenta. Envíe los números como dígitos E.164 internacionales con TON 1 y NPI 1, y no reintente sin cambiar nada.
¿Qué es el código de error SMPP 13?
El error 13 es 0x0D, ESME_RBINDFAIL: se rechazó la solicitud de bind. Las causas habituales son credenciales incorrectas, una dirección IP que el proveedor no tiene en la lista blanca o más binds simultáneos de los permitidos. Revise el system_id, la contraseña y la IP de origen, cierre las sesiones antiguas y confirme el límite de binds antes de volver a intentarlo.
¿Qué es el código de error SMPP 255?
El error 255 es 0xFF, ESME_RUNKNOWNERR: un error desconocido. La plataforma del proveedor no pudo asignar el fallo a un código estándar. No reintente en bucle. Registre el destino, el sender ID y la hora, y envíe ejemplos al proveedor, que puede revisar sus propios registros y su conexión superior.
¿Necesita una ruta?
Envíe el destino, el tipo de ruta y la tarifa objetivo. Le respondemos con lo que podemos ofrecer.