Gestión del estado de los SMS multisegmento
Los mensajes SMS largos se dividen automáticamente en varios segmentos por parte de las redes de los operadores y, a continuación, se vuelven a ensamblar en el dispositivo del destinatario para que el texto completo aparezca como un único mensaje. En este documento se explica cómo gestiona la Messages API los acuses de recibo (DLR) de los SMS de varios segmentos y cómo esto afecta a las llamadas de retorno de estado.
Los SMS multisegmento añaden complejidad, ya que cada segmento se envía de forma independiente a través de la red del operador. En la mayoría de los casos, todos los segmentos llegan correctamente en un breve intervalo de tiempo, pero pueden producirse fallos parciales.
Para proporcionar información sobre la entrega, la Messages API agrupa los acuses de recibo de todos los segmentos antes de enviar una llamada de retorno con el estado final.
La lógica es la siguiente:
- La API espera hasta 5 minutos tras recibir el acuse de recibo del primer segmento.
- Durante este periodo, recopila los albaranes de entrega de todos los segmentos.
- Se envía una única llamada de retorno con el estado agregado, junto con un desglose de los resultados de cada segmento.
Un mensaje se marca como rejected si se da cualquiera de las siguientes situaciones:
- Se rechaza al menos un segmento.
- No todos los segmentos se confirman como entregados en los 5 minutos siguientes al primer acuse de recibo.
Llamadas de retorno de estado agregadas
Las notificaciones de estado de los SMS multisegmento reflejan el resultado del mensaje completo, no solo del primer segmento recibido. De este modo, se garantiza que el estado notificado refleje si el mensaje completo se ha entregado correctamente al usuario final.
Las llamadas de retorno de estado agregadas ofrecen:
- Una única función de devolución de llamada unificada para el mensaje.
- Un desglose de los resultados de las entregas por segmentos.
- Estados de entrega y rechazo más precisos para los mensajes largos.
Ejemplo de llamada de retorno de estado
{
"message_uuid": "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab",
"to": "447700900000",
"from": "447700900001",
"timestamp": "2025-02-03T12:14:25Z",
"status": "delivered",
"channel": "sms",
"destination": {
"network_code": "12345"
},
"sms": {
"total_count": "2",
"segments": [
{
"timestamp": "2025-02-03T12:14:25Z",
"status": "delivered"
},
{
"timestamp": "2025-02-03T12:14:58Z",
"status": "delivered"
}
]
}
}