Sign inGet Started

Intelligente Zeichenkodierung für SMS

Typografische Ersetzungen können eine SMS aus GSM-7 herausdrängen. Eine Textverarbeitung wandelt ' in ’ um, eingefügter Text enthält einen Geviertstrich, oder ein Formularfeld enthält ein geschütztes Leerzeichen. Jedes dieser Zeichen sieht einem GSM-7-Zeichen ähnlich, aber ein einziges Nicht-GSM-Zeichen konvertiert den gesamten Nachrichtentext nach UCS-2, wodurch die Kapazität jedes Segments sinkt.

Die intelligente Zeichenkodierung ersetzt diese Zeichen durch ihre GSM-7-Entsprechungen, bevor Bird die Nachricht an den Carrier übergibt. So bleibt ein Nachrichtentext, der nur scheinbar Nicht-GSM war, in GSM-7 und wird mit weniger Segmenten berechnet.

Aktivierung

Die Funktion ist standardmäßig deaktiviert, weil sie den Text verändert, den der Empfänger liest. Setzen Sie options.smart_encoding beim Senden auf true:

await bird.sms.send({
  to: "+31612345678",
  from: "Bird",
  text: "Your order shipped, track it here…",
  category: "transactional",
  options: { smart_encoding: true },
});

Die Go- und PHP-SDKs akzeptieren den Wert als Nullable-Feld. Wird er nicht gesetzt, greift der Standardwert von Bird, anstatt false zu senden.

Setzen Sie die intelligente Zeichenkodierung pro Nachricht. Bird bietet keine konto- oder absenderweite Einstellung.

Wann Bird bei UCS-2 bleibt

Die Ersetzung greift nur, wenn sie den gesamten Nachrichtentext nach GSM-7 konvertieren kann. Bleibt auch nur ein Zeichen außerhalb von GSM-7, sendet Bird den Text unverändert.

Ein einzelnes Emoji, CJK-Zeichen oder ein akzentuierter Buchstabe außerhalb von GSM-7 hält die gesamte Nachricht in UCS-2:

Codebeispiel
{ "text": "Hoe gaat het vandaag? á “" }

Das “ ist ersetzbar, aber á ist nicht in GSM-7 enthalten und hat keinen Eintrag in der Tabelle. Deshalb wird dieser Nachrichtentext unverändert als UCS-2 gesendet. GSM-7 umfasst à, ä, å, é, è, ì, ò, ù, ö, ñ, ü, aber nicht á, í oder ú.

Akzentuierte Buchstaben fehlen bewusst in der Tabelle. á zu a zusammenzufalten würde das Wort verändern statt es anzunähern – ein schlechter Tausch für Absender, die auf Spanisch oder Portugiesisch schreiben.

Normalisierung beeinflusst kombinierende Akzente. In NFD-Text speichert ein dekomponiertes ê den Akzent als separates kombinierendes Zeichen, sodass die intelligente Zeichenkodierung es zu e^ konvertiert. Ein vorkomponiertes ê bleibt unverändert und verwendet UCS-2.

Was sie nicht tut

  • Sie kürzt niemals. Ein Nachrichtentext über dem 12-Segment-Limit wird mit einem 422 abgelehnt. Das Limit wird nach der Ersetzung gemessen, sodass die Aktivierung einen zu großen Text unter das Limit bringen kann.
  • Sie verändert keinen Nachrichtentext, der bereits GSM-7 ist – dort gibt es keine Segmente einzusparen.
  • Sie ändert nichts an der Abrechnung außer der Segmentanzahl: Die Anzahl wird anhand des gesendeten Textes berechnet.

Ergebnis ablesen

Die Nachricht liefert beide Seiten. text enthält den Text wie gesendet, und options.smart_encoding gibt die angewendete Einstellung an:

Codebeispiel
{
  "text": "Your order shipped - track it here...",
  "segments": { "count": 1, "encoding": "GSM_7BIT", "characters": 36 },
  "options": { "smart_encoding": true }
}

Ein encoding von UCS2 bei einem Versand mit aktivierter Option bedeutet, dass der Text nicht nach GSM-7 konvertiert werden konnte. Um vorab zu prüfen, was mit einer bestimmten Nachricht passiert, fügen Sie den Text in den SMS-Segmentrechner ein.

Die vollständige Ersetzungstabelle

Die Ersetzungstabelle listet jedes Zeichen auf, das bei aktivierter intelligenter Zeichenkodierung geändert wird. Andere Zeichen, einschließlich derer, die bereits in GSM-7 enthalten sind, bleiben unverändert.

