Verkettung und Kodierung
Wenn Sie eine SMS-Nachricht versenden, müssen Sie auf die Gesamtlänge der Nachricht achten, da diese bestimmt, ob die Nachricht in einem Stück ankommt oder in zwei oder mehr Nachrichten aufgeteilt wird. Das von der SMS verwendete Kodierungsschema (text oder unicode) wirkt sich auf die maximale Anzahl von Zeichen aus, die in eine einzelne Nachricht passen. Die Messages API erkennt automatisch, ob die übermittelte Nachricht Unicode-Zeichen enthält, und verwendet dementsprechend den entsprechenden Kodierungstyp. Diese Einstellung kann über eine encoding_type Parameter im Body der Anfrage.
Dieses Dokument behandelt die folgenden Themen:
Verkettung
Wenn Sie eine Nachricht senden, die mehr als die maximale Anzahl von Zeichen pro Nachricht enthält, sendet Vonage eine verkettete SMS. Eine verkettete SMS enthält mehrere SMS-Teile, die durch Segmentierungsinformationen in der SMS-Datei verbunden sind. Benutzerdaten-Header (UDH).
Diese Segmentierungsinformationen teilen dem Mobilteil die Anzahl der Nachrichtenteile mit, aus denen die verkettete SMS besteht, und die Position jedes Nachrichtenteils darin. Wenn das Mobilteil alle Nachrichtenteile empfangen hat, stellt es sie dem Empfänger als einen einzigen Text dar.
Weitere Informationen finden Sie in der Vonage Knowledgebase mit detaillierten Informationen über Mehrteilige SMS.
Kodierung
Es gibt zwei Hauptkodierungsarten, die von der Vonage Messages API für den Versand von SMS unterstützt werden: text und unicode. Standardmäßig erkennt die Messages API automatisch, ob Unicode-Zeichen im Text vorhanden sind, und sendet die Nachricht entsprechend entweder als Text- oder Unicode-SMS. Sie können dieses Verhalten außer Kraft setzen, indem Sie explizit entweder text oder unicode als Wert für die encoding_type Eigenschaft des optionalen sms Objekt. Welche Kodierung Sie verwenden sollten, hängt von den Zeichen ab, die die Nachricht enthält:
- Setzen Sie die
typeParameter zutextfür Nachrichten, die nur Zeichen aus dem GSM-Standard und erweiterte Zeichensätze. - Setzen Sie die
typeParameter zuunicodefür Nachrichten, die Zeichen enthalten außerhalb der GSM-Zeichensätze (z. B. chinesische, japanische und koreanische Schriftzeichen).
Neue Linien
Um eine neue Zeile in Ihre Nachricht einzufügen, können Sie einen Zeilenvorschub (LF) darstellen, indem Sie die \n Zeichen im Zeichenfolgenwert für die text Eigenschaft des JSON-Körpers. Dies zählt in Bezug auf die Anzahl der Zeichen in der Nachricht als ein einziges Zeichen. Zum Beispiel der folgende Wert für text:
{
"text": "This is one line.\nThis is another line."
}
sendet eine SMS-Nachricht, die wie folgt aussieht:
This is one line.
This is another line.
Hinweis: Die obigen Hinweise zu neuen Leitungen gelten für die direkte Verwendung der Messages API. Wenn Sie einen HTTP-Client zur Interaktion mit der API verwenden, wie z. B. die Vonage Server-SDKsverwenden Sie die entsprechenden Konventionen für das jeweilige Tool. Für die Vonage Server SDKs ist dies die spezifische Zeilenumbruchsyntax für die von diesem SDK verwendete Programmiersprache.
GSM-Zeichensätze
Vonage unterstützt alle GSM-Standardzeichen sowie Zeichen aus der erweiterten GSM-Tabelle. Zeichen aus der Standardtabelle benötigen 7 Bits pro Zeichen zur Kodierung:
! " # $ % ' ( ) * + , - . / : ; < = > ? @ _ ¡ £ ¥ § ¿ & ¤
0 1 2 3 4 5 6 7 8 9
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
Ä Å Æ Ç É Ñ Ø ø Ü ß Ö à ä å æ è é ì ñ ò ö ù ü Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ
Charaktere aus dem erweiterte Tabelle erfordern zwei Zeichen zur Kodierung: ein ESC Zeichenpräfix, gefolgt von dem gewünschten Zeichen aus der erweiterten Tabelle:
| ^ € { } [ ] ~ \
Unicode
Sprachen wie Arabisch, Chinesisch, Koreanisch, Japanisch oder das kyrillische Alphabet erfordern Unicode-Zeichen, die über den GSM-Standard und erweiterte Bereiche hinausgehen. Diese Zeichen erfordern eine 16-Bit-UCS-2-Kodierung.
Wenn Sie die Einstellung type Parameter zu unicode, alle Zeichen innerhalb der Nachricht werden mit UCS-2 kodiert, auch wenn sie im GSM-Standardzeichensatz enthalten sind.
Kodierungsbeispiele
| Nachricht | Typ | Bytes pro Zeichen | Insgesamt benötigte Bytes | In der Nachricht verwendeter Zeichensatz |
|---|---|---|---|---|
Bonjour monde | text | 1 | 13 | GSM-Norm |
This ^ That | text | 1 (2 für ^ da sie im erweiterten Zeichensatz enthalten ist) | 12 | GSM-Standard und GSM erweitert |
こんにちは世界 | unicode | 2 (UCS-2) | 14 | Unicode |
Maximale Anzahl von Zeichen
Die maximale Länge einer einzelnen SMS-Nachricht beträgt 140 Byte, was 160 GSM-Standard-7-Bit-Zeichen oder 70 UCS-2-16-Bit-Zeichen entspricht. Eine Nachricht, die länger ist, wird in Teile aufgeteilt.
Hinweis: Zeichen aus der erweiterten GSM-Tabelle benötigen zwei Bytes pro Zeichen zur Kodierung.
Wenn Sie eine Nachricht mit einer type Wert von text dann gelten die folgenden Zeichenbeschränkungen:
| Teile | Maximale Zeichen | Berechnung |
|---|---|---|
| 1 | 160 | Ohne UDH sind 160 Zeichen verfügbar |
| 2 | 306 | (160 - 7) * 2 = 306 |
| 3 | 459 | (160 - 7) * 3 = 459 |
| 4 | 612 | (160 - 7) * 4 = 612 |
Wenn Sie eine Nachricht mit einer type von unicode dann werden für jedes Zeichen in der Nachricht zwei Bytes benötigt.
Vonage akzeptiert SMS mit einer Länge von bis zu 3200 Zeichen, aber nicht alle Anbieter tun dies. Es ist empfehlenswert, darauf zu achten, dass die Nachricht nicht länger als sechs SMS-Teile ist.
Hinweis: In einer verketteten SMS wird jeder Teil der SMS berechnet.
Testen Sie Ihre Nachrichtenvorlagen mit diesem Tool:
Hinweis: Dieses Tool ist zur Demonstration der Verkettung von Nachrichten durch die API gedacht. Es ist nicht für den Produktionseinsatz gedacht. Wenn Sie eine große Anzahl von Nachrichten mit demselben Inhalt versenden und mögliche Kosten aufgrund der Nachrichtenverkettung im Voraus berechnen möchten, empfehlen wir, zunächst eine einzige Nachricht an eine Testnummer zu senden, um die Anzahl der Nachrichtenteile genau zu bestimmen. Für die SMS API wird dies in der message-count Eigenschaft in der Antwortkörper. Für die Messages API wird dies in der sms.count_total Eigenschaft in der Webhook "Nachrichtenstatus.
Probieren Sie es aus
Nachricht
Daten
Teile
It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.