الخدمات التكميلية
تكوين وتنفيذ خدمات تحويل المكالمات، حظر CLI، والمكالمات الطارئة.
الوثائق ذات الصلة
الوثائق الأساسية
- 📋 الوثيقة الرئيسية - نظرة عامة وبداية سريعة
- 🔧 دليل التكوين - معلمات تكوين الخدمة (رموز الطوارئ، حظر CLI، تحويل المكالمات الافتراضي)
- 🔧 دليل العمليات - اختبار الخدمات التكميلية
معالجة المكالمات ومصادر البيانات
- 🔀 تكوين خطة الاتصال - تنفيذ الخدمات في منطق خطة الاتصال
- 👥 واجهة Sh - إعدادات تحويل المكالمات لـ MMTel-Config
- 📡 SS7 MAP - تحويل المكالمات المعتمد على HLR (بديل لـ Sh)
- 🔢 ترجمة الأرقام - معالجة بادئات حظر CLI
تفاعلات الخدمة
- 💳 الشحن عبر الإنترنت - المكالمات الطارئة تتجاوز OCS
- 📞 البريد الصوتي - تحويل المكالمات في طرق مشغولة/لا رد إلى البريد الصوتي
المراقبة
- 📊 مرجع المقاييس - تحويل المكالمات ومقاييس الخدمة
- 📈 مقاييس خطة الاتصال - مقاييس استخدام الخدمة
الخدمات التكميلية (تحويل المكالمات / حظر CLI / رموز الطوارئ)
تكوين لبادئات CLI المحظورة، رموز المكالمات الطارئة، وبيانات تحويل المكالمات الافتراضية (بيانات تحويل المكالمات / لا رد تُستخدم فقط عندما لا تُرجع بيانات MMTel-Config من المستودع على Sh).
config :tas,
...
blocked_cli_prefix: ["*67"],
call_forward_not_reachable_destination: "2222",
default_no_reply_timer: 30,
emergency_call_codes: ["911", "912", "913", "sos"],
...
معلمات التكوين:
-
blocked_cli_prefix(قائمة من السلاسل النصية): بادئات تؤدي إلى حجب CLI (معرف خط الاتصال)- مثال:
["*67"]- الاتصال بـ *67 قبل رقم يخفي هوية المتصل - تُستخدم في خطة الاتصال لتعيين متغير
cli_withheld
- مثال:
-
call_forward_not_reachable_destination(سلسلة نصية): الوجهة الافتراضية لتحويل المكالمات غير القابلة للوصول (CFNRc)- تُستخدم فقط عندما لا تُرجع MMTel-Config من واجهة Sh
- مثال:
"2222"- تحويل إلى البريد الصوتي
-
default_no_reply_timer(عدد صحيح): المهلة الافتراضية بالثواني قبل تفعيل CFNRc- تُستخدم فقط عندما لا تُرجع MMTel-Config من واجهة Sh
- مثال:
30- يرن لمدة 30 ثانية قبل التحويل
-
emergency_call_codes(قائمة من السلاسل النصية): أرقام خدمات الطوارئ لمنطقتك- يتم التحقق منها أثناء تفويض المكالمات لاكتشاف المكالمات الطارئة
- يتم دائمًا التحقق من URNs الطارئة لـ SIP (مثل
<urn:service:sos>) بالإضافة إلى هذه الرموز - أمثلة شائعة:
["911", "112", "000", "999", "sos"] - انظر قسم المكالمات الطارئة للاستخدام التفصيلي
كيف يعمل حظر هوية المتصل
يدعم TAS طريقتين لحظر هوية المتصل (حجب CLI)، وكلاهما يعيّن متغير خطة الاتصال cli_withheld إلى "true":
الطريقة 1: حظر قائم على البادئة
عندما يقوم المشترك بالاتصال برقم وجهة مسبوق برمز من blocked_cli_prefix:
- تكتشف وحدة ترجمة الأرقام البادئة (على سبيل المثال، المتصل يتصل بـ
*67555123456) - تُزال البادئة من رقم الوجهة (تصبح
555123456) - يتم تعيين متغير
cli_withheldإلى"true" - يمكن لخطة الاتصال بعد ذلك استخدام هذا المتغير لإخفاء هوية المتصل
مثال على التكوين:
blocked_cli_prefix: ["*67"] # حظر على الطراز الأمريكي
blocked_cli_prefix: ["#31#"] # حظر على الطراز الأوروبي GSM
blocked_cli_prefix: ["*67", "#31#"] # دعم كلاهما
الطريقة 2: اكتشاف رأس SIP From
عندما يطلب UE/الهاتف الخصوصية عبر رؤوس SIP:
- يتحقق TAS مما إذا كان اسم العرض في رأس SIP From يحتوي على "anonymous" (غير حساس لحالة الأحرف)
- إذا تم العثور عليه، يتم تعيين متغير
cli_withheldإلى"true" - هذا يكرم طلب الخصوصية للمشترك الذي تم تعيينه على مستوى الجهاز
تنفيذ حظر CLI في خطة الاتصال
يقوم TAS بتعيين متغير cli_withheld، لكن يجب على XML خطة الاتصال الخاصة بك تنفيذ سلوك الحظر الفعلي:
<extension name="CLI-Privacy" continue="true">
<condition field="${cli_withheld}" expression="true">
<!-- إخفاء هوية المتصل -->
<action application="set" data="effective_caller_id_name=anonymous"/>
<action application="set" data="effective_caller_id_number=anonymous"/>
<action application="set" data="origination_privacy=hide_number"/>
<!-- تعيين الخصوصية لـ P-Asserted-Identity اختيارياً -->
<action application="set" data="sip_h_Privacy=id"/>
</condition>
</extension>
المتغيرات التي يتم تعيينها بواسطة TAS لحظر CLI:
يقوم TAS بتعيين هذه المتغيرات قبل تنفيذ خطة الاتصال:
| المتغير | النوع | القيم | الوصف |
|---|---|---|---|
cli_withheld | سلسلة نصية | "true" أو "false" | يشير إلى ما إذا كان تم طلب حظر CLI عبر البادئة أو رأس From |
tas_destination_number | سلسلة نصية | رقم موحد | الوجهة مع إزالة بادئة الحظر (مثل 555123456) |
destination_number | سلسلة نصية | رقم موحد | نفس tas_destination_number (يتم تعيين كلاهما) |
المتغيرات التي يجب أن تعينها خطة الاتصال الخاصة بك (عندما يكون cli_withheld="true"):
تتحكم هذه المتغيرات في كيفية تقديم هوية المتصل:
| المتغير | القيمة الموصى بها | الغرض |
|---|---|---|
effective_caller_id_number | "anonymous" | يخفي رقم هاتف المتصل |
effective_caller_id_name | "anonymous" | يخفي اسم عرض المتصل |
origination_privacy | "hide_number" | علامة الخصوصية لـ SIP للجزء الخارجي |
sip_h_Privacy | "id" | رأس الخصوصية لـ SIP (RFC 3323) |
sip_h_P-Asserted-Identity | (غير محدد أو إزالة) | اختياري: إزالة رأس P-Asserted-Identity |
مثال كامل لخطة الاتصال:
<extension name="CLI-Privacy-Handler" continue="true">
<condition field="${cli_withheld}" expression="true">
<!-- سجل لأغراض استكشاف الأخطاء وإصلاحها -->
<action application="log" data="INFO تم طلب حظر CLI للمكالمة إلى ${tas_destination_number}"/>
<!-- إخفاء هوية المتصل في المكالمة الخارجية -->
<action application="set" data="effective_caller_id_name=anonymous"/>
<action application="set" data="effective_caller_id_number=anonymous"/>
<action application="set" data="origination_privacy=hide_number"/>
<!-- تعيين رؤوس الخصوصية لـ SIP -->
<action application="set" data="sip_h_Privacy=id"/>
<!-- اختياري: إزالة P-Asserted-Identity إذا كان موجوداً -->
<action application="unset" data="sip_h_P-Asserted-Identity"/>
<!-- يتم تنفيذ الإجراء المضاد إذا كان cli_withheld غير صحيح -->
<anti-action application="log" data="DEBUG استخدام هوية المتصل العادية: ${msisdn}"/>
<anti-action application="set" data="effective_caller_id_number=${msisdn}"/>
</condition>
</extension>
<!-- تستمر هذه الإضافة في توجيه المكالمة الفعلية -->
<extension name="Route-Outbound-Call">
<condition field="${tas_destination_number}" expression="^(.+)$">
<action application="bridge" data="sofia/gateway/trunk/${tas_destination_number}"/>
</condition>
</extension>
ملاحظات هامة:
- يمكن أن تعمل كلا الطريقتين في وقت واحد (ت triggers الحظر بواسطة البادئة أو رأس SIP)
- يتم دائماً إزالة البادئة من رقم الوجهة، حتى إذا لم تنفذ خطة الاتصال الخصوصية
- متغير
cli_withheldهو سلسلة نصية ("true"أو"false")، وليس قيمة منطقية - يتم تنفيذ سلوك تحويل المكالمات / حظر CLI في XML خطة الاتصال الخاصة بك
- يتضمن تكوين المثال هذه الميزات، ولكن إذا لم تقم بتعريفها في خطة الاتصال الخاصة بك، فلن تعمل
- يتم تعيين المتغيرات خلال تدفق المكالمة MO (المكالمات الصادرة من الهاتف المحمول) فقط
كيف يعمل تحويل المكالمات
يسمح تحويل المكالمات (المعروف أيضًا باسم تحويل الاتصالات أو CDIV) للمشتركين بإعادة توجيه المكالمات الواردة إلى وجهة أخرى. يدعم TAS أنواعًا متعددة من تحويل المكالمات مع سلوك قابل للتكوين.
أنواع تحويل المكالمات
1. تحويل المكالمات الكل (CFA) - تحويل غير مشروط
- المتغير:
call_forward_all_destination - عندما يكون نشطًا: يتم تحويل جميع المكالمات الواردة على الفور
- الأولوية: يتم التحقق منها أولاً (بعد تحويل HLR)
- الاستخدام الشائع: يرغب المشترك في إرسال جميع المكالمات إلى رقم آخر
- مثال: تحويل مكالمات العمل إلى الهاتف الشخصي
2. تحويل المكالمات مشغول (CFB)
- عندما يكون نشطًا: يتم تحويل المكالمة عندما يكون المشترك بالفعل في مكالمة
- استجابة SIP: 486 مشغول يؤدي إلى التحويل
- الاستخدام الشائع: تحويل إلى البريد الصوتي عند وجود مكالمة أخرى
3. تحويل المكالمات لا رد (CFNRy)
- المتغير:
no_reply_timer - عندما يكون نشطًا: يتم تحويل المكالمة بعد الرنين لعدد محدد من الثواني دون رد
- المدة الزمنية: عادةً 15-30 ثانية
- الاستخدام الشائع: تحويل إلى البريد الصوتي إذا لم يتم الرد
4. تحويل المكالمات غير القابلة للوصول (CFNRc)
- المتغير:
call_forward_not_reachable_destination - عندما يكون نشطًا: يكون المشترك غير متصل، غير مسجل، أو غير قابل للوصول
- استجابة SIP: 480 غير متاح مؤقتًا
- الاستخدام الشائع: تحويل إلى البريد الصوتي عندما يكون الهاتف مغلقًا
- الافتراضي: معلمة التكوين المستخدمة إذا لم يكن هناك MMTel-Config
أولوية مصادر البيانات
يتم استرداد بيانات تحويل المكالمات من مصادر متعددة مع هذه الأولوية:
1. بيانا�� HLR (SS7 MAP) [أعلى أولوية - تتجاوز الجميع]
↓ (إذا لم يكن هناك تحويل HLR نشط)
2. MMTel-Config (واجهة Sh) [إعدادات خاصة بالمشترك من HSS]
↓ (إذا لم تُرجع MMTel-Config)
3. القيم الافتراضية للتكوين [أدنى أولوية - قيم احتياطية]
لماذا هذه الأولوية؟
- بيانات HLR: حالة التحويل في الوقت الفعلي لسيناريوهات التجوال/الشبكة
- MMTel-Config: تفضيلات المشترك المكونة في IMS
- القيم الافتراضية للتكوين: احتياطي على مستوى الشبكة (عادةً البريد الصوتي)
متغيرات خطة الاتصال لتحويل المكالمات
| المتغير | النوع | المصدر | قيمة المثال | الوصف |
|---|---|---|---|---|
call_forward_all_destination | سلسلة نصية | Sh/MMTel أو "none" | "61403555123" | وجهة CFA إذا كانت نشطة |
call_forward_not_reachable_destination | سلسلة نصية | Sh/MMTel أو التكوين | "2222" | وجهة CFNRc (البريد الصوتي) |
no_reply_timer | عدد صحيح | Sh/MMTel أو التكوين | 30 | الثواني للرن قبل CFNRy |
msrn | سلسلة نصية | HLR (MT فقط) | "61400123456" | MSRN أو الرقم المحول من HLR |
tas_destination_number | سلسلة نصية | محسوبة | "2222" | الوجهة الفعلية للتوجيه (قد تكون رقم التحويل) |
تنفيذ تحويل المكالمات في خطة الاتصال
مثال على خطة الاتصال MT مع تحويل المكالمات:
<!-- تحقق من تحويل المكالمات الكل (أعلى أولوية بعد HLR) -->
<extension name="Check-CFA" continue="true">
<condition field="${call_forward_all_destination}" expression="^(?!none$).+$">
<action application="log" data="INFO تحويل المكالمات الكل نشط إلى ${call_forward_all_destination}"/>
<action application="set" data="tas_destination_number=${call_forward_all_destination}"/>
</condition>
</extension>
<!-- محاولة التوصيل إلى المشترك -->
<extension name="Bridge-To-Subscriber">
<condition field="${msrn}" expression="^none$">
<!-- لا يوجد MSRN، توجيه إلى المشترك المحلي -->
<action application="set" data="call_timeout=${no_reply_timer}"/>
<action application="bridge" data="sofia/internal/${tas_destination_number}@${scscf_address}"/>
<!-- إذا فشل التوصيل، تحقق من التحويل -->
<action application="log" data="INFO فشل التوصيل، التحقق من تحويل المكالمات"/>
<!-- تحويل المكالمات غير القابلة للوصول -->
<action application="set" data="forward_destination=${call_forward_not_reachable_destination}"/>
<action application="log" data="INFO تحويل إلى ${forward_destination}"/>
<action application="answer"/>
<!-- توجيه إلى البريد الصوتي لـ TAS ESL (إيداع)؛ انظر voicemail.md -->
<action application="set" data="tas_vm_mode=deposit"/>
<action application="set" data="tas_vm_mailbox=${msisdn}"/>
<action application="set" data="tas_vm_caller=${effective_caller_id_number}"/>
<action application="socket" data="127.0.0.1:8084 async full"/>
</condition>
</extension>
تكوين تحويل المكالمات الافتراضي
قم بتعيين القيم الافتراضية على مستوى الشبكة في config/runtime.exs:
config :tas,
# وجهة CFNRc الافتراضية (تستخدم عندما لا يوجد MMTel-Config)
call_forward_not_reachable_destination: "2222", # رقم الوصول إلى البريد الصوتي
# المهلة الافتراضية قبل تفعيل CFNRy (تستخدم عندما لا يوجد MMTel-Config)
default_no_reply_timer: 30 # الرنين لمدة 30 ثانية
عندما تُستخدم القيم الافتراضية:
- يوجد المشترك في HSS ولكن لا يوجد MMTel-Config مُركب
- ينجح بحث Sh ولكن لا يُرجع إعدادات تحويل المكالمات
- مشتركون جدد قبل تكوين تحويل المكالمات
استكشاف الأخطاء وإصلاحها في تحويل المكالمات
المشكلة: المكالمات لا تتحول كما هو متوقع
-
تحقق من بيانات Sh:
- استخدم واجهة الويب
/sh_testلاستعلام المشترك - تحقق من أن MMTel-Config يحتوي على قواعد CDIV
- تحقق من قيمة
call_forward_all_destination
- استخدم واجهة الويب
-
تحقق من متغيرات خطة الاتصال:
- راجع سجلات المكالمات لقيم المتغيرات
- تأكد من أن
call_forward_all_destination!="none" - تحقق من تعيين
tas_destination_numberإلى وجهة التحويل
-
تحقق من بيانات HLR (إذا كان SS7 MAP مفعلًا):
- استخدم واجهة ��لويب
/hlrلاستعلام المشترك - تحويل HLR يتجاوز بيانات Sh
- تحقق من أن متغير
msrnلا يحتوي على رقم تحويل غير متوقع
- استخدم واجهة ��لويب
-
تحقق من القيم الافتراضية للتكوين:
- تحقق من
call_forward_not_reachable_destinationفي التكوين - تأكد من أن
default_no_reply_timerمناسب - هذه تنطبق فقط عندما لا يوجد MMTel-Config
- تحقق من
المشكلة: حلقات التحويل
الأعراض: يتم تحويل المكالمات إلى رقم يقوم بتحويلها مرة أخرى، مما يخلق حلقة
الوقاية في خطة الاتصال:
<!-- تتبع عدد التحويلات -->
<extension name="Prevent-Forward-Loop" continue="true">
<condition field="${sip_h_X-Forward-Hop-Count}" expression="^$">
<action application="set" data="sip_h_X-Forward-Hop-Count=1"/>
<anti-action application="set" data="sip_h_X-Forward-Hop-Count=${expr(${sip_h_X-Forward-Hop-Count}+1)}"/>
</condition>
</extension>
<extension name="Check-Forward-Hop-Limit">
<condition field="${sip_h_X-Forward-Hop-Count}" expression="^([3-9]|[1-9][0-9]+)$">
<action application="log" data="ERROR تم اكتشاف حلقة تحويل، عدد التحويلات: ${sip_h_X-Forward-Hop-Count}"/>
<action application="hangup" data="حلقة_مكتشفة"/>
</condition>
</extension>
مراقبة تحويل المكالمات
المؤشرات الرئيسية:
- معدل مرتفع من المكالمات إلى أرقام البريد الصوتي
- نمط من المكالمات التي تنتهي في قيمة
no_reply_timer - المكالمات التي يتم توجيهها باستمرار إلى نفس وجهات التحويل
السجلات المفيدة:
INFO تحويل المكالمات الكل نشط إلى 61403555123
INFO تحويل إلى 2222
INFO فشل التوصيل، التحقق من تحويل المكالمات
تحليلات الأعمال:
- تتبع معدلات تفعيل التحويل حسب المشترك
- مراقبة أنماط استخدام البريد الصوتي
- تحديد المشتركين الذين لديهم تحويل غير مشروط