Егер сіз жүйеңіздің Unicode-ке байланысты бірнеше SMS жіберуі салдарынан SMS шығындарыңыздың күрт өсіп кеткенін байқасаңыз, мұны қалай тоқтату керек деген сұрақ сізді қатты мазалайтыны анық. Кездейсоқ қойылған бір ғана «ақылды» тырнақша немесе эмодзи стандартты, арзан мәтіндік хабарламаны бірден үш бөлек ақылы сегментке айналдырып, маркетингтік және операциялық бюджетіңізді тауысуы мүмкін.
1-қадам: Unicode неліктен SMS-ті бірнеше сегментке бөлуге мәжбүрлейтінін түсіну
SMS шлюзінің бір хабарламаны бірнеше ақылы сегменттерге бөлуін тоқтату үшін, алдымен SMS кодтаудың негізгі техникалық тетіктерін түсіну керек. Дәстүрлі телекоммуникациялық желілер мәтіндік хабарламалар үшін екі негізгі кодтау стандартын пайдаланады: GSM-7 және UCS-2 (Unicode).
Стандартты GSM-7 кодтауында бір SMS сегментінде 160 таңбаға дойын болуы мүмкін. Бұл таңбалар жиынтығына стандартты латын әріптері (A-Z, a-z), сандар (0-9) және бірнеше жалпы тыныс белгілері кіреді. Дегенмен, хабарламаңызда осы негізгі жиынтықтан тыс бір ғана таңба болса — мысалы, бұйра тырнақша (’), диакритикалық белгісі бар әріп (á, é, ö) немесе эмодзи — хабарламаның барлық кодтауы автоматты түрде UCS-2 форматына ауысады.
Хабарламаңыз UCS-2 Unicode кодтауына ауысқанда, бір сегменттегі таңбалар шегі 160-тан тек 70 таңбаға дейін төмендейді. Егер хабарламаңыз 140 таңбадан тұрса, ол бір GSM-7 сегментіне оңай сыяды. Бірақ UCS-2-де дәл осы 140 таңба екі бөлек сегментті қажет етеді. Twilio, Vonage және MessageBird сияқты дәстүрлі API провайдерлері әр сегмент үшін ақы алады, яғни бір хабарламаның құны бірден екі немесе үш есе өседі.
| Кодтау стандарты | Макс. таңба саны (1 сегмент) | Макс. таңба саны (Көп сегментті) | Жиі кездесетін триггер-таңбалар |
|---|---|---|---|
| GSM-7 | 160 таңба | Әр сегментке 153 таңба | Стандартты ағылшын әріптері, сандар, негізгі тыныс белгілері |
| UCS-2 (Unicode) | 70 таңба | Әр сегментке 67 таңба | Эмодзилер, «ақылды» тырнақшалар (“, ”), латын тілінен тыс әліпбилер, диакритикалық белгілер (é, ñ) |
Бұл жағдай сіздің қолданбаңыздың неліктен тек Unicode кесірінен бірнеше SMS жіберетінін түсіндіреді. Мұны шешу үшін енгізілетін деректерді қатаң түрде тазалау керек немесе ұзын, заманауи мәтіндік хабарламаларды жібергеніңіз үшін сізге айыппұл салмайтын арзан SMS API қызметіне ауысуыңыз қажет.
2-қадам: Кодтағы Unicode таңбаларын жою немесе ауыстыру
Unicode бөлінуін тоқтатудың ең жылдам бағдарламалық жолы — хабарламаны SMS шлюзіне жібермес бұрын оны тазалау. Бағыныңқы бағдарламаңызда (backend) GSM-7 стандартына жатпайтын таңбаларды жоятын немесе оларды ең жақын GSM-7 баламаларымен ауыстыратын утилиталық функция жаза аласыз.
Қарапайым regex үлгілері мен жолды ауыстыру ережелерін қолдана отырып, мұны әртүрлі бағдарламалау тілдерінде қалай жүзеге асыруға болатыны төменде көрсетілген.
Python тілінде жүзеге асыру
Python-да жолдарды нормализациялау, диакритикалық белгілерді жою және «ақылды» тырнақшаларды стандартты тік тырнақшаларға қайтару үшін unicodedata модулін пайдалануға болады:
import unicodedata
import re
def clean_for_gsm7(text):
# Replace common smart quotes and dashes
replacements = {
u'\u201c': '"', u'\u201d': '"',
u'\u2018': "'", u'\u2019': "'",
u'\u2013': '-', u'\u2014': '-'
}
for unicode_char, gsm_char in replacements.items():
text = text.replace(unicode_char, gsm_char)
# Normalize and strip accents
normalized = unicodedata.normalize('NFKD', text)
ascii_text = normalized.encode('ascii', 'ignore').decode('utf-8')
# Remove any remaining non-GSM-7 characters
gsm7_regex = re.compile(r'[^
a-zA-Z0-9^{}\\[~]|€$@!"#%&'()*+,-./:;<=>?_]')
cleaned_text = gsm7_regex.sub('', ascii_text)
return cleaned_text
message = "Hello! Your appointment is scheduled for tomorrow at 3 PM. See you there! 😊"
print(clean_for_gsm7(message))
# Output: "Hello! Your appointment is scheduled for tomorrow at 3 PM. See you there! "
Node.js (JavaScript) тілінде жүзеге асыру
JavaScript әзірлеушілері үшін GSM-7 стандартына сәйкес келмейтін кез келген таңбаларды жою үшін тұрақты өрнектерді (regular expressions) пайдаланатын ұқсас тәсілді қолдануға болады:
function sanitizeToGSM7(text) {
const smartReplacements = {
'[“”]': '"',
'[‘’]': "'",
'–': '-',
'—': '-'
};
let cleaned = text;
for (const [pattern, replacement] of Object.entries(smartReplacements)) {
cleaned = cleaned.replace(new RegExp(pattern, 'g'), replacement);
}
// Remove accents
cleaned = cleaned.normalize('NFD').replace(/[̀-ͯ]/g, '');
// Keep only GSM-7 compatible characters
const gsm7Pattern = /[^
a-zA-Z0-9^{}\\[~]|€$@!"#%&'()*+,-./:;<=>?_]/g;
return cleaned.replace(gsm7Pattern, '');
}
const rawMessage = "Your order is ready for pickup! 🚗";
console.log(sanitizeToGSM7(rawMessage));
// Output: "Your order is ready for pickup! "
3-қадам: «Ақылды» тырнақшалар мен диакритикалық белгілерді GSM-7 баламаларына айырбастау
Жиі жағдайда Unicode таңбалары хабарламаларыңызға Microsoft Word немесе Google Docs сияқты мәтіндік процессорлардан көшіріп-қою (copy-paste) әрекеттері арқылы кіріп кетеді. Бұл процессорлар стандартты тік тырнақшаларды (' және ") автоматты түрде бұйра «ақылды» тырнақшаларға (‘, ’, “, ”) айналдырады.
Осындай кішігірім өзгерістердің кесірінен жүйеңіздің бірнеше SMS жіберуін болдырмау үшін таңбаларды сәйкестендіру кестесін орнатуға болады. Бұл 70 таңбадан тұратын UCS-2 шектеуін іске қоспай-ақ, мәтініңіздің оқылуын сақтауға мүмкіндік береді.
- ‘ және ’ таңбаларын стандартты апострофқа ' айналдыру
- “ және ” таңбаларын стандартты тырнақшаға " айналдыру
- Ұзын сызықшаларды (—) және орташа сызықшаларды (―) стандартты дефиске (-) айналдыру
- é, á, í сияқты диакритикалық белгілері бар әріптерді олардың белгісіз баламаларына e, a, i айналдыру
Осы таңбаларды нақты сәйкестендіру арқылы сіз хабарламаларыңыздың кәсіби көрінісін сақтай отырып, бір сегмент шегінен шықпайсыз. Бұл әсіресе кездесулер туралы автоматты хабарламалар жіберу кезінде операциялық шығындарды азайтуды қалайтын стоматологиялық клиникалар, жөндеу шеберханалары және тіл мектептері сияқты жергілікті қызмет көрсету кәсіпорындары үшін өте пайдалы.
4-қадам: Тіркелген тарифті SMS шлюзіне ауысу
Unicode таңбаларын жою уақытша шешім болғанымен, бұл сізді брендіңіздің стилінен бас тартуға мәжбүрлейді. 2026 жылы тұтынушылар табиғи қарым-қатынасты, соның ішінде эмодзилерді, жергілікті диакритикалық белгілерді және кәсіби форматтауды күтеді. Тек жоғары тарифтерден қашу үшін тұтынушылармен байланысты қарапайым ASCII таңбаларымен шектеудің қажеті жоқ.
Twilio, Plivo және MessageBird сияқты дәстүрлі бұлттық агрегаторлар әрбір деректер пакеті үшін операторлық төлемдерді төлеуге мәжбүр болғандықтан, әр сегмент үшін қатаң тарифтеуді қолданады. Сонымен қатар, бұл ескірген платформаларды пайдалану күрделі A2P SMS тіркеуін, 10DLC оператор мақұлдауларын және ай сайынғы қайталанатын төлемдерді қажет етеді.
Қазіргі уақытта танымал баламалардың бірі — MySMSGate сияқты Android негізіндегі SMS шлюзін пайдалану. MySMSGate сіздің жеке Android телефондарыңыз бен SIM-карталарыңызды толыққанды жұмыс істейтін SMS жіберу құрылғысына айналдырады. Хабарламаларыңыз тікелей телефоныңыздың SIM-картасы арқылы жіберілетіндіктен (оған әдетте шексіз немесе айтарлықтай жеңілдігі бар жергілікті SMS топтамалары кіреді), сіз дәстүрлі сегменттік тарифтеуді толығымен айналып өтесіз.
MySMSGate хабарламаңызда Unicode таңбаларының, эмодзилердің болуына немесе оның бірнеше сегментке созылуына қарамастан, жіберілген әр SMS үшін $0.02 тіркелген тарифін алады. Ай сайынғы жазылымдар, келісімшарттар және операторлық тіркеу кешігулері жоқ. Егер хабарлама жеткізілмесе, балансыңыз автоматты түрде қайтарылады.
Егер сіз жаппай SMS жіберуді салыстыру, сенімділік және жеткізу жылдамдығы бойынша ең жақсы SMS API баламаларын іздесеңіз, Android SMS шлюзіне көшу Unicode тарифтеу мәселесін түп тамырымен шешеді.
5-қадам: Бірнеше телефон нөмірінен мәтіндік хабарламаларды басқаруды реттеу
Бірнеше жерде жұмыс істейтін жергілікті қызмет көрсету кәсіпорындары үшін хабарлама алмасу инфрақұрылымын басқару тез арада күрделеніп кетуі мүмкін. Егер сіз бірнеше филиалды — мысалы, бес стоматологиялық клиниканы немесе үш автожөндеу шеберханасын басқарсаңыз, сізге бірыңғай орталықтандырылған интерфейстен бірнеше телефон нөмірінен мәтіндік хабарламаларды басқаруды қолдайтын жүйе қажет.
MySMSGate көмегімен бір есептік жазба панеліне шектеусіз Android құрылғыларын қосуға болады. Бұл бірнеше нөмірді кедергісіз басқаруға мүмкіндік береді:
- Есептік жазбаңызды жасаңыз: API кілтін алу үшін MySMSGate сайтында тіркеліңіз.
- Android қолданбасын орнатыңыз: MySMSGate серіктес қолданбасын Android құрылғыларыңызға жүктеп алыңыз.
- QR-код арқылы қосылыңыз: Әр телефонның камерасын пайдаланып, веб-панельде көрсетілген QR-кодты сканерлеңіз. Бұл күрделі API кілттерін термей-ақ, құрылғыларды орталық есептік жазбаңызға бірден қосады.
- Екі SIM-картаны басқару (Dual SIM): Егер телефондарыңыз екі SIM-картаны қолдаса, хабарламаларды қай SIM-картадан жіберу керектігін тікелей панельден немесе API сұранысынан таңдай аласыз.
Бұл көп құрылғылы құрылым шығыс хабарламаларды тұтынушыларыңыз бұрыннан білетін жергілікті нөмірлер арқылы бағыттауға мүмкіндік береді, бұл хабарламалардың ашылу және жауап беру көрсеткіштерін айтарлықтай жақсартады. Барлық кіріс жауаптар автоматты түрде веб-негіздегі Web Conversations панеліне жіберіліп, тікелей компьютерден нақты уақыт режимінде екі жақты чат жүргізуге мүмкіндік береді.
6-қадам: REST API арқылы алғашқы Unicode-қауіпсіз SMS-ті жіберу
Егер сіз жеке әзірлеуші (indie developer), фрилансер немесе техникалық білімі бар бизнес иесі болсаңыз, MySMSGate қызметін бағдарламалық жасақтамаңызға біріктіру өте оңай. Платформа ең аз параметрлермен SMS хабарламаларын жіберуге мүмкіндік беретін қарапайым, бір нүктелі (single-endpoint) REST API ұсынады.
Төменде cURL көмегімен SMS жіберу үшін POST сұранысын жасаудың мысалы келтірілген. Сегмент құнының артуына алаңдамай-ақ, эмодзилер мен арнайы Unicode таңбаларын қосуға болатынына назар аударыңыз:
curl -X POST https://mysmsgate.net/api/v1/send
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"to": "+1234567890",
"message": "Your vehicle is ready for pickup! 🚗 Please reply to this message if you have any questions.",
"device_id": "your_device_id",
"sim_slot": 1
}'Басқа бағдарламалау тілдеріндегі толығырақ нұсқауларды ресми MySMSGate API құжаттамасынан таба аласыз. Онда Python, Node.js, PHP, Go және Ruby тілдеріне арналған дайын код үлгілері, сондай-ақ Zapier, Make.com және n8n сияқты автоматтандыру платформаларына арналған дайын коннекторлар бар.
Жиі қойылатын сұрақтар
Мұнда Unicode SMS бөлінуі, таңбалар шектеулері және тарифтеу құрылымдары туралы ең жиі қойылатын сұрақтарға жауаптар берілген.
Неліктен бір ғана эмодзи SMS-тің бірнеше хабарлама болып жіберілуіне себеп болады?
Стандартты мәтіндік хабарламалар GSM-7 кодтауын пайдаланады, бұл бір сегментке 160 таңбаға дейін жіберуге мүмкіндік береді. Эмодзилер GSM-7 таңбалар жиынтығына кірмейді. Эмодзи қосқанда, оператор бүкіл хабарламаны UCS-2 (Unicode) кодтауына ауыстыруға мәжбүр болады, бұл сегмент шегін 70 таңбаға дейін қысқартады. Егер хабарламаңыз 70 таңбадан ұзын болса, ол бірнеше сегментке бөлінеді және дәстүрлі API-лер сізден әр сегмент үшін ақы алады.
Жібермес бұрын мәтінде Unicode таңбалары бар-жоғын қалай тексеруге болады?
GSM-7 стандартына жатпайтын таңбаларды анықтау үшін онлайн SMS ұзындығын есептегіштерді пайдалануға немесе кодта қарапайым regex іздеуін іске қосуға болады. Сонымен қатар, шығыс SMS кезегіне жібермес бұрын, дерекқордан GSM-7-ге жатпайтын таңбаларды белгілейтін немесе жоятын валидация сценарийлерін жаза аласыз.
MySMSGate Unicode немесе көп сегментті хабарламалар үшін қосымша ақы ала ма?
Жоқ. Әрбір 160 немесе 70 таңбалық сегмент үшін ақы алатын Twilio немесе Vonage сияқты дәстүрлі API-лерден айырмашылығы, MySMSGate жіберілген әр хабарлама үшін $0.02 тіркелген төлем алады. Хабарлама тікелей Android телефоныңыздың SIM-картасы арқылы бағытталатындықтан, сіз сегмент үшін төлемейсіз, бұл жасырын төлемдер туралы алаңдамай, эмодзилер мен ұзын хабарламаларды жіберуге мүмкіндік береді.
Android SMS шлюзін пайдалану үшін маған операторлық немесе 10DLC тіркеуі қажет пе?
Жоқ. MySMSGate хабарламаларды сіздің жеке физикалық Android телефоныңыз бен SIM-картаңыз арқылы бағыттайтындықтан, хабарламаларыңыз стандартты тұлғааралық (P2P) трафик ретінде жіберіледі. Бұл күрделі, қымбат және уақытты қажет ететін A2P 10DLC тіркеуінен өтудің немесе оператордың мақұлдауын күтудің қажеті жоқ дегенді білдіреді.
Comments (0)
Be the first to comment!