إذا لاحظت ارتفاعًا كبيرًا في تكاليف فواتير SMS لأن نظامك يرسل رسائل متعددة بسبب ترميز Unicode، فإن كيفية إيقاف ذلك هي على الأرجح السؤال الأكثر إلحاحًا في ذهنك. يمكن لعلامة اقتباس ذكية أو رمز تعبيري (emoji) واحد غير مقصود أن يحول فورًا رسالة نصية قياسية منخفضة التكلفة إلى ثلاثة أجزاء منفصلة محاسب عليها، مما يستنزف ميزانية التسويق والعمليات لديك.

الخطوة 1: فهم سبب فرض Unicode لتقسيم رسائل SMS إلى أجزاء متعددة

لإيقاف بوابة SMS الخاصة بك عن تقسيم الرسائل الفردية إلى أجزاء متعددة محاسب عليها، يجب عليك أولاً فهم الآليات التقنية الأساسية لترميز الرسائل القصيرة. تستخدم شبكات الاتصالات التقليدية معيارين رئيسيين للترميز للرسائل النصية: GSM-7 و UCS-2 (Unicode).

بموجب ترميز GSM-7 القياسي، يمكن أن يحتوي جزء SMS الواحد على ما يصل إلى 160 حرفًا. وتتضمن مجموعة الأحرف هذه الأحرف اللاتينية القياسية (A-Z، a-z)، والأرقام (0-9)، وبعض علامات الترقيم الشائعة. ومع ذلك، في اللحظة التي يحتوي فيها نص رسالتك على حرف واحد خارج هذه المجموعة الأساسية - مثل علامة الاقتباس المائلة (’)، أو حرف مشكول (á، é، ö)، أو رمز تعبيري (emoji) - يتغير ترميز الرسالة بالكامل تلقائيًا إلى UCS-2.

عندما تتحول رسالتك إلى ترميز UCS-2 Unicode، ينخفض حد الأحرف لكل جزء من 160 حرفًا إلى 70 حرفًا فقط. إذا كان طول رسالتك 140 حرفًا، فإنها تتسع بسهولة في جزء GSM-7 واحد. ولكن في ترميز UCS-2، تتطلب نفس الـ 140 حرفًا جزأين منفصلين. يقوم موفرو واجهات برمجة التطبيقات (API) التقليديون مثل Twilio، و Vonage، و MessageBird بمحاسبتك لكل جزء، مما يعني تضاعف تكلفتك أو تضاعفها ثلاث مرات فورًا لرسالة واحدة.

معيار الترميزالحد الأقصى للأحرف (جزء واحد)الحد الأقصى للأحرف (متعدد الأجزاء)أحرف التنشيط الشائعة
GSM-7160 حرفًا153 حرفًا لكل جزءالأحرف الإنجليزية القياسية، الأرقام، علامات الترقيم الأساسية
UCS-2 (Unicode)70 حرفًا67 حرفًا لكل جزءالرموز التعبيرية (Emojis)، علامات الاقتباس الذكية (“، ”)، الأبجديات غير اللاتينية، الحركات التشكيلية (é، ñ)

يوضح هذا السلوك سبب قيام تطبيقك بإرسال رسائل SMS متعددة بسبب Unicode. لحل هذه المشكلة، تحتاج إما إلى تطهير بيانات الإدخال بدقة أو الانتقال إلى واجهة برمجة تطبيقات SMS منخفضة التكلفة لا تعاقبك على إرسال رسائل نصية أطول وحديثة.

الخطوة 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'[^\n\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:

