Aller au contenu
OmniChannels.ai

Envoyer des millions de SMS par jour : le guide haut volume

Envoyer des millions de SMS par jour : calcul du TPS, binds et fenêtre SMPP, files d'attente, limitation, accusés de réception, sender ID, horaires et KPI.

Mis à jour le 11 min de lecture

Par OmniChannels.ai Editorial Team · Relu par BroadNet Messaging Solutions Team

SMS et OTP

Réponse courte

Pour envoyer des millions de SMS par jour, dimensionnez le débit sur le pic : divisez les segments par les secondes de la plage d'envoi, ajoutez une marge pour les OTP et réglez la fenêtre SMPP à au moins le TPS multiplié par le temps d'aller-retour. Utilisez plusieurs binds, des files par opérateur et un limiteur qui ralentit en cas de throttling, traitez les accusés à part et séparez OTP et promotions.

Sur cette page
  1. Combien de SMS par seconde faut-il pour des millions par jour ?
  2. Comment planifier le débit sur l'heure la plus chargée, et non sur la moyenne ?
  3. Qu'est-ce qu'un bind SMPP et combien en faut-il ?
  4. Comment fonctionne la fenêtre SMPP ?
  5. Comment gérer files d'attente et limitation de débit à grande échelle ?
  6. Comment router par opérateur à grande échelle ?
  7. Comment gérer les accusés de réception à grande échelle ?
  8. Que faut-il enregistrer dans chaque pays avant d'envoyer ?
  9. Comment respecter les plages horaires interdites à grand volume ?
  10. Pourquoi séparer le trafic OTP et le trafic promotionnel ?
  11. Quels KPI surveiller ?
  12. Quelle checklist de lancement pour un envoi de plusieurs millions ?
  13. Comment OmniChannels.ai vous aide

Points clés

  • Dix millions de messages par jour ne représentent en moyenne qu'environ 116 par seconde, mais une promotion concentrée sur quatre heures exige environ 694 par seconde, et chaque segment supplémentaire multiplie ce chiffre.
  • La spécification SMPP permet d'émettre plusieurs requêtes sans attendre les réponses ; le nombre de requêtes en attente est laissé à l'implémentation, la fenêtre doit donc être convenue et ajustée. Une bonne règle de départ : fenêtre au moins égale au TPS multiplié par le temps d'aller-retour en secondes.
  • Le throttling (ESME_RTHROTTLED, 0x58) et la file pleine (ESME_RMSGQFUL, 0x14) sont des signaux pour ralentir et réessayer avec un délai croissant, pas pour renvoyer aussitôt.
  • Les accusés de réception forment un second flux à gros volume : prévoyez consommateurs, stockage et rapprochement avec autant de soin que pour les soumissions.
  • La capacité se convient par compte et par route avec votre fournisseur : demandez vos chiffres de pic par écrit et testez-les avant le lancement.

Ce guide s'adresse aux ingénieurs, aux responsables des opérations de messagerie et aux équipes achats qui envoient, ou vont envoyer, entre un et dix millions de SMS par jour. Il montre comment transformer un volume quotidien en objectif de débit, comment configurer les binds et les fenêtres SMPP, comment gérer files d'attente et limitation de débit, comment traiter les accusés de réception à grande échelle et ce qu'il faut préparer pays par pays. Les chiffres des exemples sont des valeurs de planification illustratives, pas des affirmations sur la capacité d'un fournisseur.

Combien de SMS par seconde faut-il pour des millions par jour ?

Il faut le nombre de segments divisé par les secondes de la plage pendant laquelle vous pouvez réellement envoyer. Le débit, mesuré en TPS (messages ou segments soumis par seconde), est une valeur de pic, pas une moyenne quotidienne. Voir débit (TPS).

Calculez d'abord la moyenne, puis le pic pour votre vraie plage d'envoi :

Messages par jour Moyenne par seconde sur 24 h Si envoyés en 4 heures Si envoyés en 2 heures
1,000,000 11.6 69.4 138.9
5,000,000 57.9 347.2 694.4
10,000,000 115.7 694.4 1,388.9

