Gestion de l'état des SMS multi-segments

Les SMS longs sont automatiquement divisés en plusieurs segments par les réseaux des opérateurs, puis réassemblés sur l'appareil du destinataire afin que le texte complet s'affiche sous la forme d'un seul message. Ce document explique comment la Messages API gère les accusés de réception (DLR) pour les SMS en plusieurs segments et comment cela affecte les rappels d'état.

Les SMS multi-segments introduisent une certaine complexité, car chaque segment est transmis indépendamment via le réseau de l'opérateur. Dans la plupart des cas, tous les segments sont livrés avec succès dans un délai très court, mais des échecs partiels peuvent survenir.

Afin de fournir des rapports de livraison, la Messages API regroupe les accusés de réception de tous les segments avant d'envoyer un rappel de statut final.

La logique est la suivante :

  • L'API attend jusqu'à 5 minutes après avoir reçu l'accusé de réception du premier segment.
  • Au cours de cette période, il recueille les accusés de réception de livraison pour tous les segments.
  • Un seul rappel d'état agrégé est envoyé, avec le détail des résultats de chaque segment.

Un message est marqué comme rejected si l'une des situations suivantes se produit :

  • Au moins un segment est rejeté.
  • Tous les segments ne sont pas considérés comme livrés dans les 5 minutes suivant le premier accusé de réception de livraison.

Rappels d'état agrégés

Les rappels d'état pour les SMS à segments multiples indiquent le résultat de l'ensemble du message, et pas seulement celui du premier segment reçu. Cela garantit que l'état signalé reflète bien si le message complet a bien été remis à l'utilisateur final.

Les callbacks d'état agrégés offrent :

  • Un seul callback unifié pour le message.
  • Une ventilation par segment des résultats en matière de livraison.
  • Des statuts de « livré » et « rejeté » plus précis pour les messages longs.

Exemple de rappel d'état

{ 
   "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" 
         } 
      ] 
   } 
} 

Plus d'informations

Rappels d'état par SMS