ESME_RINVMSGLEN en SMPP
¿Qué es ESME_RINVMSGLEN?
ESME_RINVMSGLEN (Código de Error: 0x00000004) es un error de SMPP que indica una longitud de mensaje inválida en una solicitud SMPP.
Causas Posibles
- La longitud del mensaje excede el límite permitido (normalmente 254 o 160 caracteres para ciertas codificaciones).
- La longitud del mensaje es cero (mensaje vacío).
- Codificación incorrecta que causa un cálculo inesperado de la longitud.
- PDU (Unidad de Datos de Protocolo) corrupta o malformada enviada.
- Concatenación incorrecta de mensajes largos (problemas de división).
¿Cuándo Ocurre?
Este error ocurre al enviar un PDU de SMPP (ej. submit_sm
, data_sm
) donde el parámetro de longitud del mensaje no cumple con las restricciones de longitud esperadas por el SMSC.
Ejemplo de Transacción PDU en SMPP
El siguiente es un ejemplo de un PDU submit_sm
incorrecto que podría desencadenar el error ESME_RINVMSGLEN
:
0000003C 00000004 00000000 00000001 74657374 000101 35363137 38363530 30303000 0000 0000 0000 00000000 00000000 00
Problema: El campo de longitud del mensaje está establecido en cero, lo que resulta en un error de longitud de mensaje inválido.
Otro PDU incorrecto donde el mensaje excede la longitud permitida:
00000100 00000004 00000000 00000002 74657374 000101 35363137 38363530 30303000 0000 0000 0000 00000000 00000100 (Demasiado largo)
¿Cómo Solucionarlo?
- Asegúrese de que la longitud del mensaje esté dentro de los límites permitidos (verifique las restricciones del SMSC).
- Valide la codificación (ej. mensajes UCS2 ocupan 2 bytes por carácter).
- Asegúrese de la concatenación adecuada de mensajes largos usando
sar_msg_ref_num
,sar_total_segments
, etc. - Verifique mensajes vacíos antes de enviar.
- Compruebe el formato del PDU para asegurarse de que esté estructurado correctamente.
Si el problema persiste, active la depuración SMPP en su cliente o puerta de enlace SMS para inspeccionar los PDUs crudos que se están transmitiendo.