Deux multiplicateurs modifient ce tableau :

  • Les segments. Un message de plus d'un segment est soumis en plusieurs parties, et la plupart des plateformes comptent chaque partie. 10 millions de messages de 1,5 segment en moyenne font 15 millions de soumissions. Maîtrisez-les avec les limites de caractères des SMS et le compteur de caractères.
  • La marge. Ajoutez le trafic extérieur à la campagne, comme les OTP, et une réserve pour les réessais et les opérateurs lents. Trente pour cent est une marge de planification courante, pas une règle.

Comment planifier le débit sur l'heure la plus chargée, et non sur la moyenne ?

Planifiez à partir de l'heure ou de la plage qui concentre le plus de trafic, car c'est là que les files grossissent et que le throttling apparaît. Utilisez cette formule :

TPS requis = (segments de la campagne ÷ secondes de la plage + TPS de pointe des OTP et alertes) × (1 + marge).

Exemple chiffré : un détaillant régional

Un détaillant fictif envoie 6 millions de messages promotionnels en une journée à des clients du Golfe, avec 1,4 segment en moyenne par message. Il veut terminer l'envoi en quatre heures dans la plage diurne autorisée.

  • Segments : 6,000,000 × 1.4 = 8,400,000.
  • Plage : 4 heures = 14,400 secondes, donc 8,400,000 ÷ 14,400 = 583 par seconde.
  • Trafic de pointe des OTP et alertes pendant la campagne : 40 par seconde (sa propre mesure).
  • Marge : 30 %.
  • Requis : (583 + 40) × 1.3 ≈ 810 par seconde.

C'est ce chiffre que le détaillant demande à son fournisseur de confirmer par route, par écrit, avant le lancement. C'est une donnée de planification ; elle ne dit rien de ce qu'une plateforme peut absorber.

Qu'est-ce qu'un bind SMPP et combien en faut-il ?

Un bind SMPP est une session TCP durable entre votre système et le SMSC du fournisseur, authentifiée par des identifiants et une adresse IP autorisée. SMPP (Short Message Peer-to-Peer) est le protocole télécom d'échange de SMS, conçu pour les volumes soutenus. Voir bind SMPP et SMPP ou API REST.

Il existe trois types de bind : transmitter (soumission seule), receiver (accusés et messages entrants seulement) et transceiver (les deux sur une même session). La plupart des émetteurs utilisent des binds transceiver.

Pour savoir combien de binds il vous faut :

  1. Prenez votre TPS de pointe requis.
  2. Divisez-le par le débit par bind que votre fournisseur convient pour votre compte.
  3. Arrondissez au supérieur et ajoutez au moins un bind de réserve pour qu'une connexion coupée n'arrête pas l'envoi.
  4. Placez le trafic OTP sur ses propres binds ou son propre compte.

Les binds étant provisionnés par compte, demandez leur nombre, le débit par bind et les IP sources autorisées. Notre page passerelle SMPP et la documentation développeur SMPP décrivent la connexion.

Comment fonctionne la fenêtre SMPP ?

La fenêtre est le nombre de requêtes submit_sm que vous pouvez avoir en attente en même temps. SMPP est asynchrone : la spécification indique qu'un émetteur peut envoyer plusieurs requêtes sans attendre les réponses, et utilise le sequence_number de chaque PDU pour associer une réponse à sa requête. Le nombre maximal d'opérations en attente n'est pas défini par la spécification ; il dépend de l'implémentation de chaque côté.

La règle qui découle de l'arithmétique des files d'attente est :

Fenêtre ≥ TPS visé × temps d'aller-retour (secondes).

TPS visé Aller-retour 50 ms Aller-retour 150 ms Aller-retour 300 ms
100 5 15 30
400 20 60 120
810 41 122 243

