SMS कैरेक्टर सीमाएँ और सेगमेंट गणना
हर SMS को सेगमेंट नामक निश्चित आकार की इकाइयों में भेजा जाता है। हर सेगमेंट एक बिलिंग इकाई है, इसलिए संदेश की लंबाई सीधे लागत को प्रभावित करती है। एक सेगमेंट में कितने कैरेक्टर आ सकते हैं, यह Bird द्वारा आपकी बॉडी के लिए चुनी गई एन्कोडिंग पर निर्भर करता है, और डिफ़ॉल्ट अल्फ़ाबेट के बाहर का एक भी कैरेक्टर क्षमता को आधा कर सकता है।
एन्कोडिंग कैसे चुनी जाती है
Bird भेजने से पहले आपके संदेश बॉडी के हर कैरेक्टर की जाँच करता है:
- अगर हर कैरेक्टर GSM-7 अल्फ़ाबेट (GSM 03.38 द्वारा परिभाषित मानक 7-bit कैरेक्टर सेट) से है, तो संदेश GSM-7 एन्कोडिंग का उपयोग करता है।
- अगर कोई एक भी कैरेक्टर GSM-7 से बाहर का है, तो पूरा संदेश UCS-2 (16-bit Unicode एन्कोडिंग) पर स्विच हो जाता है।
Bird एक संदेश में एन्कोडिंग मिक्स नहीं करता। एक इमोजी, CJK कैरेक्टर, या कर्ली कोट पूरी बॉडी को UCS-2 में बदल देता है।
सेगमेंट सीमाएँ
| एन्कोडिंग | सिंगल सेगमेंट | प्रति सेगमेंट (मल्टीपार्ट) |
|---|---|---|
| GSM-7 | 160 सेप्टेट | 153 सेप्टेट |
| UCS-2 | 70 UTF-16 कोड यूनिट | 67 UTF-16 कोड यूनिट |
जब कोई संदेश एक सेगमेंट से लंबा होता है, तो उसे कई सेगमेंट में विभाजित किया जाता है। हर मल्टीपार्ट सेगमेंट में रीअसेम्बली हेडर के लिए कुछ बाइट आरक्षित रहते हैं, जिसे User Data Header कहते हैं। इससे GSM-7 के लिए क्षमता 160 से घटकर 153 हो जाती है, और UCS-2 के लिए 70 से घटकर 67।
161 सेप्टेट वाला GSM-7 संदेश 2 सेगमेंट लेता है (ceil(161 / 153) = 2)। विभाजन एन्कोडेड बॉडी को दोनों सेगमेंट में बाँटता है, और हर सेगमेंट में 153 सेप्टेट उपलब्ध होते हैं।
अधिकतम संदेश लंबाई
Bird प्रति संदेश अधिकतम 12 सेगमेंट स्वीकार करता है। इसका मतलब है:
- GSM-7: 1,836 सेप्टेट (12 x 153)
- UCS-2: 804 UTF-16 कोड यूनिट (12 x 67)
12 सेगमेंट से अधिक बॉडी 422 त्रुटि के साथ अस्वीकार कर दी जाती है। Bird कभी भी किसी संदेश को चुपचाप काटता नहीं है।
GSM-7 कैरेक्टर सेट
GSM-7 में वे कैरेक्टर शामिल हैं जो अधिकांश लैटिन-स्क्रिप्ट संदेशों में चाहिए:
- अक्षर A-Z, a-z
- अंक 0-9
- सामान्य विराम चिह्न: @, £, $, !, ", #, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, स्पेस, न्यूलाइन
- पश्चिमी यूरोपीय भाषाओं के कुछ एक्सेंटेड कैरेक्टर, जिनमें café में é शामिल हैं
एक्सटेंशन-टेबल कैरेक्टर
कुछ कैरेक्टर GSM-7 का हिस्सा हैं लेकिन एक एक्सटेंशन टेबल पर रहते हैं। हर एक की लागत 1 के बजाय 2 सेप्टेट होती है, इसलिए ये सेगमेंट सीमा के विरुद्ध दोगुने गिने जाते हैं:
€, [, ], {, }, \, ~, ^, |
यह सीमा पर मायने रखता है। अगर आप 159 सामान्य कैरेक्टर के बाद एक यूरो चिह्न लिखते हैं, तो एन्कोडेड साइज़ 161 सेप्टेट (159 + 2) होता है, जो संदेश को 2 सेगमेंट में धकेल देता है, भले ही यह 160 कैरेक्टर जैसा दिखे।
UCS-2 ट्रिगर करने वाले कैरेक्टर
GSM 03.38 से बाहर का कोई भी कैरेक्टर पूरे संदेश को UCS-2 में बदल देता है। सबसे आम ट्रिगर:
- इमोजी: Basic Multilingual Plane के बाहर के कई इमोजी दो UTF-16 कोड यूनिट का उपयोग करते हैं। ऐसे 35 इमोजी की स्ट्रिंग एक सेगमेंट में आती है; 36वाँ इसे दो सेगमेंट में ले जाता है। एक दिखने वाला इमोजी कई कोड पॉइंट को भी जोड़ सकता है, इसलिए दिखने वाले प्रतीकों के बजाय एन्कोडेड बॉडी गिनें।
- CJK कैरेक्टर (चीनी, जापानी, कोरियाई)
- अरबी, थाई, हिंदी, और GSM-7 अल्फ़ाबेट से बाहर की अन्य स्क्रिप्ट
- कर्ली (स्मार्ट) कोट्स: “ ” ‘ ’ (सीधे संस्करण " और ' GSM-7 हैं)। स्मार्ट एन्कोडिंग भेजने से पहले इन्हें बदल सकती है।
कुछ एक्सेंटेड लैटिन कैरेक्टर, जिनमें café और ü में é शामिल हैं, GSM-7 सेट का हिस्सा हैं और UCS-2 ट्रिगर नहीं करते। अन्य, जिनमें á, í, और ú शामिल हैं, UCS-2 ट्रिगर करते हैं।
स्मार्ट एन्कोडिंग
कुछ UCS-2 ट्रिगर ऐसे कैरेक्टर नहीं हैं जो आपने चुने: वर्ड प्रोसेसर ' को ’ में बदल देता है, पेस्ट के साथ em dash आ जाता है, फ़ॉर्म फ़ील्ड में नॉन-ब्रेकिंग स्पेस होता है। भेजते समय options.smart_encoding को true सेट करें और Bird संदेश जाने से पहले उन्हें उनके GSM-7 समकक्षों से बदल देता है, जिससे बॉडी GSM-7 में रहती है और सेगमेंट संख्या आधी हो सकती है।
स्मार्ट एन्कोडिंग डिफ़ॉल्ट रूप से बंद होती है और तभी लागू होती है जब हर शेष कैरेक्टर GSM-7 का उपयोग कर सके। अगर बदलने के बाद भी बॉडी में GSM-7 से बाहर का कोई कैरेक्टर है, जैसे इमोजी या असमर्थित एक्सेंटेड अक्षर, तो Bird उसे ठीक वैसे ही भेजता है जैसा दिया गया है। स्मार्ट एन्कोडिंग में रिप्लेसमेंट टेबल और परिणाम पढ़ने का तरीका शामिल है।
API से सेगमेंट संख्या पढ़ना
हर SMS प्रतिक्रिया में एक segments ऑब्जेक्ट होता है जो Bird द्वारा गणना किए गए परिणाम दिखाता है:
कोड उदाहरण
{
"segments": {
"count": 1,
"encoding": "GSM_7BIT",
"characters": 64
}
}- count: बिल योग्य सेगमेंट की संख्या
- encoding: GSM_7BIT या UCS2
- characters: बॉडी में कैरेक्टर (Unicode कोड पॉइंट) की संख्या
count वह संख्या है जिसके लिए आपको बिल किया जाता है। प्रतिक्रिया में या SMS लॉग में इसे जाँचें ताकि यह सत्यापित हो सके कि आपके संदेश अपेक्षित स्तर पर पहुँच रहे हैं।
संदेशों को एक सेगमेंट में रखना
कुछ आदतें जो अनजाने में मल्टी-सेगमेंट भेजने से रोकती हैं:
- कर्ली कोट्स को स्ट्रेट कोट्स से बदलें। वर्ड प्रोसेसर और कुछ फ़ोन " को स्वचालित रूप से “ ” से बदल देते हैं, जो UCS-2 को बाध्य करता है और आपकी क्षमता आधी कर देता है। स्मार्ट एन्कोडिंग उन भेजों पर आपके लिए यह करती है जिन पर आप इसे सक्षम करते हैं।
- ट्रांज़ैक्शनल या प्रमाणीकरण संदेशों में इमोजी न डालें जहाँ सेगमेंट संख्या मायने रखती है।
- एक्सटेंशन-टेबल कैरेक्टर पर ध्यान दें (€, {, }, [, ], \, ~, ^, |)। हर एक दो कैरेक्टर स्लॉट लेता है।
- अगर आप नॉन-लैटिन स्क्रिप्ट (CJK, अरबी, थाई) में लिखते हैं, तो शुरू से UCS-2 सीमाओं की योजना बनाएँ: सिंगल-सेगमेंट 70 कैरेक्टर, विभाजित होने पर प्रति सेगमेंट 67।
- पहचानने योग्य लिंक का उपयोग करें और उनकी लंबाई की समीक्षा करें। ब्रांडेड शॉर्ट लिंक से जगह बच सकती है; शॉर्टनिंग सेवा चुनने से पहले गंतव्य की लिंक आवश्यकताएँ जाँचें।
अगले कदम
भेजने से पहले SMS सेगमेंट कैलकुलेटर का उपयोग करें, और अपने कैम्पेन कंटेंट में रेंडर किए गए पर्सनलाइज़ेशन की समीक्षा करें।
- स्मार्ट एन्कोडिंग: हर रिप्लेसमेंट की समीक्षा करें और प्रति संदेश सक्षम करें।
- SMS भेजना: एक संदेश भेजें और उसकी सेगमेंट संख्या जाँचें।
- SMS लॉग: भेजे गए संदेश की एन्कोडिंग और बिल योग्य सेगमेंट जाँचें।
- SMS सेगमेंट: एक इमोजी लागत दोगुनी क्यों कर देता है: एक वीडियो जो दो संदेश भेजता है और तुलना करता है कि हर एक की लागत कितनी है
संबंधित संसाधन
इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।
कॉन्सेप्ट समझेंWhat is an SMS segment, and why did one message cost three?क्षमता जानेंSMS encodingलर्निंग पाथ फ़ॉलो करेंBuild your first integration
अभ्यास करें और इम्प्लीमेंटेशन ब्रीफ़ पाएँ