Inteligentne kodowanie SMS
Typograficzne podstawienia mogą wypchnąć SMS poza GSM-7. Edytor tekstu zamienia ' na ’, wklejony tekst zawiera pauzę, a pole formularza przenosi niełamliwą spację. Każdy z tych znaków wygląda podobnie do znaku GSM-7, ale jeden znak spoza GSM konwertuje całą treść na UCS-2, zmniejszając pojemność każdego segmentu.
Inteligentne kodowanie zastępuje te znaki ich odpowiednikami GSM-7, zanim Bird przekaże wiadomość operatorowi. Dzięki temu treść, która jedynie wyglądała na spoza GSM, pozostaje w GSM-7 i jest rozliczana jako mniej segmentów.
Włączanie
Domyślnie jest wyłączone, ponieważ zmienia tekst, który odczytuje odbiorca. Ustaw options.smart_encoding na true przy wysyłce:
await bird.sms.send({
to: "+31612345678",
from: "Bird",
text: "Your order shipped, track it here…",
category: "transactional",
options: { smart_encoding: true },
});client.sms.send(
to="+31612345678",
from_="Bird",
text="Your order shipped, track it here…",
category="transactional",
smart_encoding=True,
)_, err := client.Sms.Send(context.Background(), bird.SmsSendParams{
To: "+31612345678",
From: "Bird",
Text: "Your order shipped, track it here…",
Category: bird.SMSCategoryTransactional,
SmartEncoding: bird.Bool(true),
})$bird->sms->send(
to: '+31612345678',
from: 'Bird',
text: 'Your order shipped, track it here…',
category: 'transactional',
smartEncoding: true,
);bird sms send \
--category transactional \
--from Bird \
--smart-encoding=true \
--text 'Your order shipped, track it here…' \
--to +31612345678curl -X POST https://eu1.platform.bird.com/v1/sms/messages \
-H "Authorization: Bearer bk_eu1_..." \
-H "Content-Type: application/json" \
-d '{
"to": "+31612345678",
"from": "Bird",
"text": "Your order shipped, track it here…",
"category": "transactional",
"options": { "smart_encoding": true }
}'SDK Go i PHP przyjmują tę wartość jako pole nullable, więc pozostawienie go nieustawionego powoduje użycie domyślnej wartości Bird zamiast wysłania false.
Ustawiaj inteligentne kodowanie osobno dla każdej wiadomości. Bird nie udostępnia ustawienia na poziomie konta ani nadawcy.
Kiedy Bird zachowuje UCS-2
Zamiana ma zastosowanie tylko wtedy, gdy konwertuje całą treść na GSM-7. Jeśli jakikolwiek znak pozostaje poza GSM-7, Bird wysyła treść dokładnie tak, jak została dostarczona.
Pojedyncze emoji, znak CJK lub litera z akcentem spoza GSM-7 powoduje, że cała wiadomość pozostaje w UCS-2:
{ "text": "Hoe gaat het vandaag? á “" }Znak “ można zastąpić, ale á nie należy do GSM-7 i nie ma wpisu w tabeli, więc ta treść jest wysyłana bez zmian jako UCS-2. GSM-7 obejmuje à, ä, å, é, è, ì, ò, ù, ö, ñ, ü, ale nie á, í ani ú.
Litery z akcentami celowo nie znajdują się w tabeli. Zamiana á na a zmieniałaby słowo, zamiast je przybliżać, a to zły kompromis dla nadawcy piszącego po hiszpańsku lub portugalsku.
Normalizacja wpływa na łączone akcenty. W tekście NFD zdekomponowany ê przechowuje akcent jako osobny combining mark, więc inteligentne kodowanie konwertuje go na e^. Złożony ê pozostaje bez zmian i używa UCS-2.
Czego nie robi
- Nigdy nie obcina treści. Treść przekraczająca limit 12 segmentów jest odrzucana z błędem
422. Limit jest mierzony po zamianie, więc włączenie tej opcji może zmieścić zbyt dużą treść w limicie. - Nie modyfikuje treści, która jest już w GSM-7, bo nie ma w niej segmentów do zaoszczędzenia.
- Nie zmienia tego, za co płacisz, poza liczbą segmentów: liczba ta jest obliczana na podstawie treści w postaci wysłanej.
Odczytywanie informacji o tym, co się wydarzyło
Wiadomość raportuje obie strony. text to treść w postaci wysłanej, a options.smart_encoding podaje zastosowane ustawienie:
{
"text": "Your order shipped - track it here...",
"segments": { "count": 1, "encoding": "GSM_7BIT", "characters": 36 },
"options": { "smart_encoding": true }
}Wartość encoding równa UCS2 przy wysyłce z włączoną opcją oznacza, że treści nie udało się sprowadzić do GSM-7. Aby sprawdzić, co stanie się z konkretną wiadomością przed wysłaniem, wklej tekst do kalkulatora segmentów SMS.
Pełna tabela zamian
Tabela zamian zawiera każdy znak zamieniany przy włączonym inteligentnym kodowaniu. Pozostałe znaki, w tym te już należące do GSM-7, nie są zmieniane.
| Zamiennik | Zamieniane znaki |
|---|---|
| spacja | U+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 |
0 | 0 U+FF10 |
1 | 1 U+FF11 |
1/2 | ½ U+00BD |
1/4 | ¼ U+00BC |
2 | 2 U+FF12 |
3 | 3 U+FF13 |
3/4 | ¾ U+00BE |
4 | 4 U+FF14 |
5 | 5 U+FF15 |
6 | 6 U+FF16 |
7 | 7 U+FF17 |
8 | 8 U+FF18 |
9 | 9 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 |
Q | Q 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 |
X | X 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 |
| usunięte | U+200B, U+2028, U+2029, U+2060, U+FEFF |
Warianty białych znaków są zwijane do pojedynczej spacji (U+0020). Ostatni wiersz zawiera znaki o zerowej szerokości i znaki formatowania, które są usuwane, a nie zastępowane.
Następne kroki
- Limity znaków: sprawdź GSM-7, UCS-2 i limity segmentów.
- Wysyłanie SMS: włącz inteligentne kodowanie przy wysyłce.
- Kalkulator segmentów SMS: sprawdź wiadomość przed wysłaniem.
Powiązane zasoby
Przejdź do dokumentacji, przewodników i przykładów dotyczących tego tematu.