Une fenêtre de 1 oblige l'émetteur à attendre chaque réponse, ce qui plafonne le débit à un divisé par le temps d'aller-retour. Augmenter la fenêtre aide jusqu'au débit que votre fournisseur autorise ; au-delà, vous ne produisez que du throttling. Voyez ce nombre comme une valeur à convenir avec votre fournisseur et à tester, pas à maximiser. Répartissez le TPS entre les binds quand vous en utilisez plusieurs : quatre binds pour 810 TPS au total en portent chacun environ 203.

Comment gérer files d'attente et limitation de débit à grande échelle ?

Placez une file durable entre votre application et la connexion SMPP, et vidangez-la avec un limiteur de débit modifiable à l'exécution. La file absorbe les pics ; le limiteur vous maintient au débit convenu.

  • Un token bucket par bind et par route. Rechargez-le au TPS convenu ; prélevez un jeton pour chaque submit_sm, en comptant chaque segment.
  • Une file par priorité. D'abord les OTP et alertes, puis le transactionnel, puis le promotionnel.
  • Délai croissant en cas d'erreur. Sur ESME_RTHROTTLED (0x58) ou ESME_RMSGQFUL (0x14), faites une pause, puis réessayez avec un délai exponentiel et du jitter. Ne renvoyez pas en boucle serrée.
  • Reconnexion avec délai croissant après une déconnexion, et suivez les sequence numbers en attente pour pouvoir rapprocher ce qui a été accepté.
  • Maintenez les sessions actives. La spécification définit un minuteur enquire_link pour vérifier que le pair a toujours une session active et un minuteur d'inactivité après lequel une session peut être coupée. Envoyez enquire_link pendant les périodes d'inactivité.
  • Soumissions idempotentes. Enregistrez votre propre identifiant de message avant de soumettre, pour qu'un réessai ne puisse pas envoyer deux fois.

Comment router par opérateur à grande échelle ?

Placez files et limitation par opérateur de destination en plus de par bind, car un opérateur lent ne doit pas bloquer les autres. Les opérateurs peuvent plafonner le trafic A2P par expéditeur ou par route : la limite effective d'un pays peut donc être inférieure au débit du compte.

  1. Associez chaque numéro à son opérateur. La recherche de numéro aide ; voir recherche HLR.
  2. Conservez une file et un limiteur par opérateur ou par groupe de routes.
  3. Surveillez le taux de livraison et le délai des accusés par opérateur, et ralentissez ceux qui se dégradent.
  4. Demandez à votre fournisseur si des routes directes sont utilisées ; voir routes directes et routes grises.

Comment gérer les accusés de réception à grande échelle ?

Traitez les accusés de réception comme un second flux aussi volumineux que le premier. Un accusé arrive sous forme de deliver_sm sur votre bind, et vous devez répondre à chacun par un deliver_sm_resp. La spécification définit ces états, finaux et intermédiaires, dans l'accusé : DELIVRD, EXPIRED, DELETED, UNDELIV, ACCEPTD, UNKNOWN et REJECTD. Voir accusés de réception et statuts de livraison des messages expliqués.

Une conception fiable :

  1. Acquittez vite. Répondez par deliver_sm_resp dès que l'accusé est dans une file.
  2. Traitez de façon asynchrone avec des workers qui rattachent l'accusé au message d'origine par identifiant de message.
  3. Rendez le traitement idempotent. Les accusés peuvent être répétés, et une livraison dans le désordre est possible.
  4. Gérez les segments. Selon la route, vous pouvez recevoir un accusé par partie ou par message ; testez-le.
  5. Fixez un délai d'expiration pour les messages qui n'obtiennent jamais de statut final et marquez-les comme inconnus.
  6. Gardez les consommateurs d'accusés hors du chemin de soumission pour qu'un retard ne ralentisse pas l'envoi.

Que faut-il enregistrer dans chaque pays avant d'envoyer ?

Les règles de sender ID diffèrent d'un pays à l'autre, et dans certains marchés les expéditeurs non enregistrés sont bloqués ou remplacés. Exemples : les Émirats et l'Arabie saoudite exigent un enregistrement auprès des opérateurs, l'Inde impose l'enregistrement DLT de l'en-tête et de chaque modèle, et les États-Unis utilisent le 10DLC ou le toll-free plutôt que des expéditeurs alphanumériques. Les délais vont de quelques jours ouvrés à environ un mois dans les marchés que nous suivons.

