Smart encoding SMS
Substitusi tipografis dapat mendorong SMS keluar dari GSM-7. Pengolah kata mengubah ' menjadi ’, teks yang ditempel mengandung em dash, atau kolom formulir membawa non-breaking space. Masing-masing tampak mirip karakter GSM-7, tetapi satu karakter non-GSM mengonversi seluruh isi pesan ke UCS-2, sehingga kapasitas setiap segmen berkurang.
Smart encoding mengganti karakter-karakter tersebut dengan padanan GSM-7-nya sebelum Bird menyerahkan pesan ke operator, sehingga isi pesan yang sebenarnya bukan non-GSM tetap GSM-7 dan ditagih dengan segmen lebih sedikit.
Mengaktifkannya
Fitur ini nonaktif secara default karena mengubah teks yang dibaca penerima. Atur options.smart_encoding ke true pada pengiriman:
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 dan PHP menerimanya sebagai field nullable, jadi membiarkannya tidak diatur akan menggunakan default Bird alih-alih mengirim false.
Atur smart encoding per pesan. Bird tidak menyediakan pengaturan tingkat akun atau per pengirim.
Kapan Bird mempertahankan UCS-2
Penggantian hanya berlaku jika seluruh isi pesan dapat dikonversi ke GSM-7. Jika ada karakter yang tetap di luar GSM-7, Bird mengirim isi pesan persis seperti yang diberikan.
Satu emoji, karakter CJK, atau huruf beraksen di luar GSM-7 membuat seluruh pesan tetap dalam UCS-2:
{ "text": "Hoe gaat het vandaag? á “" }“ dapat diganti, tetapi á tidak ada dalam GSM-7 dan tidak memiliki entri di tabel, sehingga isi pesan ini dikirim tanpa perubahan sebagai UCS-2. GSM-7 mencakup à, ä, å, é, è, ì, ò, ù, ö, ñ, ü tetapi tidak á, í, atau ú.
Huruf beraksen sengaja tidak dimasukkan ke dalam tabel. Mengubah á menjadi a akan mengubah kata, bukan sekadar mendekatinya, dan itu bukan pertukaran yang tepat bagi pengirim yang menulis dalam bahasa Spanyol atau Portugis.
Normalisasi memengaruhi combining accent. Dalam teks NFD, ê yang didekomposisi menyimpan aksen sebagai combining mark terpisah, sehingga smart encoding mengonversinya menjadi e^. ê yang sudah precomposed tetap tidak berubah dan menggunakan UCS-2.
Yang tidak dilakukannya
- Smart encoding tidak pernah memotong teks. Isi pesan yang melebihi batas 12 segmen ditolak dengan
422, dan batas tersebut diukur setelah penggantian, sehingga mengaktifkan fitur ini dapat membuat isi pesan yang terlalu besar menjadi di bawah batas. - Fitur ini tidak menyentuh isi pesan yang sudah GSM-7, karena tidak ada segmen yang bisa dihemat.
- Fitur ini tidak mengubah apa yang Anda bayar selain jumlah segmen: jumlah tersebut dihitung dari isi pesan yang dikirim.
Membaca kembali apa yang terjadi
Pesan melaporkan kedua sisi. text adalah isi pesan yang dikirim, dan options.smart_encoding melaporkan pengaturan yang berlaku:
{
"text": "Your order shipped - track it here...",
"segments": { "count": 1, "encoding": "GSM_7BIT", "characters": 36 },
"options": { "smart_encoding": true }
}encoding bernilai UCS2 pada pengiriman yang Anda aktifkan menandakan isi pesan tidak dapat dikonversi ke GSM-7. Untuk melihat apa yang akan terjadi pada pesan tertentu sebelum Anda mengirimnya, tempel teks ke kalkulator segmen SMS.
Tabel penggantian lengkap
Tabel penggantian mencantumkan setiap karakter yang diubah saat smart encoding aktif. Karakter lain, termasuk yang sudah ada dalam GSM-7, tetap tidak berubah.
| Pengganti | Karakter yang diganti |
|---|---|
| spasi | 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 |
| dihapus | U+200B, U+2028, U+2029, U+2060, U+FEFF |
Varian spasi diciutkan menjadi satu spasi (U+0020). Baris terakhir mencantumkan karakter zero-width dan pemformatan yang dihapus, bukan diganti.
Langkah selanjutnya
- Batas karakter: tinjau GSM-7, UCS-2, dan batas segmen.
- Mengirim SMS: aktifkan smart encoding pada pengiriman.
- Kalkulator segmen SMS: periksa pesan sebelum mengirimnya.
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini.