انتقل إلى المحتوى الرئيسي

ترجمة الأرقام

📖 العودة إلى الوثائق الرئيسية

ترجمة الأرقام تحول أرقام الهواتف بين تنسيقات مختلفة لضمان تنسيق E.164 متسق في جميع أنحاء النظام.

الوثائق ذات الصلة

الوثائق الأساسية

تدفق معالجة المكالمات

الخدمات ذات الصلة

المراقبة


ترجمة الأرقام

ترجمة الأرقام تحول أرقام الهواتف بين تنسيقات مختلفة (محلية، وطنية، دولية) لضمان تنسيق E.164 متسق في جميع أنحاء النظام.

ما هي ترجمة الأرقام؟

ترجمة الأرقام تقوم بتطبيع أرقام الهواتف إلى تنسيق E.164 (المعيار الدولي) قبل معالجة المكالمات. وهذا يضمن:

  • ترقيم متسق في جميع أنحاء النظام
  • توجيه صحيح إلى الوجهات على الشبكة وخارجها
  • التوافق مع قنوات SIP الدولية وشبكات IMS

تنسيق E.164: [رمز الدولة][الرقم الوطني] (بدون بادئة +، بدون مسافات)

  • مثال: 61403123456 (رقم موبايل أسترالي)
  • مثال: 16505551234 (رقم أمريكي)

متى تحدث الترجمة

تحدث الترجمة:

  • قبل بحث Sh
  • قبل بحث HLR
  • قبل تفويض OCS
  • قبل إنشاء XML لخطة الاتصال

للمكالمات MT: ترجمة رقم الوجهة (الطرف المتصل) للمكالمات MO: ترجمة كل من أرقام المصدر والوجهة

التكوين

config :tas,
number_translate: %{
country_code: :PF, # رمز الدولة ISO 3166-1 alpha-2
localAreaCode: "617" # رمز المنطقة الافتراضي للأرقام القصيرة
}

المعلمات:

  • country_code: رمز الدولة ISO كذرة (مثل :AU، :US، :PF)
  • localAreaCode: رمز المنطقة المضاف إلى الأرقام المحلية القصيرة

رموز الدول المدعومة

يتضمن TAS منطق الترجمة لهذه الدول:

رمز الدولةالدولةالتنسيقات المدعومةبادئة E.164
:AUأستراليا0NSN (10 أرقام)، SN (8 أرقام)، E.16461
:USالولايات المتحدةNPANXXXXXX (10 أرقام)، 1+NPANXXXXXX، E.1641
:PFبولينيزيا الفرنسيةمحلي (6 أرقام)، وطني (8 أرقام)، E.164689

إضافة رموز دول جديدة: يجب تنفيذ منطق الترجمة الخاص بكل دولة في lib/numbertranslation.ex. اتصل بمهندس التكامل الخاص بك لإضافة دول جديدة.

سلوكيات الترجمة الخاصة

1. إزالة بادئات حظر CLI

قبل ترج��ة التنسيق، تتم إزالة بادئات حظر CLI:

الإدخال:  *67555123456
الخطوة 1: إزالة *67 → 555123456
الخطوة 2: الترجمة → 1555123456 (إذا كانت في الولايات المتحدة)

2. إزالة معلمات SIP

تتم إزالة المعلمات بعد الفواصل المنقوطة:

الإدخال:  61403123456;npdi;rn=+61400000000
الخطوة 1: إزالة ;npdi;rn=... → 61403123456
الخطوة 2: الترجمة → 61403123456

3. إزالة الأحرف غير الرقمية

تتم إزالة جميع الأحرف غير الرقمية (باستثناء +):

الإدخال:  +61 (403) 123-456
الخطوة 1: إزالة التنسيق → +61403123456
الخطوة 2: الترجمة → 61403123456

المتغيرات المعينة بعد الترجمة

المتغيرالقيمةالوصف
destination_numberتنسيق E.164رقم الوجهة المعياري
tas_destination_numberتنسيق E.164نفس destination_number (كلاهما معين للتوافق)
effective_caller_id_numberتنسيق E.164رقم المصدر المعياري (مكالمات MO)

ماذا يحدث عندما تفشل الترجمة

السيناريو: رمز الدولة غير معرف

config :tas, number_translate: %{country_code: :XX}  # غير صالح

النتيجة: {:error, "رمز الدولة غير معرف"} - تم رفض المكالمة

السيناريو: تنسيق رقم غير صالح