Lancez les enregistrements en premier, car ils sont sur le chemin critique du lancement. Consultez les règles du SMS marketing par pays, le vérificateur de sender ID et le guide du sender ID pour les Émirats et l'Arabie saoudite. Nous préparons et déposons les enregistrements avec vous via notre service d'enregistrement ; les approbations restent du ressort des régulateurs et des opérateurs.

Comment respecter les plages horaires interdites à grand volume ?

Programmez les promotions selon l'heure locale de chaque destinataire et la règle du pays, et laissez le trafic non promotionnel en dehors de cette restriction. Certains marchés publient des fenêtres : les Émirats interdisent les SMS marketing de 21:00 à 07:00, et l'Arabie saoudite de 22:00 à 09:00 et de 01:00 à 12:00 pendant le Ramadan. Voir plages horaires interdites.

  • Regroupez la liste par pays et fuseau horaire avant la mise en file.
  • Libérez chaque groupe dans sa propre file à l'ouverture de sa fenêtre.
  • Arrêtez les files promotionnelles à la fin de la fenêtre et reportez le reste au lendemain.
  • Planifiez la séquence avec le planificateur d'heure d'envoi.

Une fenêtre étroite augmente le TPS nécessaire : vérifiez-le dans la formule de planification.

Pourquoi séparer le trafic OTP et le trafic promotionnel ?

Les OTP et les alertes sont urgents, alors que les campagnes promotionnelles sont envoyées en masse ; s'ils partagent une file ou un bind, une campagne peut retarder un code de connexion. Utilisez des binds ou comptes séparés, des sender ID séparés quand les règles l'exigent, des files séparées avec priorité stricte et une supervision séparée. Les OTP n'étant pas promotionnels, les plages horaires interdites ne s'appliquent pas à eux. Protégez aussi les routes OTP contre les abus : voir la prévention de la fraude par SMS pumping et le guide des OTP.

Quels KPI surveiller ?

Surveillez la santé des soumissions, l'âge des files, les résultats et le délai des accusés, par pays et par opérateur. Déclenchez des alertes sur les écarts par rapport à votre propre référence.

KPI Formule Ce qu'il indique
Taux de succès des soumissions submit_sm_resp acceptés ÷ submit_sm envoyés Santé du bind et du compte
Taux de throttling Réponses ESME_RTHROTTLED ÷ submit_sm envoyés Débit ou fenêtre réglé trop haut
Âge de la file (p95) Temps entre l'entrée en file et la soumission Manque de capacité
Taux de livraison DELIVRD ÷ messages avec statut final Qualité de la route et du contenu
Part d'échecs et d'expirations (UNDELIV + EXPIRED + REJECTD) ÷ statuts finaux Validité des numéros, sender ID, filtrage
Délai des accusés (médiane et p95) Heure de l'accusé − heure de soumission Lenteur de l'opérateur
Couverture des accusés Statuts finaux ÷ messages soumis Accusés manquants
Taux de désinscription Réponses STOP ÷ messages promotionnels délivrés Adéquation audience et contenu

Voir améliorer le taux de livraison des SMS pour le diagnostic.

Quelle checklist de lancement pour un envoi de plusieurs millions ?

  1. TPS de pointe requis calculé à partir des segments, de la plage et de la charge OTP.
  2. Débit par bind, nombre de binds, fenêtre et IP sources confirmés par écrit par votre fournisseur.
  3. Sender ID enregistrés pour chaque pays, avec les modèles là où ils sont exigés.
  4. Test de charge sur une fraction du volume, puis montée en puissance par paliers ; ne démarrez pas au maximum.
  5. Files, limiteur, délai croissant et idempotence testés, y compris une déconnexion forcée.
  6. Chaîne des accusés testée au volume complet.
  7. Programmation des plages horaires interdites vérifiée pays par pays.
  8. Trafic OTP séparé et surveillé.
  9. Tableaux de bord et alertes actifs, avec un responsable d'astreinte.
  10. Un bouton d'arrêt qui stoppe instantanément les files promotionnelles.