ErsetzungErsetzte Zeichen
LeerzeichenU+00A0, U+2000, U+2001, U+2002, U+2003, U+2004, U+2005, U+2006, U+2007, U+2008, U+2009, U+200A, U+202F, U+205F, U+3000
!ǃ U+01C3, ︕ U+FE15, ﹗ U+FE57, ! U+FF01
!!‼ U+203C
"« U+00AB, » U+00BB, ʺ U+02BA, ˮ U+02EE, “ U+201C, ” U+201D, „ U+201E, ‟ U+201F, ❝ U+275D, ❞ U+275E, 〝 U+301D, 〞 U+301E, " U+FF02
#﹟ U+FE5F, # U+FF03
$﹩ U+FE69, $ U+FF04
%﹪ U+FE6A, % U+FF05
&﹠ U+FE60, & U+FF06
'` U+0060, ´ U+00B4, ʹ U+02B9, ʻ U+02BB, ʼ U+02BC, ʽ U+02BD, ˈ U+02C8, ˊ U+02CA, ˋ U+02CB, U+0313, U+0314, ‘ U+2018, ’ U+2019, ‛ U+201B, ❛ U+275B, ❜ U+275C, ︐ U+FE10, ︑ U+FE11, ' U+FF07
(❨ U+2768, ❪ U+276A, ⟮ U+27EE, ⦅ U+2985, ﹙ U+FE59, ( U+FF08
)❩ U+2769, ❫ U+276B, ⟯ U+27EF, ⦆ U+2986, ﹚ U+FE5A, ) U+FF09
*⁎ U+204E, ∗ U+2217, ⊛ U+229B, ✢ U+2722, ✣ U+2723, ✤ U+2724, ✥ U+2725, ✱ U+2731, ✲ U+2732, ✳ U+2733, ✺ U+273A, ✻ U+273B, ✼ U+273C, ✽ U+273D, ❃ U+2743, ❉ U+2749, ❊ U+274A, ❋ U+274B, ⧆ U+29C6, ﹡ U+FE61, * U+FF0A
+˖ U+02D6, ﹢ U+FE62, + U+FF0B
,U+0326, ‚ U+201A, 、 U+3001, ﹐ U+FE50, ﹑ U+FE51, , U+FF0C, 、 U+FF64
-‐ U+2010, – U+2013, — U+2014, ― U+2015, • U+2022, ⁃ U+2043, ⎼ U+23BC, ⎽ U+23BD, ﹣ U+FE63, - U+FF0D
.。 U+3002, ﹒ U+FE52, . U+FF0E, 。 U+FF61
...… U+2026
/÷ U+00F7, U+0337, U+0338, ⁄ U+2044, ∕ U+2215, ⧸ U+29F8, / U+FF0F
00 U+FF10
11 U+FF11
1/2½ U+00BD
1/4¼ U+00BC
22 U+FF12
33 U+FF13
3/4¾ U+00BE
44 U+FF14
55 U+FF15
66 U+FF16
77 U+FF17
88 U+FF18
99 U+FF19
:ː U+02D0, ˸ U+02F8, ⦂ U+2982, ꞉ U+A789, ︓ U+FE13, : U+FF1A
;⁏ U+204F, ︔ U+FE14, ﹔ U+FE54, ; U+FF1B
<‹ U+2039, ﹤ U+FE64, < U+FF1C
=U+0347, ꞊ U+A78A, ﹦ U+FE66, = U+FF1D
>› U+203A, ﹥ U+FE65, > U+FF1E
?︖ U+FE16, ﹖ U+FE56, ? U+FF1F
@﹫ U+FE6B, @ U+FF20
Aᴀ U+1D00, A U+FF21
Bʙ U+0299, B U+FF22
Cᴄ U+1D04, C U+FF23
Dᴅ U+1D05, D U+FF24
Eᴇ U+1D07, E U+FF25
Fꜰ U+A730, F U+FF26
Gɢ U+0262, G U+FF27
Hʜ U+029C, H U+FF28
Iɪ U+026A, I U+FF29
Jᴊ U+1D0A, J U+FF2A
Kᴋ U+1D0B, K U+FF2B
Lʟ U+029F, L U+FF2C
Mᴍ U+1D0D, M U+FF2D
Nɴ U+0274, N U+FF2E
Oᴏ U+1D0F, O U+FF2F
Pᴘ U+1D18, P U+FF30
QQ U+FF31
Rʀ U+0280, R U+FF32
Sꜱ U+A731, S U+FF33
Tᴛ U+1D1B, T U+FF34
Uᴜ U+1D1C, U U+FF35
Vᴠ U+1D20, V U+FF36
Wᴡ U+1D21, W U+FF37
XX U+FF38
Yʏ U+028F, Y U+FF39
Zᴢ U+1D22, Z U+FF3A
[[ U+FF3B
\U+20E5, ⧵ U+29F5, ⧹ U+29F9, ﹨ U+FE68, \ U+FF3C
]] U+FF3D
^ˆ U+02C6, U+0302, U+1DCD, ^ U+FF3E
_U+0332, ‗ U+2017, _ U+FF3F
{❴ U+2774, ﹛ U+FE5B, { U+FF5B
|U+20D2, U+20D3, ∣ U+2223, ⎜ U+239C, ⎟ U+239F, ⎸ U+23B8, ⎹ U+23B9, ⏐ U+23D0, | U+FF5C
}❵ U+2775, ﹜ U+FE5C, } U+FF5D
~˜ U+02DC, ˷ U+02F7, U+0303, U+0330, U+0334, ∼ U+223C, ~ U+FF5E
EntferntU+200B, U+2028, U+2029, U+2060, U+FEFF

Leerzeichenvarianten werden zu einem einzelnen Leerzeichen zusammengefasst (U+0020). Die letzte Zeile listet Zeichen mit Breite null und Formatierungszeichen auf, die gelöscht statt ersetzt werden.

Nächste Schritte