Sign inGet Started

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 },
});

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:

Contoh kode
{ "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:

Contoh kode
{
  "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.

PenggantiKarakter yang diganti
spasiU+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
dihapusU+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