Comment OmniChannels.ai vous aide

BroadNet livre les SMS via une connectivité directe aux opérateurs et prend en charge SMPP 3.4 sur TLS avec des binds provisionnés par compte, ainsi qu'une API REST, l'envoi en masse, le SMS bidirectionnel, l'Unicode et l'arabe, la recherche HLR et des rapports de livraison. La capacité est dimensionnée par compte et par route : indiquez-nous vos destinations, votre volume de pointe, vos plages d'envoi et vos sender ID, et nous convenons avec vous du débit, des binds et des enregistrements. Notre équipe prépare les enregistrements de sender ID. Contactez l'équipe commerciale avec votre plan de volumes, ou découvrez le programme grossiste.

Questions fréquentes

Combien de SMS par seconde faut-il pour envoyer un million de messages ?

Divisez le nombre de segments par les secondes de votre plage d'envoi. Un million de messages d'un segment en une heure demande environ 278 par seconde, en quatre heures environ 69, et répartis sur une journée entière environ 12. Sur la plupart des plateformes, un message de plusieurs segments compte pour un par segment : un message de deux segments double donc le débit nécessaire.

Qu'est-ce que la taille de fenêtre SMPP et comment la régler ?

La fenêtre est le nombre de requêtes submit_sm que vous pouvez avoir en attente, envoyées mais pas encore acquittées. La spécification SMPP autorise les requêtes asynchrones mais laisse la limite à l'implémentation. Une règle pratique : fenêtre au moins égale au TPS visé multiplié par le temps d'aller-retour en secondes, puis ne l'augmentez que jusqu'à la limite convenue avec votre fournisseur, car la dépasser provoque du throttling.

De combien de binds SMPP ai-je besoin pour un haut volume ?

Cela dépend de votre débit de pointe, de la limite par bind convenue avec votre fournisseur et de vos besoins de redondance. Divisez le TPS de pointe par le débit convenu par bind, arrondissez au supérieur et ajoutez au moins un bind de réserve pour qu'une connexion coupée n'arrête pas l'envoi. Gardez le trafic OTP sur ses propres binds ou comptes. Les binds sont provisionnés par compte.

Que faire en cas de réponse ESME_RTHROTTLED ?

Ralentissez. La spécification définit ESME_RTHROTTLED (0x58) comme le dépassement par l'émetteur des limites de messages autorisées. Suspendez ou réduisez les soumissions, réessayez les messages rejetés avec un délai exponentiel et de la variation aléatoire (jitter), et ne réessayez jamais en boucle serrée, ce qui prolonge le throttling. Si cela arrive régulièrement, votre fenêtre ou votre débit dépasse la limite convenue.

Comment gérer des millions d'accusés de réception ?

Acquittez chaque deliver_sm par un deliver_sm_resp immédiatement, placez l'accusé dans une file et traitez-le de façon asynchrone vers un stockage indexé par identifiant de message. Rendez le traitement idempotent, car les accusés peuvent être répétés. Exécutez les consommateurs d'accusés séparément du chemin de soumission et surveillez leur retard.

Puis-je envoyer des SMS promotionnels la nuit ?

Pas dans plusieurs marchés. Les Émirats interdisent les SMS marketing de 21:00 à 07:00 et l'Arabie saoudite de 22:00 à 09:00, et de 01:00 à 12:00 pendant le Ramadan. Programmez les promotions selon l'heure locale de chaque destinataire et envoyez les OTP et alertes séparément, car ils ne sont pas promotionnels.

Sources

  1. SMPP Protocol Specification v3.4, SMPP Developers Forum
  2. 3GPP TS 23.040: Technical realization of the Short Message Service (SMS)
  3. TDRA spam policy, UAE
  4. CST Regulations for Curbing SPAM Messages and Calls, Saudi Arabia