Was ist eigentlich ein Segment?

March 02, 2017
Autor:in:

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

- Acquisition Announcement

- Why Twilio acquired Segment

Sie haben die perfekte Textnachricht verfasst. Der Inhalt eines Romans, verpackt in einer SMS, die eines Gedichts würdig ist. Ihre Kampagne verläuft reibungslos. Als Sie dann einen Blick auf Ihre Kosten werfen, stellen Sie fest, dass sie viermal so hoch sind als erwartet.  Das lässt Sie grübeln: Was ist eigentlich ein Segment und warum werden mir so viele davon in Rechnung gestellt?

Wir werden uns die SMS-Standards genauer ansehen, um Ihnen diese Frage zu beantworten. Um folgende Themen geht es in diesem Blogbeitrag:

Nachrichtensegmente am Beispiel eines älteren Nokia-Modells erklärt

Erinnern Sie sich noch daran, als Sie Ihre ersten SMS auf einem guten alten, unzerstörbaren Nokia geschrieben haben? Beim Tippen der Nachricht auf der T9-Tastatur ist Ihnen vielleicht ein Zähler aufgefallen, der neben einer 1 von 160 herunterzählt. Erreicht dieser Zähler 0, springt die 1 neben der 160 auf eine 2.
Das bedeutet, Ihnen werden zwei Nachrichten in Rechnung gestellt. Die erste Zahl zeigt an, wie viele Zeichen pro Segment übrig sind. Die zweite Zahl zeigt die Anzahl der verwendeten Segmente an.

Was sich seitdem an Segmenten geändert hat

Die SMS-Standards haben sich seitdem kaum geändert. Nachrichten werden nach wie vor in Abschnitten mit einer Größe von 140 Byte, den so genannten Nachrichtensegmenten, gesendet.

Wenn Twilio für den Versand von SMS-Nachrichten mit Netzbetreibern kommuniziert, senden wir diese segmentweise. Um herauszufinden, wie viele Zeichen Ihnen dabei zur Verfügung stehen, müssen wir ein bisschen rechnen.

Mit etwas Mathematik Segmente besser verstehen

Für die Kodierung einer Standard-SMS wird der Zeichensatz GSM 03.38 verwendet, der ein Zeichen mit 7 Bits kodiert. 140 Bytes x 8 Bits in einem Byte geteilt durch 7 Bits ergeben ein Nachrichtensegment von 160 Zeichen.

Unter Nachrichtensegment verstehen wir die Art und Weise, wie Twilio (und die gesamte SMS-Branche) Nachrichten zählt.

Bei der Analyse des SMS-Durchsatzes sollten Sie also nicht nur die Kosten, sondern auch die Segmente berücksichtigen. Der Durchsatz hängt von der verwendeten Sendenummer ab. Er wird immer anhand der Nachrichtensegmente pro Sekunde und nicht basierend auf den Gesamtnachrichten berechnet.

Wenn Sie Ihre Nachricht in einem bestimmten Zeitfenster senden müssen, sollten Sie wissen, aus wie vielen Segmenten sie besteht.

Wie verhält sich die perfekte Nachricht?

Kommen wir zurück zu Ihrer perfekten Textnachricht. Sie zählen die Zeichen, aber irgendetwas scheint immer noch nicht zu stimmen. Sie haben nur 210 Zeichen verwendet. Jede dieser Nachrichten scheint aber mehr als zwei Segmente zu haben.

Vier Segmente wegen der UCS-2-Kodierung

Das liegt zum Teil an der Kodierung. Beachten Sie, dass bei dieser Nachricht als Kodierung UCS2 und nicht GSM angegeben ist. Um eine so kleine Nachricht wie diese unterzubringen, muss Twilio einen anderen Zeichensatz verwenden. Wenn Sie auf den GSM-Link weiter oben geklickt haben, ist Ihnen vielleicht aufgefallen, dass der Zeichensatz kein ? enthält. Wenn Sie Nachrichten mit Nicht-GSM-Zeichen wie Emojis senden, müssen wir eine andere Art der Kodierung verwenden, nämlich UCS-2. UCS2 benötigt 16 Bits, um jedes Zeichen zu kodieren. Wenden wir jetzt das obige Rechenbeispiel an, ergibt sich eine Begrenzung von 70 Zeichen (140 Bytes * 8 Bits in einem Byte geteilt durch 16 Bits). Neben Emojis sollten Sie auch mit Akzentbuchstaben vorsichtig sein. GSM 03.38 enthält einige Akzentzeichen wie ñ, à und ö, aber kein á, í oder ú.

Was genau macht ein Data Header?

Dennoch sieht es so aus, als ob die Nachricht bei dieser 70-Zeichen-Beschränkung nur aus drei und nicht aus vier Segmenten bestehen sollte. Das fehlende Puzzleteil heißt in diesem Fall Verkettung. Wenn Sie Nachrichten mit mehreren Segmenten senden, teilt Twilio dem Ziel mit User Data Header mit, wie diese wieder zusammengesetzt werden sollen. Das kostet 6 Bytes pro Nachricht. Bei UCS2-kodierten Nachrichten stehen dann nur noch 67 Zeichen und bei GSM-kodierten Nachrichten nur noch 153 Zeichen zur Verfügung.

Vielleicht sollten Sie auf die Feuer-Emojis lieber verzichten. Doch selbst wenn Sie die gleiche Nachricht kürzen und erneut senden, scheint die Rechnung immer noch nicht aufzugehen:

Drei SMS-Segmente aufgrund von Kodierung

Diese Nachricht enthält zwei häufige Fehler, die zu Kodierungsproblemen führen: typografische Anführungszeichen und Nicht-GSM-Leerzeichen. Sehen Sie sich diese Nachricht an. Sie scheint fast identisch zu sein:

1 GSM-7-kodiertes Segment

Es wurden nur drei Zeichen ausgetauscht: Die Leerzeichen zwischen den Sätzen wurden von ‚ ' zu ‚ ’ (U+2002 zu U+0020) geändert und das „typografische Anführungszeichen“ nach Shakespeare wurde durch ein Standard-Apostroph ´ ersetzt (U+2019 zu U+0027). Typografische Anführungszeichen sind in der Regel das Ergebnis von Texteditoren, die es zu gut meinen. Nicht-GSM-Leerzeichen entstehen beim Kopieren und Einfügen. Seien Sie bei diesen besonders vorsichtig, da sie zum Anzeigen oft in herkömmliche Leerzeichen umgewandelt werden. Das ist zum Beispiel in der twilio.com-Konsole der Fall. Nachrichtentexte, die Nicht-GSM-Leerzeichen in der API enthalten, werden für die Anzeige als normale U+0020-Leerzeichen formatiert.

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:

Vor dem Senden von Nachrichten sollten Sie sich über den Zeichensatz bewusst sein. Bestimmte Nachrichten können Sie mit folgender App vorab überprüfen: https://twiliodeved.github.io/message-segment-calculator/.

Nachdem Sie diesen Blogbeitrag gelesen haben, sind Sie bestens gewappnet, um zu entscheiden, ob sich Emojis lohnen. Sie wissen, dass Sie typografische Anführungszeichen und Nicht-GSM-Leerzeichen vor dem Senden entfernen sollten und dass Sie Segmente vor und nicht nach einer Kampagne genau zählen.