Sign inGet Started

SMS वर्ण सीमाएँ और सेगमेंट की गिनती

हर SMS निश्चित आकार की इकाइयों में भेजा जाता है, जिन्हें सेगमेंट कहते हैं। हर सेगमेंट एक बिलिंग इकाई है, इसलिए संदेश की लंबाई सीधे लागत को प्रभावित करती है। एक सेगमेंट में कितने वर्ण आते हैं, यह इस पर निर्भर करता है कि Bird आपके संदेश के लिए कौन-सी एन्कोडिंग चुनता है। डिफ़ॉल्ट वर्णमाला से बाहर का एक भी वर्ण क्षमता को आधा कर सकता है।

एन्कोडिंग कैसे चुनी जाती है

Bird भेजने से पहले आपके संदेश के हर वर्ण की जाँच करता है:

  • अगर हर वर्ण GSM-7 वर्णमाला (GSM 03.38 में परिभाषित मानक 7-बिट वर्ण सेट) में आता है, तो संदेश GSM-7 एन्कोडिंग का उपयोग करता है।
  • अगर एक भी वर्ण GSM-7 से बाहर है, तो पूरा संदेश UCS-2 (16-बिट यूनिकोड एन्कोडिंग) में बदल जाता है।

Bird एक संदेश में अलग-अलग एन्कोडिंग नहीं मिलाता। एक इमोजी, CJK वर्ण या घुमावदार उद्धरण चिह्न पूरे संदेश को UCS-2 में बदल देता है।

सेगमेंट सीमाएँ

एन्कोडिंगएकल सेगमेंटप्रति सेगमेंट (मल्टीपार्ट)
GSM-7160 सेप्टेट153 सेप्टेट
UCS-270 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) होता है। संदेश 160 कैरेक्टर का दिखता है, फिर भी यह 2 सेगमेंट में चला जाता है।

वे वर्ण जिनसे 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 लागू करने वाले कुछ वर्ण आपने खुद नहीं चुने होते: वर्ड प्रोसेसर ' को ’ में बदल देता है, पेस्ट के साथ एम डैश आ जाता है, या फ़ॉर्म फ़ील्ड में नॉन-ब्रेकिंग स्पेस होता है। किसी भेजे जाने वाले संदेश पर 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 सेगमेंट कैलकुलेटर का उपयोग करें, और अपनी कैंपेन सामग्री में रेंडर किए गए पर्सनलाइज़ेशन की समीक्षा करें।

इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।