Mais c'est quoi, ces segments ?

March 02, 2017
Rédigé par

Looking for information on Twilio Segment, acquired by Twilio in 2020?

- Acquisition Announcement

- Why Twilio acquired Segment

Vous avez conçu le message texte parfait. Le coup d'envoi d'un roman en un seul SMS, digne de Shakespeare. Votre campagne se déroule à merveille. Et alors que vous jetez un œil à vos coûts, vous constatez qu'ils sont quatre fois supérieurs à ce que vous attendiez.  C'est là que vous vous demandez : Mais c'est quoi, ces segments ? Et pourquoi y en a-t-il autant sur ma facture ?

Pour le savoir, il faut revenir aux bases des normes SMS. Voici ce que nous allons voir :

Zoom sur le bon vieux Nokia incassable pour comprendre les segments de message

Vous souvenez-vous des messages que vous envoyiez avec votre vieux Nokia indestructible ? Lorsque vous écriviez sur le clavier T9, vous pouviez voir un compteur qui démarrait à 160 avec le chiffre 1 à côté. Lorsque le compteur atteignait 0, le 1 qui était à côté du 160 devenait un 2.
Vous saviez alors que vous auriez deux messages sur votre facture. Le premier chiffre affichait le nombre de caractères restants par segment et le second affichait le nombre de segments que vous aviez utilisés.

Ce qui a changé dans les segments depuis lors

Les normes SMS ont à peine changé depuis l'époque du Nokia. Les messages sont toujours envoyés par blocs de 140 octets appelés segments de message.

Lorsque Twilio communique avec les opérateurs pour envoyer des SMS, nous leur envoyons un segment à la fois. Pour déterminer le nombre de caractères dont vous disposez, nous allons devoir faire un petit calcul.

Un peu de maths pour mieux comprendre les segments

Le codage SMS standard utilise le jeu de caractères GSM 03.38 qui prend 7 bits pour encoder un caractère. 140 octets × 8 bits dans un octet divisé par 7 bits nous donnent le segment de message à 160 caractères.

Les segments de message servent à Twilio (et à l'industrie du SMS en général) pour compter les messages.

Cela signifie qu'en plus de vos coûts, vous devez également réfléchir en matière de segments lorsque vous analysez le débit SMS. Le débit varie en fonction du numéro d'envoi que vous utilisez, mais dans tous les cas, il est compté en segments de message par seconde plutôt qu'en nombre total de messages.

Si vous tenez à envoyer votre message dans une plage précise, assurez-vous de connaître le nombre de segments que vous envoyez.

Comment se comporte le message parfait ?

Revenons à votre message texte parfait. Vous avez compté les caractères, mais il y a encore quelque chose qui ne va pas. Vous n'avez utilisé que 210 caractères, mais il semble que chacun de ces messages comporte plus de deux segments.

Quatre segments à cause du codage UCS-2

Une partie de la réponse réside dans l'encodage. Vous pouvez voir que l'encodage utilisé est UCS-2 au lieu de GSM. Pour traiter ce message en feu, Twilio doit utiliser un autre jeu de caractères. Vous avez peut-être remarqué que si vous cliquiez sur le lien GSM ci-dessus, il ne contenait pas de « ? ». Lorsque vous envoyez des messages avec des caractères non GSM tels que des emojis, nous devons utiliser un autre type d'encodage appelé UCS-2. UCS-2 utilise 16 bits pour encoder chaque caractère. En revenant aux calculs ci-dessus, nous avons donc une limite de 70 caractères (140 octets × 8 bits dans un octet / 16 bits). Outre les emojis, vous devez également faire attention aux caractères accentués. GSM 03.38 inclut certains caractères accentués tels que ñ, à et ö, mais n'inclut pas d'autres caractères tels que á, í ou ú.

À quoi sert un en-tête de données, exactement ?

Il semblerait qu'avec cette limite de 70 caractères, ce message ne devrait contenir que trois segments, et non quatre. La dernière pièce du puzzle réside dans la concaténation. Lorsque vous envoyez plusieurs segments, Twilio utilise les en-têtes de données utilisateur pour indiquer à la destination comment les réassembler. Cela prend jusqu'à 6 octets par message, ce qui ne laisse que 67 caractères pour les messages encodés en UCS-2 ou 153 pour les messages encodés en GSM.

Après tout, peut-être que les emojis n'en valent pas le coup. Cependant, lorsque vous réduisez le même message et que vous le renvoyez, il y a encore quelque chose qui ne va pas :

Trois segments SMS à cause du codage

Ce message contient deux des « pièges » qui entraînent souvent des problèmes de codage : les guillemets incurvés et les espaces non GSM. Regardez ce message qui semble presque identique :

1 segment encodé en GSM-7

Seuls trois caractères ont été modifiés : les espaces entre les phrases sont passés de «   » à «   » (U+2002 à U+0020) et l'apostrophe incurvée après « Shakespeare » a été remplacée par une apostrophe standard, ’ au lieu de ' (U+2019 à U+0027). Les apostrophes et guillemets incurvés sont généralement le résultat d'éditeurs de texte beaucoup trop avancés. Les espaces non GSM sont généralement le résultat d'un copier-coller. Faites très attention à ces espaces car ils sont souvent convertis en espaces classiques à l'affichage. La console twilio.com en est un exemple : les corps de message qui contiennent des espaces non GSM dans l'API seront formatés en espaces U+0020 standard à l'affichage.

UPDATE: Twilio's Copilot service now includes a Smart Encoding feature which will automatically translate Unicode characters into GSM7/ASCII characters for you if there are GSM7/ASCII alternatives and no characters that can’t be converted in the message, e.g. emoji or language based characters. For more details see these pages:

Il est toujours important de connaître le jeu de caractères avant d'envoyer des messages. Vous pouvez également utiliser l'application suivante pour consulter des messages spécifiques en amont : https://twiliodeved.github.io/message-segment-calculator/.

Grâce à cet article de blog, vous allez pouvoir prendre les bonnes décisions concernant les emojis, vérifier la présence de guillemets incurvés et d'espaces non GSM et compter avec précision les segments, le tout avant de lancer votre campagne et non après.