الإدخال: "abc123" (يحتوي على أحرف)
الخطوة 1: إزالة غير الأرقام → "123"
الخطوة 2: قصيرة جدًا، لا يمكن مطابقة أي نمط
النتيجة: قد تمر كما هي أو ترفض بناءً على منطق خطة الاتصال

أفضل ممارسة: تحقق دائمًا من توفير المشترك بأرقام E.164 الصحيحة في HSS.

اختبار ترجمة الأرقام

أداة اختبار ترجمة واجهة الويب (/translate):

  1. انتقل إلى /translate في لوحة التحكم
  2. اختر رمز الدولة من القائمة المنسدلة
  3. أدخل رقم الاختبار بأي تنسيق
  4. عرض الناتج E.164 المترجم
  5. اختبار تنسيقات متعددة للتحقق

سيناريوهات اختبار شائعة:

  • الرموز القصيرة المحلية → E.164
  • التنسيق الوطني (0NSN) → E.164
  • التنسيق الدولي (+CC) → E.164
  • الأرقام مع بادئات CLI → تمت إزالتها وترجمتها
  • الأرقام مع التنسيق (مسافات، شرطات) → E.164 نظيف

استكشاف أخطاء ترجمة الأرقام

المشكلة: المكالمات تفشل مع "UNALLOCATED_NUMBER"

  1. تحقق من تنسيق الرقم المترجم:

    • استخدم أداة /translate لاختبار الرقم
    • تحقق من أن الناتج يتطابق مع تنسيق E.164 المتوقع
    • تأكد من صحة رمز الدولة ورمز المنطقة
  2. تحقق من بحث Sh:

    • يتم استخدام الرقم المترجم لاستعلام Sh
    • استخدم /sh_test مع الرقم المترجم
    • تحقق من وجود المشترك مع ذلك MSISDN
  3. تحقق من متغيرات خطة الاتصال:

    • راجع السجلات لقيمة destination_number
    • تأكد من حدوث الترجمة قبل خطة الاتصال

المشكلة: تم تطبيق رمز منطقة خاطئ

# التكوين
config :tas, number_translate: %{
country_code: :AU,
localAreaCode: "617" # خاطئ لمنطقتك
}

# الإدخال: 12345678 (رقم محلي مكون من 8 أرقام)
# الناتج: 6161712345678 (غير صحيح - رمز منطقة مزدوج)
# الحل: تعيين رمز المنطقة الصحيح لنشر الخاص بك

المشكلة: الأرقام الدولية غير معترف بها

تحقق مما إذا كان الرقم يتضمن رمز الدولة:

  • +61403123456 أو 61403123456 → معترف بها
  • 0403123456 في تكوين رمز الدولة الخاطئ → تم توجيهها بشكل خاطئ

سلوك الترجمة MO مقابل MT

المكالمات MT (المتنقلة المستلمة):

  • يتم ترجمة رقم الوجهة (الطرف المتصل) فقط
  • يتم تمرير رقم المصدر (المتصل) كما هو من SIP
  • يتم استخدام الوجهة لبحث Sh عن المشترك المتصل به

المكالمات MO (المتنقلة الصادرة):

  • يتم ترجمة رقم الوجهة (الطرف المتصل)
  • يتم أيضًا ترجمة رقم المصدر (الطرف المتصل)
  • يتم استخدام المصدر لبحث Sh عن المشترك المتصل
  • يتم تطبيع كلا الرقمين لتسجيل متسق / CDR

أفضل الممارسات

  1. استخدم رمز الدولة الصحيح:

    • قم بتعيين country_code ليتناسب مع منطقة النشر الخاصة بك
    • اختبر بدقة قبل الإنتاج
  2. تكوين رمز المنطقة المناسب:

    • يجب أن يتطابق localAreaCode مع المنطقة الافتراضية لشبكتك
    • يستخدم للأرقام القصيرة بدون رمز منطقة
  3. اختبر جميع تنسيقات الأرقام:

    • المحلية (الرموز القصيرة)
    • الوطنية (تنسيق 0NSN)
    • الدولية (تنسيق +CC)
    • أرقام الخدمة الخاصة (الطوارئ، البريد الصوتي)
  4. راقب سجلات الترجمة:

    • تحقق من أخطاء "رمز الدولة غير معرف"
    • راقب التنسيقات غير المتوقعة للأرقام
    • تحقق من أن الناتج E.164 يتطابق مع التوقعات
  5. وثق خطة ترقيمك:

    • حدد التنسيقات التي سيستخدمها المشتركون
    • اختبر كل تنسيق في أداة /translate
    • درب موظفي العمليات على التنسيقات المتوقعة