SMS स्मार्ट एन्कोडिंग
टाइपोग्राफ़िक प्रतिस्थापन किसी SMS को GSM-7 से बाहर धकेल सकते हैं। कोई वर्ड प्रोसेसर ' को ’ में बदल देता है, पेस्ट किए गए टेक्स्ट में em dash होता है, या कोई फ़ॉर्म फ़ील्ड non-breaking space रखता है। हर एक GSM-7 अक्षर जैसा दिखता है, लेकिन एक भी non-GSM अक्षर पूरे बॉडी को UCS-2 में बदल देता है, जिससे हर सेगमेंट की क्षमता कम हो जाती है।
स्मार्ट एन्कोडिंग उन अक्षरों को उनके GSM-7 समकक्षों से बदल देती है, इससे पहले कि Bird संदेश कैरियर को सौंपे, ताकि जो बॉडी सिर्फ़ non-GSM दिख रही थी वह GSM-7 बनी रहे और कम सेगमेंट में बिल हो।
इसे चालू करना
यह डिफ़ॉल्ट रूप से बंद होती है, क्योंकि यह आपके प्राप्तकर्ता को दिखने वाला टेक्स्ट बदल देती है। भेजते समय options.smart_encoding को true सेट करें:
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 }
}'Go और PHP SDK इसे nullable फ़ील्ड के रूप में लेते हैं, इसलिए इसे सेट न करने पर false भेजने की बजाय Bird का डिफ़ॉल्ट लागू होता है।
स्मार्ट एन्कोडिंग प्रति संदेश सेट करें। Bird अकाउंट-व्यापी या प्रति-सेंडर सेटिंग प्रदान नहीं करता।
जब Bird UCS-2 बनाए रखता है
प्रतिस्थापन तभी लागू होता है जब यह पूरी बॉडी को GSM-7 में बदल सके। अगर कोई भी अक्षर GSM-7 के बाहर रहता है, तो Bird बॉडी को ठीक वैसे ही भेजता है जैसी दी गई थी।
एक अकेला इमोजी, CJK अक्षर, या GSM-7 के बाहर का कोई एक्सेंटेड अक्षर पूरे संदेश को UCS-2 में रखता है:
कोड उदाहरण
{ "text": "Hoe gaat het vandaag? á “" }“ बदला जा सकता है, लेकिन á GSM-7 में नहीं है और तालिका में इसकी कोई प्रविष्टि नहीं है, इसलिए यह बॉडी UCS-2 के रूप में अपरिवर्तित भेजी जाती है। GSM-7 में à, ä, å, é, è, ì, ò, ù, ö, ñ, ü शामिल हैं लेकिन á, í, या ú नहीं।
एक्सेंटेड अक्षर जानबूझकर तालिका से बाहर रखे गए हैं। á को a में बदलने से शब्द ही बदल जाएगा, न कि उसका अनुमानित रूप बनेगा, और स्पैनिश या पुर्तगाली लिखने वाले सेंडर के लिए यह गलत सौदा है।
नॉर्मलाइज़ेशन कंबाइनिंग एक्सेंट को प्रभावित करता है। NFD टेक्स्ट में, एक डिकंपोज़्ड ê एक्सेंट को अलग कंबाइनिंग मार्क के रूप में स्टोर करता है, इसलिए स्मार्ट एन्कोडिंग उसे e^ में बदल देती है। एक प्रीकंपोज़्ड ê अपरिवर्तित रहता है और UCS-2 का उपयोग करता है।
यह क्या नहीं करती
- यह कभी ट्रंकेट नहीं करती। 12-सेगमेंट सीमा से बड़ी बॉडी 422 के साथ रिजेक्ट होती है, और सीमा प्रतिस्थापन के बाद मापी जाती है, इसलिए ऑप्ट इन करने से कोई ओवरसाइज़ बॉडी सीमा के अंदर आ सकती है।
- यह पहले से GSM-7 वाली बॉडी को नहीं छूती, क्योंकि उसमें बचाने के लिए कोई सेगमेंट नहीं होते।
- यह सेगमेंट काउंट के अलावा आपकी बिलिंग में कुछ नहीं बदलती: काउंट भेजी गई बॉडी से कंप्यूट होता है।
क्या हुआ, यह वापस पढ़ना
संदेश दोनों पक्ष रिपोर्ट करता है। text भेजी गई बॉडी है, और options.smart_encoding लागू हुई सेटिंग रिपोर्ट करता है:
कोड उदाहरण
{
"text": "Your order shipped - track it here...",
"segments": { "count": 1, "encoding": "GSM_7BIT", "characters": 36 },
"options": { "smart_encoding": true }
}आपने जिस सेंड में ऑप्ट इन किया, उस पर encoding का UCS2 होना बताता है कि बॉडी को GSM-7 में नहीं लाया जा सका। कोई विशिष्ट संदेश भेजने से पहले उसका परिणाम देखने के लिए, टेक्स्ट को SMS सेगमेंट कैलकुलेटर में पेस्ट करें।
पूर्ण प्रतिस्थापन तालिका
प्रतिस्थापन तालिका में वे सभी अक्षर सूचीबद्ध हैं जो स्मार्ट एन्कोडिंग चालू होने पर बदले जाते हैं। अन्य अक्षर, जो पहले से GSM-7 में हैं, अपरिवर्तित रहते हैं।
| प्रतिस्थापन | बदले गए अक्षर |
|---|---|
| space | 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 |
| हटाए गए | U+200B, U+2028, U+2029, U+2060, U+FEFF |
व्हाइटस्पेस वेरिएंट एक सिंगल स्पेस (U+0020) में बदल जाते हैं। अंतिम पंक्ति में ज़ीरो-विड्थ और फ़ॉर्मेटिंग अक्षर सूचीबद्ध हैं जो बदले जाने की बजाय हटा दिए जाते हैं।
अगले कदम
- अक्षर सीमाएँ: GSM-7, UCS-2, और सेगमेंट सीमाएँ देखें।
- SMS भेजना: भेजते समय स्मार्ट एन्कोडिंग सक्षम करें।
- SMS सेगमेंट कैलकुलेटर: भेजने से पहले किसी संदेश की जाँच करें।
संबंधित संसाधन
इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।
गाइड देखेंSMS segments: why one emoji doubles the costकॉन्सेप्ट समझेंWhat is an SMS segment, and why did one message cost three?क्षमता जानेंSMS encodingलर्निंग पाथ फ़ॉलो करेंBuild your first integration
अभ्यास करें और इम्प्लीमेंटेशन ब्रीफ़ पाएँ