Le principe
La file d'attente est persistante, la passerelle est optionnelle.
Chaque message est écrit en base — destinataire, texte exact, origine — avant toute tentative d'envoi. Trois conséquences :
- sans passerelle raccordée, rien n'est perdu : les messages restent en attente et s'exportent pour un envoi par un autre canal ;
- un échec est visible, motivé et attribué, jamais silencieux ;
- ce qui a été envoyé reste consultable mot pour mot.
Ce que cette conception refuse : afficher « campagne envoyée » quand rien n'est parti. Une alerte sanitaire qui affirme avoir prévenu doit pouvoir montrer à qui, quand, et avec quel texte.
Raccorder une passerelle
Trois variables d'environnement, posées sur le service :
| Variable | Rôle |
|---|---|
SMS_PASSERELLE_URL | Point d'entrée HTTP acceptant un POST JSON |
SMS_PASSERELLE_JETON | Jeton porté en en-tête Authorization |
SMS_EXPEDITEUR | Nom d'expéditeur affiché (optionnel) |
Aucun identifiant n'est stocké en base : une passerelle se change sans migration, et un secret n'a rien à faire dans une table consultable. Tant que ces variables manquent, l'écran le dit et nomme précisément ce qui manque.
Les numéros ne sont pas devinés
Un numéro est normalisé au format international sénégalais, ou rejeté. Une passerelle facture chaque tentative, et un envoi vers un mauvais numéro n'est pas rattrapable. Les bergeries dont le numéro est inexploitable sont comptées et signalées : elles devront être appelées à la main.
Le coût est une contrainte de rédaction
Un SMS tient en 160 caractères — mais un seul caractère hors de l'alphabet GSM 7 bits, un accent ou un tiret cadratin, fait basculer tout le message en UCS-2, où un segment ne vaut plus que 70 caractères.
Sur l'alerte de démonstration, l'écart n'est pas cosmétique :
| Rédaction | Encodage | Segments | Coût sur 137 destinataires |
|---|---|---|---|
| Avec accents | UCS-2 | 4 | 548 SMS |
| Translittérée | GSM-7 | 2 | 274 SMS |
Les messages sortants sont donc translittérés en GSM-7 : « Clavelee » et non « Clavelée ». Ce n'est pas une négligence typographique, c'est ce qui divise la facture par deux. Le référentiel, les écrans et le registre, eux, restent accentués.
Le nombre de caractères et de segments est affiché à côté de chaque message.
Réexécutable, et annulable
Préparer deux fois les notifications d'une alerte ne redémarche pas les bergeries déjà en file : prévenir deux fois n'est pas prévenir mieux, et sur une passerelle facturée au message, c'est une dépense sans objet.
Annuler ne supprime pas : le message reste consultable, avec son texte et son état.
La sortie de secours
La file s'exporte en CSV — numéro au format international et texte mot pour mot — pour un envoi par le moyen dont on dispose. L'en-tête du fichier porte l'avertissement : ces messages n'ont PAS été envoyés par la plateforme.
Un dispositif d'alerte qui dépend d'un contrat de service pour exister n'est pas un dispositif d'alerte.
Voir : Espace vétérinaire.