Comment configurer le champ ESM Class SMPP

Paramètres ESM Class dans Ozeki SMS Gateway

Ozeki SMS Gateway vous permet de configurer manuellement le champ ESM Class (Figure 1)

Figure 1 - Paramètre du champ ESM Class

Qu'est-ce que le champ ESM Class ?

Le Extended Service Message (ESM) Class dans SMPP est un champ de 1 octet dans les PDU SMPP qui contrôle les fonctionnalités avancées de gestion des messages. Il est utilisé dans les opérations submit_sm, deliver_sm et data_sm pour spécifier :

  • Types de messages (par exemple, SMS, accusé de réception)
  • Comportement des accusés de réception
  • Présence d'un UDH (User Data Header)
  • Priorité des messages et indicateurs de routage

Structure et masque binaire de l'ESM Class

L'ESM Class est un masque binaire où chaque bit ou groupe de bits active des fonctionnalités spécifiques :

Bits Description
7 Mode de messagerie : 0 = Par défaut, 1 = Datagramme
6 Type de message : 0 = Normal, 1 = Accusé de réception
5 Indicateur UDHI : 1 = UDH présent dans la charge utile
4 Chemin de réponse : 1 = Chemin de réponse demandé
3-2 Priorité du message (00 = Normal, 01 = Interactif, 10 = Urgent, 11 = Urgence)
1-0 Réservé

Valeurs courantes de l'ESM Class

ESM (Hex) Binaire Description
0x00 00000000 Par défaut (aucun traitement spécial)
0x04 00000100 Indicateur UDHI activé (UDH présent)
0x08 00001000 Chemin de réponse demandé
0x20 00100000 Accusé de réception (bit 6 = 1)
0x30 00110000 Priorité urgente + accusé de réception
0x60 01100000 Mode datagramme + accusé de réception
Note : De nombreux SMSC ignorent les bits réservés (1-0). Les niveaux de priorité (bits 3-2) dépendent du réseau.

Cas d'utilisation clés

1. SMS concaténés (indicateur UDHI)

Lors de l'envoi de messages multiparties, activez le bit 5 (UDHI=1) et incluez un User Data Header (UDH) dans la charge utile. Exemple pour un message en 3 parties :

ESM Class : 0x40 (binaire 01000000 : UDHI activé)
Charge utile : 
05 00 03 02 01  // UDH (5 octets : IEI=00, IEDL=03, partie 1 sur 2)
C8329BFD06       // Charge utile GSM-7 ("Hello")

2. Demandes d'accusé de réception

Activez le bit 6 (0x20) pour demander un accusé de réception. Souvent combiné avec le champ registered_delivery :

ESM Class : 0x20 (binaire 00100000)
registered_delivery : 0x01 (demande d'accusé)

3. Messagerie prioritaire

Utilisez les bits 3-2 pour prioriser les messages. Exemple pour une priorité urgente :

ESM Class : 0x10 (binaire 00010000 : Priorité urgente)

Exemples de PDU SMPP

Exemple 1 : SMS basique (ESM=0x00)

0000001D  // Longueur de commande (29 octets)
00000004  // ID de commande (SubmitSM)
00000001  // Numéro de séquence
00        // TON source
00        // NPI source
736F7572636500  // Adresse source ("source")
00        // TON destination
00        // NPI destination
36353433323100  // Adresse destination ("654321")
00        // ESM Class (0x00 : Par défaut)
00        // Protocol ID (PID)
00        // Priorité
00        // Heure de livraison planifiée
00        // Période de validité
00        // Livraison enregistrée
00        // Remplacer si présent
00        // Codage des données (DCS=0x00)
00        // ID de message par défaut SM
07        // Longueur SM (7 septets)
C8329BFD06DDDF72  // Charge utile ("Hello!")

Exemple 2 : SMS concaténé (ESM=0x40)

00000025  // Longueur de commande (37 octets)
00000004  // ID de commande (SubmitSM)
00000002  // Numéro de séquence
00        // TON source
00        // NPI source
736F7572636500  // Adresse source ("source")
00        // TON destination
00        // NPI destination
36353433323100  // Adresse destination ("654321")
40        // ESM Class (0x40 : UDHI activé)
00        // Protocol ID (PID)
00        // Priorité
00        // Heure de livraison planifiée
00        // Période de validité
00        // Livraison enregistrée
00        // Remplacer si présent
00        // Codage des données (DCS=0x00)
00        // ID de message par défaut SM
0C        // Longueur SM (12 octets)
0500030201C8329BFD06DDDF72  // UDH + "Hello" (Partie 1/2)

Exemple 3 : Accusé de réception (ESM=0x20)

0000001D  // Longueur de commande (29 octets)
00000004  // ID de commande (SubmitSM)
00000003  // Numéro de séquence
00        // TON source
00        // NPI source
736F7572636500  // Adresse source ("source")
00        // TON destination
00        // NPI destination
36353433323100  // Adresse destination ("654321")
20        // ESM Class (0x20 : Accusé de réception)
00        // Protocol ID (PID)
00        // Priorité
00        // Heure de livraison planifiée
00        // Période de validité
01        // Livraison enregistrée (accusé demandé)
00        // Remplacer si présent
00        // Codage des données (DCS=0x00)
00        // ID de message par défaut SM
07        // Longueur SM (7 septets)
C8329BFD06DDDF72  // Charge utile ("Hello!")

Interactions avec d'autres champs

  • UDHI (ESM) + DCS : Si UDHI est activé, assurez-vous que le DCS prend en charge UDH (par exemple, GSM-7 ou 8 bits).
  • ESM Class + registered_delivery : Utilisez les deux pour demander explicitement des accusés de réception.
  • Bits de priorité + Indicateur de priorité : Certains SMSC priorisent les messages en fonction des bits ESM plutôt que du champ de priorité séparé.

Pièges courants

  • Activer UDHI sans inclure un User Data Header valide.
  • Utiliser les indicateurs d'accusé de réception (ESM=0x20) sans activer registered_delivery.
  • Incompatibilité entre les bits de priorité ESM et le champ priority_flag.
Conclusion

La classe ESM est un outil puissant pour contrôler le comportement des messages dans SMPP. Sa conception en masque binaire permet des fonctionnalités telles que la concaténation, les accusés de réception et la priorisation. Vérifiez toujours que le SMSC prend en charge les drapeaux avancés et testez les configurations minutieusement. Pour des détails officiels, reportez-vous à la spécification SMPP v3.4 ou v5.0.

More information