Chaque SMS qui quitte votre passerelle suit le même chemin : il entre dans la file d'attente, la passerelle choisit un téléphone et une SIM capables de l'envoyer tout de suite, le téléphone le remet à l'opérateur, et son statut suit ce qui se passe ensuite. Cette page explique comment envoyer, comment suivre ce que vous avez envoyé, et ce que la passerelle fait d'elle-même quand quelque chose se passe mal.
Les façons d'envoyer
| Façon | Où | Usage typique |
|---|---|---|
| Envoi rapide | Écran Envoi rapide | Un message vers un numéro, un petit groupe ou une liste collée |
| Réponse | Écran Conversations | Répondre à un correspondant dans son fil |
| Campagne | Écran Campagnes | Un message à tout un groupe, cadencé, avec statistiques |
| API | POST /messages |
Vos logiciels envoient : confirmations de commande, codes, rappels |
| Réponse automatique | Écran Règles et Paramètres > Auto-répondeur | La passerelle répond d'elle-même quand un message correspond à une règle |
Toutes partagent la file, le routage, les quotas et les nouvelles tentatives décrits plus bas. Les campagnes sont le seul trafic retenu par les pauses de nuit et du dimanche.
Voir aussi : Conversations, Campagnes, Automatisation et le guide de l'API.
Envoi rapide
L'Envoi rapide envoie un message, immédiatement ou plus tard, à un ou plusieurs destinataires.
Choisir les destinataires
Choisissez l'un des trois modes sous Destinataires :
| Mode | Ce que vous saisissez |
|---|---|
| Numéro unique | Un numéro au format international, par exemple +261341234567 |
| Groupe de contacts | Un groupe de votre répertoire. Les contacts désinscrits sont écartés automatiquement |
| Liste collée | Un numéro par ligne, copié d'un tableur ou d'un autre outil. Les virgules et les points-virgules séparent aussi les numéros |
Les numéros se lisent au format international : un + suivi de l'indicatif du pays. Un numéro
écrit avec 00 au lieu de + est accepté et converti, et les espaces, points, tirets et parenthèses
sont ignorés. Un numéro sans indicatif (0341234567) n'est pas reconnu.
Pendant la saisie, l'écran compte les destinataires valides et les lignes ignorées, format non reconnu. Un même numéro collé deux fois n'est envoyé qu'une fois.
En mode Groupe de contacts, l'écran lit le groupe entier avant l'envoi, quel que soit son nombre de membres, et affiche le nombre réel de destinataires, ainsi que les contacts désinscrits écartés. Le bouton Envoyer attend la fin du comptage. Si le groupe ne peut pas être lu, un message le signale avec un bouton Réessayer.
Limites. Un envoi rapide accepte 500 destinataires au maximum, groupe entier compris. Au-delà, l'écran le signale (pour un groupe : « Ce groupe compte 1 250 contacts, plus que les 500 destinataires d'un envoi rapide »), refuse l'envoi et propose une campagne, conçue pour les gros envois : elle cadence le trafic, respecte la pause de nuit et vous donne des statistiques. Rien n'est jamais envoyé à une partie seulement d'un groupe.
Rédiger le message
Le compteur sous le message indique le nombre de caractères, le nombre de SMS qu'il coûtera et l'encodage :
| Encodage | Quand | Un SMS contient | Découpé en parts de |
|---|---|---|---|
| GSM-7 | Seulement des lettres latines simples, des chiffres et la ponctuation courante | 160 caractères | 153 caractères |
| Unicode | Dès qu'un caractère sort de cet ensemble (emoji, certaines lettres accentuées, alphabets non latins) | 70 caractères | 67 caractères |
Un message long n'est jamais refusé : il est découpé en plusieurs SMS que le téléphone du destinataire réassemble. Mais chaque partie est facturée par votre opérateur et compte dans le quota journalier de la SIM. L'écran vous avertit au-delà de six SMS par destinataire, et affiche le total, par exemple « 3 messages, 6 SMS au total ».
Raccourcir et suivre les liens
Sous le message, l'interrupteur Raccourcir et suivre les liens (désactivé par défaut) remplace
chaque adresse qui commence par http:// ou https:// par un lien court servi par votre passerelle,
qui compte les clics. Le remplacement a lieu au clic sur Envoyer ; la même adresse écrite deux
fois donne un seul lien, partagé par tous les destinataires. L'écran vous indique combien de liens
seront fabriqués et comment la longueur change (caractères et SMS par destinataire, avant et après),
et le compteur comme le coût total sont calculés sur le texte avec ses liens courts. Les liens
apparaissent ensuite dans Liens courts. Voir Liens courts.
Choisir le téléphone et l'heure
| Champ | Par défaut | Effet |
|---|---|---|
| Appareil émetteur | Automatique | Automatique laisse la passerelle choisir le téléphone et la SIM (voir Routage). Désigner un téléphone l'impose : le message part de ce téléphone ou ne part pas |
| Date et heure d'envoi | Vide (maintenant) | Programme l'envoi. La date se lit dans le fuseau de la plateforme, indiqué sous le champ, et doit être dans le futur |
Cliquez sur Envoyer. La confirmation « N messages acceptés par la passerelle » signifie que les messages sont dans la file, pas encore remis. Derniers envois, en bas de l'écran, liste vos derniers messages sortants avec leur statut en direct.
Un message programmé attend dans la file avec le statut En file et la mention « Programmé pour » sa date. Il part à cette heure-là, de jour comme de nuit : la pause de nuit ne s'applique pas à lui.
La file d'attente
L'écran File d'attente liste les messages et permet de relancer ceux qui ne sont pas partis. Il s'ouvre filtré sur les messages en Échec, puisque ce sont eux qui ont besoin de vous.
| Commande | Usage |
|---|---|
| Filtre Statut | Afficher un statut, ou tous |
| Filtre Appareil | Afficher les messages d'un téléphone |
| Filtre Sens | Sortant, Entrant, ou les deux |
| Recherche | Retrouver un message par des mots de son contenu |
| Relancer la sélection | Cocher des messages et les relancer d'un coup |
| Exporter la vue en CSV | Télécharger ce que montrent les filtres en cours |
Les colonnes montrent le Statut, le Destinataire, l'Appareil qui a porté le message, le nombre de Tentatives, la date de création et le Motif d'un échec ou d'une annulation.
Le Motif est une phrase dans votre langue, la même que dans la conversation et dans le
journal d'activité, par exemple « La SIM ne captait pas le réseau. » ou
« Retiré avant son départ : sa campagne a été annulée. ». Survolez-le pour voir le code technique
(NO_SERVICE, CAMPAIGN_CANCELLED...), celui que l'API renvoie dans errorCode. Un code que le
tableau de bord ne connaît pas encore, remonté par une version plus récente de l'application du
téléphone, s'affiche « Le téléphone ou la passerelle a signalé une erreur (CODE). ».
Quand des messages attendent le quota journalier d'une SIM, un bandeau en haut de l'écran indique combien, avec un lien Modifier les quotas vers l'écran Appareils.
Un message En file qui attend le rythme de ses SIM le dit sous son statut, avec l'heure de son prochain essai : « En attente de la cadence de la SIM, nouvel essai à 14:32 » (intervalle minimal) ou « En attente de la limite par minute des SIM ». Rien n'est en panne : il part de lui-même à cette heure-là.
Les statuts
| Statut | Ce qu'il signifie |
|---|---|
| En file | Accepté, il attend son tour, son heure programmée, une nouvelle tentative, ou le rythme de sa SIM |
| Transmis | Remis à un téléphone, qui n'a pas encore confirmé que le réseau l'a pris |
| Envoyé | Le téléphone confirme que l'opérateur a accepté le SMS |
| Reçu | L'opérateur confirme que le SMS est arrivé sur le téléphone du destinataire |
| Échec | Le message a abandonné. La colonne Motif dit pourquoi. Il peut être relancé |
| Quota atteint | Toutes les SIM qui pouvaient le porter ont épuisé leur quota du jour. Il part à minuit UTC, ou dès qu'un quota est relevé |
| En pause | Un message de campagne retenu par la pause de nuit ou du dimanche. Il part à la fin de la pause |
| Annulé | Retiré avant son départ, par exemple parce que le destinataire s'est désinscrit entre-temps. Il ne peut pas être relancé |
Envoyé n'est pas Reçu. « Reçu » dépend d'un accusé de réception de l'opérateur du destinataire. Certains opérateurs n'en envoient pas, ou tardivement : un message peut rester Envoyé alors qu'il a bien été reçu. Un accusé négatif, en revanche, est définitif : le message passe en Échec.
Nouvelles tentatives
Quand un envoi se passe mal, la passerelle n'abandonne pas tout de suite. Ce qu'elle fait dépend de la cause :
| Ce qui s'est passé | Ce que fait la passerelle | Compte comme une tentative |
|---|---|---|
| Le téléphone signale que le réseau a refusé le SMS | Attend, puis réessaie, éventuellement depuis un autre téléphone | Oui |
| Le téléphone n'a pas confirmé dans le délai d'accusé | Remet le message dans la file et réessaie | Oui |
| Aucun téléphone ne peut envoyer (tous hors ligne ou hors du pool) | Attend, puis réessaie | Oui |
| Le téléphone qui portait le message est passé hors ligne | Remet aussitôt le message dans la file, pour un autre téléphone | Non |
| Toutes les SIM utilisables ont atteint leur quota du jour | Le passe en Quota atteint jusqu'à minuit UTC ou jusqu'à ce qu'un quota soit relevé | Non |
| Toutes les SIM utilisables ont atteint leur limite par minute | Le garde En file et l'envoie la minute suivante | Non |
| Aucune SIM utilisable n'a attendu son intervalle minimal depuis son dernier SMS | Le garde En file et l'envoie dès que la première SIM est libre | Non |
| Une règle de routage stricte correspond et aucune de ses SIM ne peut envoyer | Le garde En file et réessaie chaque minute | Non |
| L'opérateur renvoie un accusé de réception négatif | Échec, définitif : l'opérateur a rendu son verdict | Pas de nouvelle tentative |
| Le destinataire s'est désinscrit après la mise en file | Annulé | Non |
Quand les tentatives sont épuisées, le message passe en Échec. Le nombre de tentatives et les attentes entre elles se règlent dans Paramètres > Envoi (voir Options).
Dans l'API, le champ errorCode d'un message en échec ou annulé en donne la raison. La colonne
Motif affiche ces mêmes codes sous forme de phrases :
errorCode |
Posé par | Signification |
|---|---|---|
DEVICE_OFFLINE |
Passerelle | Aucun téléphone n'a pu porter le message avant l'épuisement de ses tentatives |
MAX_ATTEMPTS_REACHED |
Passerelle | Toutes les tentatives ont été consommées, typiquement par des téléphones qui n'ont jamais confirmé |
DEVICE_ERROR |
Passerelle | Le téléphone a signalé un échec sans en donner la raison |
DELIVERY_FAILED |
Passerelle | L'opérateur a renvoyé un accusé de réception négatif |
CAMPAIGN_CANCELLED |
Passerelle | Annulé : la campagne à laquelle il appartenait a été annulée avant son départ |
CONTACT_BLACKLISTED |
Passerelle | Annulé : le destinataire s'est désinscrit avant son départ |
NO_SERVICE |
Téléphone | La SIM n'avait pas de réseau |
RADIO_OFF |
Téléphone | La radio mobile du téléphone est coupée (mode avion) |
GENERIC_FAILURE |
Téléphone | L'opérateur a refusé le SMS, le plus souvent par manque de crédit |
NULL_PDU |
Téléphone | Le téléphone n'a pas pu encoder le message |
RADIO_ERROR_<n> |
Téléphone | Une autre erreur radio ; n est le numéro d'erreur donné par Android |
NO_SMS_MANAGER |
Téléphone | Ce téléphone ne peut pas envoyer de SMS, par exemple sans SIM |
INVALID_ARGUMENT |
Téléphone | Le téléphone a refusé le message comme mal formé, souvent un numéro erroné |
PERMISSION_DENIED |
Téléphone | L'application n'a pas le droit d'envoyer des SMS : accordez l'autorisation sur le téléphone |
ORDER_EXPIRED |
Téléphone | Le téléphone a reçu l'ordre trop tard pour l'envoyer |
Traitez tout autre code comme un échec générique : une version plus récente de l'application du téléphone peut en ajouter.
Relancer à la main
Un message en Échec, Quota atteint ou En pause peut être relancé :
- depuis la File d'attente, en le cochant puis en cliquant sur Relancer la sélection ;
- depuis sa conversation, avec Réessayer sous le message en échec ;
- par l'API, avec
POST /messages/{messageId}/retry.
Un message relancé part aussitôt, sans attendre la tentative programmée suivante. Il est refusé si le destinataire s'est désinscrit entre-temps. Les messages Reçu, Envoyé et Annulé ne se relancent pas : ce serait les envoyer deux fois.
Cadence des SIM
Vous pouvez imposer à chaque SIM un nombre minimal de secondes entre deux SMS, dans Paramètres > Envoi, champ Intervalle minimal entre deux SMS par SIM, en secondes. Une SIM qui envoie à un rythme régulier, humain, ressemble moins à une source de spam aux yeux de son opérateur qu'une SIM qui envoie en rafale.
Comment cela fonctionne.
- Il s'applique à tous les SMS, quelle que soit leur origine : API, envoi rapide, campagne, réponse de conversation, réponse automatique, alerte par SMS, et nouvelles tentatives.
- L'intervalle se compte à partir du moment où la passerelle remet le SMS au téléphone, pas de la confirmation du téléphone ni de l'accusé de réception.
- Vous n'avez jamais rien à attendre : vous pouvez envoyer 50 messages d'un coup, ils sont tous acceptés, attendent dans la file en En file, et partent d'eux-mêmes, l'un après l'autre, dès que leur SIM est libre. L'écran File d'attente les affiche « En attente de la cadence de la SIM » avec l'heure de leur prochain essai.
- Chaque SIM a sa propre horloge. Une SIM qui attend ne retient jamais une autre SIM, pas même la seconde SIM du même téléphone : avec deux SIM et 30 secondes, deux SMS partent toutes les 30 secondes.
- Un message adressé à un téléphone précis (
deviceId) le garde pendant qu'il attend. - L'attente ne consomme aucune tentative. Une nouvelle tentative après un échec attend elle aussi l'intervalle si nécessaire.
- Le délai d'accusé commence quand le SMS est remis au téléphone : un message qui attend sa SIM n'expire donc jamais dans la file.
- La passerelle consulte la file toutes les deux secondes : un message part environ deux secondes au plus après la fin de l'intervalle.
- Les messages qui attendent leur SIM partent dans l'ordre. Il n'y a pas de priorité : une alerte attend comme n'importe quel SMS, mais un message arrivé pendant l'attente des autres prend le prochain créneau libre.
Une SIM avec sa propre valeur. Dans Appareils, le crayon à côté d'une SIM ouvre une fenêtre
où Intervalle propre à cette SIM remplace le réglage pour cette SIM seulement
(Superadministrateur). 0 signifie aucune attente sur cette SIM, même quand le réglage en demande
une ; désactiver l'interrupteur fait de nouveau suivre le réglage à la SIM. Une nouvelle valeur vaut
pour le SMS suivant ; les messages qui attendent déjà gardent leur heure.
Comment il se combine avec les autres limites. Chaque limite doit autoriser l'envoi ; la plus stricte l'emporte.
| Limite | Où | Ce qu'elle plafonne |
|---|---|---|
| Intervalle minimal entre deux SMS par SIM | Paramètres > Envoi, ou par SIM dans Appareils | L'écart entre deux SMS sur une SIM |
| Messages par minute et par SIM | Paramètres > Envoi | Le nombre de SMS sur une SIM en une minute |
| Cadence et Taille de vague d'une campagne | Chaque campagne | La vitesse à laquelle la campagne libère ses messages, toutes SIM confondues |
| Quota journalier de la SIM | Appareils | Le nombre de SMS sur une SIM en un jour (minuit UTC) |
Exemples : avec un intervalle de 10 secondes, une SIM envoie au plus 6 SMS par minute ; une limite par minute de 6 ou plus ne change donc rien, et une limite plus basse (3, par exemple) s'applique toujours. Une campagne à 60 messages par minute sur deux SIM avec un intervalle de 30 secondes envoie en réalité 4 messages par minute : c'est l'intervalle qui limite. Le quota journalier compte toujours chaque SMS.
À 0, la valeur par défaut, l'intervalle n'ajoute aucune attente : la passerelle se comporte comme
avant.
Pauses de nuit et du dimanche : les campagnes seulement
Vous pouvez interdire aux campagnes d'envoyer la nuit et le dimanche, dans Paramètres > Envoi, sous Pause nocturne des campagnes. Un message de campagne dû pendant une pause passe En pause et part automatiquement à la fin de la pause.
Ces pauses ne retiennent que les campagnes. Un envoi rapide, un appel d'API, une réponse de conversation ou une réponse automatique part à toute heure : quelqu'un l'attend. Une campagne est le seul trafic que personne n'a demandé à ce moment-là, et un SMS promotionnel à trois heures du matin vous coûte plus de sympathie qu'il ne rapporte.
Les heures se lisent dans le fuseau de la plateforme, réglé dans le même onglet. Ce fuseau gouverne aussi l'heure des envois programmés et l'affichage des dates dans le tableau de bord. Ce n'est pas l'heure de chaque téléphone : l'en-tête affiche l'heure locale de vos téléphones et vous prévient quand l'un d'eux vit à une autre heure (voir Appareils).
Suivre l'activité
Le Tableau de bord montre combien de messages sont partis et arrivés, dans le graphique Activité des 24 dernières heures. Choisissez la période avec les boutons 24 h, 7 j, 30 j et 90 j : le graphique affiche alors une barre par heure, par tranche de six heures, ou par jour. Chaque barre empile les messages sortants et les entrants, et la carte donne les totaux de la période. Survolez ou touchez une barre pour les heures exactes de la tranche.
Un message compte à sa création (sa mise en file pour un sortant, sa réception par le téléphone pour un entrant), quel que soit son statut depuis. Les comptes portent sur tous les messages de la période, pas sur un échantillon. Les tranches suivent le fuseau de la plateforme, changement d'heure compris. Le graphique se rafraîchit chaque minute.
Par l'API, GET /messages/stats?period=24h (ou 7d, 30d, 90d) renvoie les mêmes comptes. Il ne
renvoie jamais le texte d'un message ni un numéro.
Options
Les réglages d'envoi se trouvent dans Paramètres > Envoi, sont réservés au Superadministrateur, et s'appliquent au message suivant sans aucun redémarrage.
| Option | Par défaut | Valeurs admises | Effet |
|---|---|---|---|
| Réessayer en cas d'échec | Activé | Activé ou désactivé | Désactivé, le premier échec est définitif : chaque message n'a qu'une tentative, quoi que dise Nombre maximum de tentatives |
| Nombre maximum de tentatives | 4 | 1 à 10 | Combien de fois un message est essayé avant l'Échec. Seules les causes marquées « Oui » dans le tableau des nouvelles tentatives consomment une tentative |
| Attentes entre tentatives, en secondes, séparées par des virgules | 30, 120, 600, 3600 |
1 à 10 valeurs, chacune de 1 seconde à 86 400 (un jour) | La première valeur est l'attente après le premier échec, la deuxième après le deuxième, et ainsi de suite. La dernière valeur s'applique à toutes les tentatives au-delà de la liste |
| Délai d'accusé de l'appareil, en secondes | 120 | 10 à 3 600 | Combien de temps un message Transmis attend la confirmation du téléphone avant de retourner dans la file. Trop court, les téléphones lents voient leurs messages retentés (et parfois envoyés deux fois) ; trop long, un téléphone muet retient ses messages plus longtemps |
| Messages par minute et par SIM | 0 (sans limite) | 0 à 600 | Plafonne le rythme de chaque SIM. Une SIM à sa limite est sautée par le routage et la passerelle en utilise une autre ; si toutes sont à leur limite, le message attend la minute suivante sans consommer de tentative. Une rafale de centaines de SMS en une minute est ce que les opérateurs repèrent en premier, bien avant le volume du jour |
| Intervalle minimal entre deux SMS par SIM, en secondes | 0 (aucune attente) | 0 à 3 600 | Le temps minimal que chaque SIM attend entre deux SMS, compté à partir de la remise du SMS au téléphone. Les messages attendent dans la file et partent d'eux-mêmes ; une SIM occupée ne retient jamais une autre SIM. Une SIM peut avoir sa propre valeur dans Appareils. Voir Cadence des SIM |
| Fuseau horaire | UTC | N'importe quel fuseau de la liste | Heures de la pause de nuit, définition du dimanche, heure des envois programmés, affichage de toutes les dates du tableau de bord. Il ne déplace pas la remise à zéro des quotas journaliers, qui reste à minuit UTC |
| Pause nocturne des campagnes | Désactivé | Activé ou désactivé | Activé, les messages de campagne dus entre De et À sont retenus En pause |
| De, À | 20:00, 07:00 | Heures et minutes ; la pause peut passer minuit, les deux doivent différer | Début et fin de la pause de nuit, dans le fuseau de la plateforme |
| Suspendre les campagnes le dimanche | Désactivé | Activé ou désactivé | Activé, les messages de campagne sont retenus tout le dimanche, de minuit à minuit dans le fuseau de la plateforme |
Autres réglages qui changent ce que vous envoyez :
- le quota journalier, l'interrupteur en service et l'intervalle propre de chaque SIM, dans Appareils (voir Appareils) ;
- les règles de routage, qui choisissent la SIM selon le début du numéro (voir Routage).
Champs de l'API POST /messages
| Champ | Par défaut | Effet |
|---|---|---|
to |
Obligatoire | Un numéro, ou une liste de 1 à 500 numéros au format international |
body |
Obligatoire sauf avec templateId |
Le texte. Aucune limite de longueur : un texte long est découpé en plusieurs SMS |
templateId, variables |
Aucun | Utiliser un modèle enregistré et remplir ses variables (voir Modèles) |
deviceId |
Aucun (automatique) | Impose le téléphone. Le message part de lui ou ne part pas ; les règles de routage ne sont pas consultées |
simSlot |
Aucun (automatique) | 0 ou 1 : la SIM de ce téléphone |
scheduledAt |
Aucun (maintenant) | Date et heure de l'envoi, dans le futur |
shortenLinks |
false |
true remplace chaque adresse http:// ou https:// du texte par un lien court suivi avant la mise en file, comme l'interrupteur Raccourcir et suivre les liens (voir Liens courts) |
L'en-tête Idempotency-Key protège un envoi à un seul destinataire contre une double mise en file
quand votre logiciel rejoue une requête après une erreur réseau.
La requête est vérifiée en entier avant toute mise en file : si un destinataire est invalide ou désinscrit, la requête est refusée et rien n'est envoyé, ce qui vous permet de toujours savoir quoi rejouer.
Dépannage
| Symptôme | Ce qu'il faut vérifier |
|---|---|
| Des messages restent En file | Un téléphone est-il En ligne dans Appareils, et dans le pool de routage ? S'agit-il d'un message programmé ? Une règle de routage stricte attend-elle un téléphone hors ligne ? |
| Des messages restent En file avec « En attente de la cadence de la SIM » | L'intervalle minimal entre deux SMS par SIM est actif. Ils partent d'eux-mêmes, un par SIM et par intervalle. Réduisez-le dans Paramètres > Envoi, ou donnez à une SIM sa propre valeur dans Appareils |
| Des messages passent en Quota atteint | Toutes les SIM utilisables ont épuisé leur quota du jour. Relevez un quota dans Appareils, ou attendez minuit UTC |
| Des messages de campagne sont En pause | La pause de nuit ou du dimanche est active. Ils partiront à la fin de la pause |
| Des messages restent Transmis un moment, puis sont retentés | Le téléphone ne confirme pas : vérifiez sa connexion et ses réglages de batterie |
Beaucoup d'Échec avec NO_SERVICE ou GENERIC_FAILURE |
La SIM n'a pas de signal, plus de crédit, ou son opérateur refuse : vérifiez-la dans le téléphone |
| Des messages restent Envoyé, jamais Reçu | L'opérateur n'envoie pas d'accusés de réception. Le message a très probablement été reçu |
| « Ce numéro est désinscrit. » | Le destinataire a envoyé STOP, ou a été désinscrit à la main. Voir Contacts et groupes |
| « La date programmée doit être dans le futur. » | La date est passée dans le fuseau de la plateforme. Vérifiez le fuseau indiqué sous le champ |