Pourquoi un seul accent peut tripler votre facture SMS
Un texte de 160 caractères, c'est un message. Ajoutez-y un ç minuscule et vous en payez trois. Comment les segments SMS fonctionnent vraiment, et ce que nous faisons pour que le décompte reste honnête.
Tous les tarifs SMS que vous avez vus, les nôtres compris, sont établis par segment et non par message. Chez nous, c'est 0,03 $ CAD. La plupart des gens découvrent ce qu'est un segment en lisant une facture, c'est-à-dire au pire moment possible.
Les règles derrière tout cela sont anciennes, un peu absurdes et parfaitement déterministes. Une fois que vous les connaissez, vous pouvez prévoir chaque frais avant d'appuyer sur envoyer.
D'où vient le 160
Le SMS a été conçu pour voyager dans la capacité résiduelle du canal de signalisation que les téléphones utilisaient déjà pour communiquer avec les tours cellulaires, et l'espace disponible était de 140 octets. Pour y faire tenir plus de texte, la norme emploie un alphabet sur 7 bits appelé GSM-7 plutôt que les caractères sur 8 bits auxquels on s'attendrait. 140 octets à 7 bits chacun donnent exactement 160 caractères. Voilà toute la démonstration. Le chiffre n'a pas de raison plus élégante.
Dépassez d'un seul caractère et le message doit être scindé. Chaque partie transporte alors un petit en-tête qui indique au téléphone destinataire comment recoller les morceaux, et cet en-tête occupe l'équivalent de sept caractères dans chaque partie. Un message qui dépasse 160 caractères n'est donc pas facturé par tranches de 160, mais par tranches de 153.
- 160 caractères ou moins : un segment
- de 161 à 306 : deux
- de 307 à 459 : trois, et ainsi de suite par paliers de 153
Autrement dit, un message de 161 caractères coûte exactement le double d'un message de 160. À n'importe quel volume sérieux, retrancher un seul mot représente des économies réelles.
Neuf caractères qui comptent double
L'alphabet GSM-7 a manqué de place pour des symboles pourtant courants. Neuf d'entre eux ont été relégués dans une table d'extension et sont transmis sur deux caractères :
- Le symbole de l'euro €
- Les crochets [ et ]
- Les accolades { et }
- Le tilde ~, la barre verticale |, le circonflexe isolé ^ et la barre oblique inversée \
Un message de 160 caractères contenant un seul symbole d'euro fait deux segments. Rien dans son apparence ne trahit sa longueur. C'est ainsi.
La falaise des 70 caractères
La chute la plus brutale survient lorsque votre texte contient un caractère absent de GSM-7. Il n'y a ni repli partiel ni pénalité par caractère : un seul caractère fautif réencode tout le message en UCS-2, où chaque caractère occupe 16 bits, et la limite tombe de 160 à 70. Les parties scindées passent à 67.
Le coupable évident, c'est l'émoji. Prenons un vrai rappel de rendez-vous :
Rappel : votre rendez-vous avec la Dre Patel est demain à 14 h. Répondez STOP pour vous désabonner.
Cela fait 99 caractères et un seul segment, accents compris : le é et le à ne coûtent rien. Ajoutez un pouce levé à la fin et vous passez à 102 caractères et deux segments, parce que 102 dépasse 70. L'émoji ne vous a pas coûté deux caractères, il vous a coûté un message entier.
Ce qui piège les expéditeurs canadiens
Moins évidentes, mais décisives si vous écrivez en français : les lettres accentuées. GSM-7 en inclut certaines et en écarte d'autres, selon une logique qu'aucun raisonnement ne permet de retrouver. Nous avons fait passer dans notre propre compteur de segments tous les caractères accentués auxquels nous avons pensé. Ceux-ci sont gratuits :
- é è à ì ò ù
- ä ö ü ñ å ø æ ß
- É Ä Ö Ü Ñ Å Ø Æ Ç
Et ceux-ci font tomber le message entier à 70 caractères :
- ç ê î ô û ë ï
- â Â Ê Î Ô Û Ë Ï
- È À Ì Ò Ù
Relisez les deux listes côte à côte. Le É figure dans l'alphabet, le È non. Le Ç y figure, le ç non. Tous les circonflexes en sont exclus, ce qui touche « être », « prêt », « hôpital », « coût » et « s'il vous plaît ». Le À aussi, alors que bien des phrases françaises commencent par cette lettre.
Un chiffre pour fixer les idées : 160 lettres A suivies d'un seul ç minuscule font 161 caractères et sont facturées trois segments. Pas deux. Trois, parce que 161 caractères à 67 par partie donnent trois parties.
Ce que nous faisons
Les opérateurs ne sont pas totalement impitoyables. Le nôtre applique ce qu'on appelle l'encodage intelligent : avant de scinder le message, il remplace quelques centaines de sosies Unicode par leurs équivalents simples. Les guillemets courbes deviennent droits, le tiret long devient un trait d'union, le caractère unique des points de suspension devient trois points, et les espaces insécables deviennent des espaces ordinaires. Ainsi :
Écrit : N’oubliez pas votre pièce … retrait avant 18 h.
Facturé : N'oubliez pas votre pièce ... retrait avant 18 h.Cela compte plus qu'il n'y paraît. Le texte copié depuis un traitement de texte est truffé de guillemets courbes, et sans ce remplacement chacun d'eux ferait tomber le message à 70 caractères. Un message de 1 312 caractères a déjà été estimé à 20 segments par un compteur naïf. Il est parti en 9 segments.
L'essentiel, c'est que nous comptons de la même façon. Notre compteur applique exactement les remplacements de l'opérateur, si bien que le nombre affiché dans l'aperçu du tableau de bord est celui de la facture. Cela paraît évident. Ça ne l'est pas : un estimateur qui ignorerait l'encodage intelligent aurait chiffré ce message à plus du double de son coût réel.
Le plafond
Les opérateurs refusent de scinder un message au-delà de 10 parties. Nous vérifions avant l'envoi : un corps de message trop long revient en erreur et rien n'est facturé. Il n'existe aucun cas où vous payez pour un message qui n'allait jamais arriver.
Règles pratiques
- Écrivez en ASCII simple quand le message le permet, et laissez l'encodage intelligent nettoyer la typographie que vous ne pouvez pas éviter
- Évitez les émojis dans les messages transactionnels. Un seul peut doubler le coût de chaque envoi bâti sur ce modèle
- En français, surveillez le ç, les circonflexes et le À en tête de phrase. Une reformulation qui les évite peut réduire de moitié le coût d'un modèle
- Comptez les caractères de vos modèles, pas ceux de votre message de test. La limite de 160 se fait sentir à grande échelle, pas en test
- Le tableau de bord affiche le nombre de segments pendant que vous écrivez, au moyen de la fonction qui sert aussi à vous facturer
Rien de tout cela n'est une astuce de HonkIO. C'est une décision d'encodage des années 1980 que toute l'industrie répercute encore sur vos factures. Le seul vrai choix d'un fournisseur, c'est de vous l'expliquer ou de vous laisser le découvrir sur la facture.
La page des tarifs en donne la version courte dans la FAQ, et l'aperçu du tableau de bord vous donnera le nombre de segments pour n'importe quel texte que vous y collerez. Si un chiffre vous paraît faux, dites-le-nous et nous le reprendrons avec vous.
HonkIO