function sanitizeToGSM7(text) {
    const smartReplacements = {
        '[\u201c\u201d]': '"',
        '[\u2018\u2019]': "'",
        '\u2013': '-',
        '\u2014': '-'
    };

    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(/[\u0300-\u036f]/g, '');

    // Keep only GSM-7 compatible characters
    const gsm7Pattern = /[^\n\r 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. تقوم هذه المعالجات تلقائيًا بتحويل علامات الاقتباس المستقيمة القياسية (' و ") إلى علامات اقتباس مائلة "ذكية" (، ، ، ).

لمنع نظامك من إرسال رسائل SMS متعددة بسبب هذه التغييرات الطفيفة، يمكنك إعداد جدول لمطابقة الأحرف. يتيح لك ذلك الاحتفاظ بقابلية قراءة النص الخاص بك دون تفعيل حد الـ 70 حرفًا الخاص بـ UCS-2.

  • تحويل و إلى علامة الفاصلة العليا القياسية '
  • تحويل و إلى علامة الاقتباس القياسية "
  • تحويل الشرطات الطويلة () والشرطات المتوسطة () إلى شرطات قياسية (-)
  • تحويل الأحرف المشكولة مثل é، á، í إلى نظرائها غير المشكولة e، a، i

من خلال مطابقة هذه الأحرف بشكل صريح، فإنك تحافظ على المظهر الاحترافي لرسائلك مع البقاء بدقة ضمن حد الجزء الواحد. هذا مفيد بشكل خاص للشركات الخدمية المحلية مثل عيادات الأسنان، وورش الإصلاح، ومدارس اللغات التي تحتاج إلى إبقاء التكاليف التشغيلية منخفضة أثناء إرسال تحديثات المواعيد المؤتمتة.

الخطوة 4: الانتقال إلى بوابة SMS تعتمد الفوترة بسعر ثابت للأجزاء

بينما تعد إزالة أحرف Unicode حلاً بديلاً عمليًا، إلا أنها تجبرك على التنازل عن أسلوب علامتك التجارية. في عام 2026، يتوقع العملاء تواصلًا طبيعيًا، والذي غالبًا ما يتضمن رموزًا تعبيرية، ولهجات محلية، وتنسيقًا احترافيًا. لم يعد من الضروري تقييد اتصالات عملائك بأحرف ASCII الأساسية لمجرد تجنب فواتير الاتصالات المرتفعة.

يفرض مجمعو الخدمات السحابية التقليديون مثل Twilio، و Plivo، و MessageBird فوترة صارمة لكل جزء لأنهم يجب أن يدفعوا رسوم شركات الاتصالات مقابل كل حزمة بيانات. بالإضافة إلى ذلك، يتطلب استخدام هذه المنصات القديمة إتمام إجراءات تسجيل A2P SMS المعقدة، وموافقات شركات الاتصالات 10DLC، والرسوم الشهرية المتكررة.

هناك بديل يزداد شعبية وهو استخدام بوابة SMS تعتمد على نظام Android مثل MySMSGate. تقوم MySMSGate بتحويل هواتف Android وبطاقات SIM الخاصة بك إلى جهاز إرسال رسائل SMS كامل الوظائف. نظرًا لأن رسائلك يتم إرسالها مباشرة عبر بطاقة SIM الخاصة بهاتفك (والتي تتضمن عادةً باقات SMS محلية غير محدودة أو مخفضة للغاية)، فإنك تتجنب الفوترة التقليدية القائمة على الأجزاء تمامًا.

تفرض MySMSGate سعرًا ثابتًا قدره 0.02 دولار لكل رسالة SMS مرسلة، بغض النظر عما إذا كانت رسالتك تحتوي على أحرف Unicode أو رموز تعبيرية أو تمتد عبر أجزاء متعددة. لا توجد اشتراكات شهرية، ولا عقود، ولا تأخير في التسجيل لدى شركات الاتصالات. وإذا فشل تسليم الرسالة، يتم استرداد رصيدك تلقائيًا.

إذا كنت تبحث عن أفضل بدائل واجهات برمجة تطبيقات SMS لمقارنة الرسائل الجماعية والموثوقية ومعدلات التسليم، فإن الانتقال إلى بوابة Android SMS يتجاوز مشكلة فوترة Unicode بالكامل من مصدرها.

الخطوة 5: إعداد إدارة الرسائل النصية من أرقام هواتف متعددة

بالنسبة للشركات الخدمية المحلية التي تعمل عبر مواقع متعددة، يمكن أن تصبح إدارة البنية التحتية للرسائل معقدة بسرعة. إذا كنت تدير فروعًا متعددة - مثل خمس عيادات أسنان أو ثلاث ورش لإصلاح السيارات - فأنت بحاجة إلى نظام يدعم إدارة الرسائل النصية من أرقام هواتف متعددة من واجهة مركزية واحدة.

مع MySMSGate، يمكنك توصيل عدد غير محدود من أجهزة Android بلوحة تحكم حساب واحد. يتيح لك ذلك إدارة أرقام متعددة بسلاسة:

  1. إنشاء حسابك: سجل في MySMSGate للحصول على مفتاح واجهة برمجة التطبيقات (API key) الخاص بك.
  2. تثبيت تطبيق Android: قم بتنزيل التطبيق المصاحب لـ MySMSGate على أجهزة Android الخاصة بك.
  3. الاتصال عبر رمز QR: امسح رمز QR المعروض على لوحة التحكم الإلكترونية باستخدام كاميرا كل هاتف. يربط هذا الأجهزة فورًا بحسابك المركزي دون الحاجة إلى كتابة مفاتيح API معقدة.
  4. إدارة شرائح الاتصال الثنائية (Dual SIMs): إذا كانت هواتفك تدعم شريحتين، فيمكنك اختيار فتحة SIM التي تريد إرسال رسائلك منها بدقة مباشرةً من داخل لوحة التحكم أو عبر استدعاء واجهة برمجة التطبيقات (API).

يتيح لك هذا الهيكل متعدد الأجهزة توجيه الإشعارات الصادرة عبر أرقام محلية يتعرف عليها عملاؤك بالفعل، مما يحسن معدلات فتح الرسائل والاستجابة لها بشكل كبير. يتم توجيه جميع الردود الواردة تلقائيًا إلى لوحة تحكم المحادثات عبر الويب (Web Conversations)، مما يتيح الدردشة ثنائية الاتجاه في الوقت الفعلي مباشرة من جهاز الكمبيوتر الخاص بك.

الخطوة 6: إرسال أول رسالة SMS آمنة من الـ Unicode عبر واجهة برمجة تطبيقات REST API

إذا كنت مطورًا مستقلًا، أو مستقلاً (Freelancer)، أو صاحب عمل تقني، فإن دمج MySMSGate في برنامجك أمر غاية في السهولة. تقدم المنصة واجهة برمجة تطبيقات REST API نظيفة ذات نقطة نهاية واحدة تتيح لك تشغيل إشعارات SMS بأقل قدر من الإعداد.

إليك مثال على كيفية إجراء طلب POST لإرسال رسالة SMS باستخدام cURL. لاحظ أنه يمكنك تضمين الرموز التعبيرية وأحرف 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 الرسمية، والتي تتضمن مقتطفات برمجية جاهزة للإنتاج للغات Python و Node.js و PHP و Go و Ruby، إلى جانب موصلات جاهزة لمنصات الأتمتة مثل Zapier و Make.com و n8n.

الأسئلة الشائعة

إليك إجابات على الأسئلة الأكثر شيوعًا المتعلقة بتقسيم رسائل Unicode SMS، وحدود الأحرف، وهياكل الفوترة.

لماذا يتسبب رمز تعبيري واحد في إرسال رسالتي القصيرة كرسائل متعددة؟

تستخدم الرسائل النصية القياسية ترميز GSM-7، مما يسمح بما يصل إلى 160 حرفًا لكل جزء. الرموز التعبيرية ليست جزءًا من مجموعة أحرف GSM-7. عند إضافة رمز تعبيري، يجب على شركة الاتصالات تبديل ترميز الرسالة بالكامل إلى UCS-2 (Unicode)، مما يخفض حد الجزء إلى 70 حرفًا. إذا كانت رسالتك أطول من 70 حرفًا، فسيتم تقسيمها إلى أجزاء متعددة، وتفرض عليك واجهات برمجة التطبيقات التقليدية رسومًا مقابل كل جزء.

كيف يمكنني التحقق مما إذا كان النص الخاص بي يحتوي على Unicode قبل الإرسال؟

يمكنك استخدام حاسبات طول رسائل SMS عبر الإنترنت أو تشغيل بحث بسيط بالتعبيرات النمطية (regex) في الكود الخاص بك لاكتشاف الأحرف غير المتوافقة مع GSM-7. بدلاً من ذلك، يمكنك كتابة نصوص برمجية للتحقق من الصحة تقوم بتمييز أو إزالة الأحرف غير المتوافقة مع GSM-7 من قاعدة البيانات الخاصة بك قبل تمريرها إلى قائمة انتظار رسائل SMS الصادرة.

هل تفرض MySMSGate رسومًا إضافية على رسائل Unicode أو الرسائل متعددة الأجزاء؟

لا. على عكس واجهات برمجة التطبيقات التقليدية مثل Twilio أو Vonage التي تحاسب لكل جزء مكون من 160 أو 70 حرفًا، تفرض MySMSGate رسومًا ثابتة قدرها 0.02 دولار لكل رسالة مرسلة. نظرًا لأنه يتم توجيه الرسالة مباشرةً عبر بطاقة SIM بهاتف Android الخاص بك، فإنك لا تدفع مقابل كل جزء، مما يتيح لك إرسال رموز تعبيرية ورسائل طويلة دون القلق بشأن الرسوم الخفية.

هل أحتاج إلى تسجيل لدى شركة الاتصالات أو تسجيل 10DLC لاستخدام بوابة Android SMS؟

لا. نظرًا لأن MySMSGate توجه الرسائل عبر هاتفك الفعلي الذي يعمل بنظام Android وبطاقة SIM الخاصة بك، فإن رسائلك تُرسل كحركة مرور قياسية من شخص لآخر (P2P). هذا يعني أنك لست بحاجة إلى الخضوع لتسجيل A2P 10DLC المعقد والمكلف والمستهلك للوقت أو انتظار موافقات شركات الاتصالات.