دليل التكوين
يوفر هذا المستند مرجع تكوين شامل لخادم تطبيق TAS.
الوثائق ذات الصلة
التكوين الأساسي
- 📋 القراءة الرئيسية - نظرة عامة وبدء سريع
- 🔧 دليل العمليات - المراقبة والمهام التشغيلية
- 📊 مرجع القياسات - قياسات Prometheus والمراقبة
واجهات التكامل
- 👥 واجهة Sh - استرجاع بيانات المشتركين من HSS/المستودع
- 💳 الشحن عبر الإنترنت (Ro) - تكامل OCS والتحكم في الائتمان
- 📡 SS7 MAP - استعلامات HLR للتجوال وإعادة توجيه المكالمات
معالجة المكالمات
- 🔀 تكوين خطة الاتصال - خطة الاتصال XML ومنطق توجيه المكالمات
- 🔢 ترجمة الأرقام - قواعد تطبيع E.164
- ⚙️ الخدمات التكميلية - إعادة توجيه المكالمات، حظر CLI، الطوارئ
الخدمات ذات القيمة المضافة
- 📞 البريد الصوتي - خدمة البريد الصوتي مع إشعارات SMS
- 🔊 مطالبات TTS - تكوين مطالبات النص إلى كلام
- 👥 خادم مؤتمرات IMS - مؤتمرات متعددة الأطراف
الاختبار والامتثال
- 🧪 محاكي HLR والمكالمات - أدوات الاختبار
- 📜 امتثال ANSSI R226 - الامتثال للسوق الفرنسي
التكوين
يحتاج خادم التطبيق إلى:
- الاتصال بـ SIP Trunks / SBCs للمكالمات من/إلى الشبكة الخارجية
- الاتصال بـ DRA أو HSS للحصول على
Sh - الاتصال بـ DRA أو OCS لشحن
Roعبر الإنترنت (اختياري) - تكوين خطة الاتصال
- تكوين حول قواعد الاتصال / ترجمة الأرقام
- تكوين ��لبريد الصوتي
- المطالبات
- الاختبارات
- القياسات (Prometheus)
تكوين مقبس الأحداث
يستخدم مقبس الأحداث للتحكم في المكالمات، ومراقبة المكالمات النشطة، والتفاعل مع محرك الهاتف. يسمح هذا الاتصال لـ TAS بالتحكم في توجيه المكالمات، واسترجاع متغيرات القناة، وإدارة الجلسات النشطة.
موقع التكوين: config/runtime.exs
config :tas,
fs_event_socket: %{
host: "127.0.0.1",
port: 8021,
secret: "YourSecretPassword"
}
معلمات التكوين:
-
host(سلسلة نصية، مطلوبة): اسم المضيف أو عنوان IP لخادم مقبس الأحداث- الافتراضي:
"127.0.0.1"(localhost) - استخدم localhost إذا كان محرك الهاتف يعمل على نفس الخادم مثل TAS
- استخدم IP عن بُعد للتوزيعات الموزعة
- مثال:
"10.8.82.60"للاتصال عن بُعد
- الافتراضي:
-
port(عدد صحيح، مطلوب): منفذ TCP لاتصالات مقبس الأحداث- الافتراضي:
8021 - المنفذ القياسي لمقبس الأحداث هو 8021
- يجب أن يتطابق مع تكوين مقبس الأحداث في محرك الهاتف الخاص بك
- مثال:
8021
- الافتراضي:
-
secret(سلسلة نصية، مطلوبة): كلمة مرور المصادقة لمقبس الأحداث- يجب أن تتطابق مع كلمة المرور المكونة في محرك الهاتف الخاص بك
- تستخدم لمصادقة اتصالات ESL
- ملاحظة أمان: استخدم كلمة مرور عشوائية قوية واحتفظ بها آمنة
- مثال:
"cd463RZ8qMk9AHMMDGT3V"
حالات الاستخدام:
- التحكم في المكالمات والتوجيه في الوقت الحقيقي
- استرجاع معلومات المكالمات النشطة لعرض
/callsفي لوحة التحكم - تنفيذ تطبيقات خطة الاتصال برمجياً
- مراقبة تغييرات حالة المكالمات والأحداث
- إدارة المكالمات الجماعية
سلوك الاتصال:
- يقوم TAS بإنشاء اتصالات دائمة بمقبس الأحداث
- يعيد الاتصال تلقائيًا عند فشل الاتصال
- يستخدم في كل من الأوضاع الواردة (استقبال الأحداث) والصادرة (التحكم في المكالمات)
- تم تضمين مهلات الاتصال ومنطق إعادة المحاولة
اعتبارات الأمان:
- استخدم دائمًا كلمة مرور قوية وفريدة من نوعها لمعلمة
secret - إذا كنت تستخدم اتصالات عن بُعد، تأكد من أن قواعد جدار الحماية تسمح فقط لخوادم TAS الموثوقة
- ضع في اعتبارك استخدام اتصالات localhost فقط عندما يكون TAS ومحرك الهاتف متواجدين في نفس المكان
- لا تعرض منفذ مقبس الأحداث على الشبكات العامة
استكشاف الأخطاء:
- تم رفض الاتصال: تحقق من أن محرك الهاتف يعمل وأن مقبس الأحداث مفعل
- فشل المصادقة: تحقق من أن
secretيتطابق مع تكوين محرك الهاتف - أخطاء المهلة: تحقق من الاتصال بالشبكة وقواعد جدار الحماية
- لا يمكن التحكم في المكالمات: تأكد من أن TAS قد اتصل بنجاح (تحقق من السجلات)
تكوين لوحة التحكم
توفر لوحة التحكم واجهة قائمة على الويب لمراقبة وإدارة نظام TAS. يتضمن ذلك عرض المشتركين، وسجلات CDR، والمكالمات النشطة، والأقران Diameter، والبوابات، وتكوين النظام.
موقع التكوين: config/runtime.exs
config :control_panel,
page_order: ["/application", "/configuration"]
config :control_panel, ControlPanelWeb.Endpoint,
url: [host: "0.0.0.0", path: "/"],
https: [
port: 443,
keyfile: "priv/cert/server.key",
certfile: "priv/cert/server.crt"
]
معلمات التكوين:
تكوين ترتيب الصفحات
page_order(قائمة من السلاسل النصية): يتحكم في ترتيب عرض صفحات التكوين في لوحة التحكم- يحدد الصفحات التي تظهر في التنقل وترتيبها
- مثال:
["/application", "/configuration"] - الافتراضي: إذا لم يتم تعيينه، تظهر الصفحات بترتيب أبجدي افتراضي
تكوين نقطة النهاية على الويب
-
url(خريطة): تكوين URL العام لواجهة لوحة التحكمhost: اسم المضيف لتوليد URLs (مثل:"tas.example.com"أو"0.0.0.0")path: المسار الأساسي لجميع مسارات لوحة التحكم (الافتراضي:"/")- يستخدم لتوليد URLs المطلقة في عمليات إعادة التوجيه والروابط
-
https(خريطة): تكوين HTTPS/TLS للوصول الآمنport(عدد صحيح): رقم منفذ HTTPS (القياسي هو443)keyfile(سلسلة نصية): مسار ملف المفتاح الخاص TLS (تنسيق PEM)certfile(سلسلة نصية): مسار ملف الشهادة TLS (تنسيق PEM)- يجب أن تكون كلا الملفين قابلة للقراءة بواسطة تطبيق TAS
إدارة الشهادات:
تتطلب لوحة التحكم شهادات TLS صالحة للوصول عبر HTTPS:
-
شهادات موقعة ذاتيًا (تطوير/اختبار):
openssl req -x509 -newkey rsa:4096 -keyout priv/cert/server.key \
-out priv/cert/server.crt -days 365 -nodes -
شهادات الإنتاج:
- استخدم شهادات من هيئة شهادات موثوقة (CA)
- مقدمو الخدمة الشائعون: Let's Encrypt (مجاني)، CA التجارية
- تأكد من أن الشهادات تشمل السلسلة الكاملة لثقة المتصفح
- احتفظ بالمفاتيح الخاصة آمنة مع أذونات الملفات المناسبة (
chmod 600)
التحكم في الوصول:
توفر لوحة التحكم الوصول إلى بيانات تشغيل حساسة:
- معلومات المشتركين: تفاصيل التسجيل، تاريخ المكالمات، المواقع
- سجلات تفاصيل المكالمات: سجلات المكالمات الكاملة مع بيانات MSISDN
- تكوين النظام: أقران Diameter، البوابات، التوجيه
- المكالمات النشطة: المراقبة في الوقت الحقيقي للجلسات الجارية
تدابير الأمان الموصى بها:
- نشر خلف جدار حماية أو VPN لبيئات الإنتاج
- استخدم شهادات TLS قوية من CA موثوقة
- تنفيذ ضوابط وصول على مستوى الشبكة (قائمة بيضاء لـ IP)
- ضع في اعتبارك طبقات مصادقة إضافية إذا تم الكشف عنها خارجيًا
- مراجعة سجلات الوصول بانتظام
- استخدم HTTPS فقط - لا تقدم عبر HTTP العادي
أنماط النشر الشائعة:
-
الوصول الداخلي فقط:
url: [host: "10.8.82.60", path: "/"] # الشبكة الداخلية فقط -
الوصول الخارجي مع النطاق:
url: [host: "tas.operator.com", path: "/"]
https: [port: 443, ...] -
خلف وكيل عكسي:
url: [host: "tas.internal", path: "/panel"] # Nginx/Apache يوجه إلى هذا
استكشاف الأخطاء:
- أخطاء الشهادة: تحقق من أن المسارات إلى
keyfileوcertfileصحيحة وأن الملفات قابلة للقراءة - المنفذ مستخدم بالفعل: تحقق مما إذا كانت خدمة أخرى تستخدم المنفذ 443، أو قم بتغييره إلى منفذ آخر
- لا يمكن الوصول إلى واجهة المستخدم: تحقق من أن قواعد جدار الحماية تسمح بالوصول إلى منفذ HTTPS المكون
- فشل في مصافحة SSL: تأكد من أن الشهادة والمفتاح يتطابقان وأنهما بتنسيق PEM
تكوين API
يتضمن TAS واجهة برمجة تطبيقات REST للوصول البرمجي إلى وظائف النظام، وإدارة المشتركين، وبيانات التشغيل. تدعم واجهة برمجة التطبيقات توثيق OpenAPI/Swagger ومحمية بـ TLS.
موقع التكوين: config/runtime.exs
config :api_ex,
api: %{
port: 8444,
listen_ip: "0.0.0.0",
product_name: "OmniTAS",
title: "API - OmniTAS",
hostname: "localhost",
enable_tls: true,
tls_cert_path: "priv/cert/server.crt",
tls_key_path: "priv/cert/server.key"
}
معلمات التكوين:
-
port(عدد صحيح، مطلوب): منفذ TCP لخادم API- الافتراضي:
8444 - اختر منفذًا لا يتعارض مع خدمات أخرى
- المنفذ القياسي لـ HTTPS هو 443، لكن المنافذ المخصصة شائعة لواجهات برمجة التطبيقات
- مثال:
8444،8443،9443
- الافتراضي:
-
listen_ip(سلسلة نصية، مطلوبة): عنوان IP لربط خادم API"0.0.0.0": الاستماع على جميع واجهات الشبكة (الوصول الخارجي)"127.0.0.1": الاستماع فقط على localhost (الوصول الداخلي فقط)- IP محدد: الربط بواجهة معينة (مثل:
"10.8.82.60") - الأمان: استخدم
"127.0.0.1"إذا كانت واجهة برمجة التطبيقات مطلوبة داخليًا فقط
-
product_name(سلسلة نصية): معرف المنتج لبيانات واجهة برمجة التطبيقات- يستخدم في استجابات واجهة برمجة التطبيقات والتوثيق
- مثال:
"OmniTAS"،"MyOperator-IMS"
-
title(سلسلة نصية): عنوان قابل للقراءة البشرية لتوثيق واجهة برمجة التطبيقات- يظهر في رأس واجهة OpenAPI/Swagger
- مثال:
"API - OmniTAS"،"IMS Application Server API"
-
hostname(سلسلة نصية): اسم المضيف لخادم واجهة برمجة التطبيقات في التوثيق- يستخدم في مواصفات OpenAPI لتوليد URLs أمثلة
- يجب أن يتطابق مع كيفية وصول العملاء إلى واجهة برمجة التطبيقات
- أمثلة:
"localhost"،"api.operator.com"،"10.8.82.60"
-
enable_tls(منطقي): تمكين أو تعطيل TLS/HTTPS لواجهة برمجة التطبيقاتtrue: تقديم واجهة برمجة التطبيقات عبر HTTPS (موصى به للإنتاج)false: تقديم واجهة برمجة التطبيقات عبر HTTP (فقط للاختبار/التطوير)- الأمان: استخدم دائمًا
trueفي بيئات الإنتاج
-
tls_cert_path(سلسلة نصية): مسار ملف الشهادة TLS (تنسيق PEM)- مطلوب عندما يكون
enable_tls: true - يجب أن تكون قابلة للقراءة بواسطة تطبيق TAS
- مثال:
"priv/cert/server.crt"
- مطلوب عندما يكون
-
tls_key_path(سلسلة نصية): مسار ملف المفتاح الخاص TLS (تنسيق PEM)- مطلوب عندما يكون
enable_tls: true - يجب أن تكون قابلة للقراءة بواسطة تطبيق TAS
- الأمان: احميها بأذونات الملفات (
chmod 600) - مثال:
"priv/cert/server.key"
- مطلوب عندما يكون
ميزات واجهة برمجة التطبيقات:
توفر واجهة برمجة التطبيقات REST الوصول البرمجي إلى:
- إدارة المشتركين وتوفيرهم
- استعلامات سجلات تفاصيل المكالمات (CDR)
- حالة النظام وفحوصات الصحة
- حالة أقران Diameter
- حالة البوابة والإحصائيات
- مراقبة المكالمات النشطة
- إدارة التكوين
توثيق OpenAPI/Swagger:
تتضمن واجهة برمجة التطبيقات توثيق OpenAPI (Swagger) المدمج:
- الوصول إلى واجهة Swagger UI على:
https://hostname:port/api/swaggerui - مواصفات OpenAPI JSON على:
https://hostname:port/api/openapi - اختبار واجهة برمجة التطبيقات التفاعلي مباشرة من المتصفح
- توثيق كامل لنقاط النهاية مع مخططات الطلب/الاستجابة
اعتبارات الأمان:
- المصادقة: تنفيذ مصادقة واجهة برمجة التطبيقات بناءً على متطلبات الأمان الخاصة بك
- الوصول الشبكي: استخدم قواعد جدار الحماية لتقييد الوصول إلى واجهة برمجة التطبيقات للعملاء المصرح لهم
- TLS مطلوب: قم دائمًا بتمكين TLS في الإنتاج (
enable_tls: true) - التحقق من الشهادة: استخدم شهادات موثوقة لواجهات برمجة التطبيقات الإنتاجية
- تحديد معدل: ضع في اعتبارك تنفيذ تحديد المعدل لواجهات برمجة التطبيقات العامة
- سجلات الوصول: راقب سجلات وصول واجهة برمجة التطبيقات للنشاط المشبوه
مثال على الاستخدام:
# استعلام واجهة برمجة التطبيقات باستخدام curl (استبدل بنقطة النهاية الفعلية)
curl -k https://localhost:8444/api/health
# الوصول إلى توثيق Swagger
https://localhost:8444/api/swaggerui
سيناريوهات النشر الشائعة:
-
واجهة برمجة التطبيقات الداخلية فقط:
listen_ip: "127.0.0.1" # متاحة فقط من localhost
enable_tls: false # HTTP للاختبار الداخلي -
واجهة برمجة التطبيقات الإنتاجية مع TLS:
listen_ip: "0.0.0.0" # متاحة من الشبكة
enable_tls: true # HTTPS مطلوب
hostname: "api.operator.com" -
التطوير/الاختبار:
listen_ip: "0.0.0.0"
enable_tls: false # HTTP لتسهيل الاختبار
port: 8080 # منفذ غير محمي
استكشاف الأخطاء:
- فشل ربط المنفذ: تحقق من أن المنفذ ليس مستخدمًا بواسطة خدمة أخرى، أو قم بتشغيله كجذر للمنافذ < 1024
- أخطاء TLS: تحقق من أن مسارات الشهادة والمفتاح صحيحة وأن الملفات قابلة للقراءة
- لا يمكن الاتصال: تحقق من أن جدار الحماية يسمح بالوصول إلى المنفذ المكون
- عدم تطابق الشهادة: تأكد من أن
hostnameيتطابق مع اسم الشهادة الشائع (CN) أو SAN - واجهة برمجة التطبيقات تعيد 404: تحقق من أن تطبيق واجهة برمجة التط��يقات بدأ بنجاح في السجلات
تكوين SIP Trunk
تتحمل Ansible مسؤولية إنشاء تكوين XML لكل بوابة صادرة، والتي تظهر في علامة التبويب Gateways، والتي تستخدم للمكالمات الصادرة.
يجب تضمين عناوين CSCF وعناوين البوابة في التكوين الذي يظهر في تكوين وقت التشغيل، حتى نعرف أي عناوين IP نسمح لها بإجراء المكالمات، نقوم بذلك في allowed_sbc_source_ips للبوابات / SBCs (المصادر التي سترسل حركة مرور MT نحو الشبكة) و allowed_cscf_ips لـ CSCFs (المصادر التي ستنشأ منها حركة مرور MO).
ملاحظة - إذا كنت ستوجه المكالمات من TAS إلى نفسه (أي مكالمة MO لمشترك على الشبكة تعود إلى خطة الاتصال MT) فيجب أن يكون عنوان IP الخاص بـ TAS أيضًا في قائمة عناوين IP المصدر المسموح بها.
config :tas,
allowed_sbc_source_ips: ["10.5.198.200", "103.26.174.36"],
allowed_cscf_ips: ["10.8.3.34"],
من واجهة الويب، يمكننا رؤية حالة كل بوابة، و:
- حالة تسجيل SIP (إذا كان التس��يل مفعلًا)
- مجال SIP
- عنوان وكيل SIP (إذا تم استخدامه)
- اسم المستخدم
- زمن الاستجابة (متوسط زمن استجابة SIP OPTIONs (إذا تم تفعيل SIP OPTIONs))
- زمن التشغيل (ثوانٍ منذ إعادة تشغيل الملف الشخصي أو ظهوره)
- المكالمات الواردة / المكالمات الصادرة / المكالمات الفاشلة الواردة / المكالمات الفاشلة الصادرة
- آخر زمن استجابة SIP OPTIONs (Epoch)
- تكرار استجابة SIP OPTIONs
- مزيد من المعلومات في زر التفاصيل
مرجع تكوين البوابة
تُكون البوابات بتنسيق XML. تمثل كل بوابة اتصال SIP Trunk إلى SBC خارجي، أو ناقل، أو بوابة PSTN.
مثال بسيط للبوابة:
<include>
<gateway name="carrier_trunk">
<param name="proxy" value="203.0.113.50;transport=tcp"/>
<param name="register" value="true"/>
<param name="caller-id-in-from" value="true"/>
<param name="username" value="trunk_user"/>
<param name="password" value="secure_password"/>
<param name="register-transport" value="tcp"/>
<param name="retry-seconds" value="30"/>
<param name="ping" value="25"/>
</gateway>
</include>
بوابة بدون تسجيل:
<include>
<gateway name="sbc_static">
<param name="proxy" value="198.51.100.10"/>
<param name="register" value="false"/>
<param name="caller-id-in-from" value="true"/>
</gateway>
</include>
معلمات البوابة
المعلمات المطلوبة
name (خاصية البوابة)
- المعرف الفريد لهذه البوابة
- يستخدم في خطة الاتصال للإشارة إلى البوابة:
sofia/gateway/name/destination - مثال:
<gateway name="my_trunk">
proxy
- عنوان IP أو اسم المضيف لوكيل SIP/البوابة
- يمكن أن يتضمن المنفذ وبروتوكول النقل
- أمثلة:
value="203.0.113.50"(المنفذ الافتراضي 5060، UDP)value="203.0.113.50:5061"(منفذ مخصص)value="203.0.113.50;transport=tcp"(نقل TCP)value="203.0.113.50:5061;transport=tls"(TLS على المنفذ 5061)
register
- ما إذا كان يجب إرسال SIP REGISTER إلى البوابة
- القيم:
true|false - تعيين إلى
trueإذا كانت ��لبوابة تتطلب التسجيل - تعيين إلى
falseللبوابات الثابتة المعتمدة على IP
معلمات المصادقة
username
- اسم مستخدم المصادقة SIP
- يستخدم في التسجيل ولتحديات المصادقة
- مطلوب إذا كان
register="true" - مثال:
value="trunk_account_123"
password
- كلمة مرور المصادقة SIP
- تستخدم لتحديات المصادقة
- مطلوب إذا كان
register="true" - مثال:
value="MySecureP@ssw0rd"
realm
- مجال SIP للمصادقة
- اختياري - عادةً ما يتم اكتشافه تلقائيًا من التحدي
- مثال:
value="sip.carrier.com"
auth-username
- اسم مستخدم بديل للمصادقة (إذا كان مختلفًا عن
username) - نادرًا ما يكون مطلوبًا - فقط إذا كانت الناقل تتطلب مستخدمًا مختلفًا في المصادقة مقابل رأس From
- مثال:
value="auth_user_456"
معلمات التسجيل
register-transport
- بروتوكول النقل لرسائل التسجيل
- القيم:
udp|tcp|tls - يجب أن يتطابق مع النقل المحدد في معلمة
proxy - مثال:
value="tcp"
register-proxy
- عنوان وكيل بديل للتسجيل (إذا كان مختلفًا عن توجيه المكالمات)
- مفيد عندما يختلف خادم التسجيل عن خادم توجيه المكالمات
- مثال:
value="register.carrier.com:5060"
retry-seconds
- الثواني للانتظار قبل إعادة محاولة التسجيل الفاشل
- الافتراضي:
30 - النطاق:
5إلى3600 - مثال:
value="30"
expire-seconds
- زمن انتهاء التسجيل بالثواني
- الافتراضي:
3600(ساعة واحدة) - ستعيد البوابة التسجيل قبل انتهاء الصلاحية
- مثال:
value="1800"(30 دقيقة)
caller-id-in-from
- تضمين معرف المتصل في رأس SIP From
- القيم:
true|false true: يتضمن رأس From الرقم الفعلي للمتصل (مطلوب من قبل معظم الناقلين)false: يستخدم رأس From اسم مستخدم البوابة- التوصية: تعيين إلى
trueلمعظم النشر - مثال:
value="true"
معلمات المراقبة
ping
- إرسال ping SIP OPTIONS كل N ثوانٍ
- يراقب توفر البوابة ويقيس زمن الاستجابة
- معطل إذا لم ��تم تحديده أو تم تعيينه إلى
0 - القيم النموذجية:
15إلى60ثانية - مرئي في واجهة حالة البوابة كـ "زمن ping"
- مثال:
value="25"
ping-max
- الحد الأقصى للوقت (بالثواني) لإعادة محاولة pings قبل وضع علامة على البوابة كمعطلة
- الافتراضي: محسوب من فترة
ping - مثال:
value="3"
معلمات توجيه المكالمات
extension
- رقم وجهة ثابت يجب الاتصال به دائمًا على هذه البوابة
- نادرًا ما يستخدم - عادةً ما تأتي الوجهة من خطة الاتصال
- مثال:
value="+12125551234"
extension-in-contact
- تضمين الامتداد في رأس الاتصال
- القيم:
true|false - الافتراضي:
false - مثال:
value="false"
contact-params
- معلمات إضافية لإضافتها إلى رأس الاتصال
- مفيدة لمتطلبات الناقل المحددة
- مثال:
value="line=1;isup=true"
معلمات متقدمة
from-user
- تجاوز اسم المستخدم في رأس From
- الافتراضي: يستخدم الرقم المتصل أو اسم مستخدم البوابة
- مث��ل:
value="trunk_pilot"
from-domain
- تجاوز المجال في رأس From
- الافتراضي: يستخدم مجال الوكيل
- مثال:
value="my-domain.com"
outbound-proxy
- وكيل خارجي لجميع رسائل SIP
- مختلف عن
proxy- يستخدم كهدف رأس Route - مثال:
value="edge-proxy.carrier.com:5060"
context
- سياق خطة الاتصال للمكالمات الواردة من هذه البوابة
- الافتراضي:
public - يسمح بتوجيه مكالمات واردة مختلفة لكل بوابة
- مثال:
value="from-carrier"
channels
- الحد الأقصى للمكالمات المتزامنة على هذه البوابة
- الافتراضي: غير محدود
- يستخدم لإدارة السعة
- مثال:
value="100"
dtmf-type
- طريقة نقل DTMF
- القيم:
rfc2833|info|inband|auto - الافتراضي:
rfc2833(موصى به) rfc2833: أحداث RTP الهاتفية (الأكثر شيوعًا)info: رسائل SIP INFOinband: نغمات صوتية- مثال:
value="rfc2833"
codec-prefs
- قائمة الترميز المفضلة لهذه البوابة
- قائمة مفصولة بفواصل بترتيب التفضيل
- مثال:
value="PCMU,PCMA,G729" - الترميزات الشائعة:
PCMU,PCMA,G729,AMR,AMR-WB,G722,OPUS
rtp-timeout-sec
- إنهاء المكالمة إذا لم يتم استلام RTP لمدة N ثانية
- الافتراضي:
0(معطل) - مفيد لاكتشاف المكالمات الميتة
- مثال:
value="120"
rtp-hold-timeout-sec
- مهلة للمكالمات المعلقة دون RTP
- الافتراضي:
0(معطل) - مثال:
value="1800"(30 دقيقة)
خيارات الإشارة SIP
sip-port
- منفذ SIP المحلي لاستخدامه لهذه البوابة
- الافتراضي: منفذ الملف الشخصي
- نادرًا ما يكون مطلوبًا
- مثال:
value="5060"
rtp-ip
- عنوان IP المحلي لوسائط RTP
- الافتراضي: IP RTP للملف الشخصي
- مثال:
value="10.0.0.5"
register-proxy-port
- منفذ وكيل التسجيل
- مطلوب فقط إذا كان مختلفًا عن منفذ الوكيل
- مثال:
value="5061"
contact-host
- تجاوز الجزء المضيف من رأس الاتصال
- مفيد لسيناريوهات NAT
- مثال:
value="public-ip.example.com"
distinct-to
- استخدام رأس To متميز (مختلف عن Request-URI)
- القيم:
true|false - متطلب محدد من الناقل
- مثال:
value="false"
cid-type
- نوع معرف المتصل في رؤوس Remote-Party-ID أو P-Asserted-Identity
- القيم:
rpid|pid|none rpid: رأس Remote-Party-IDpid: رأس P-Asserted-Identity- مثال:
value="pid"
extension-in-contact
- إضافة معلمة الامتداد إلى URI الاتصال
- القيم:
true|false - مثال:
value="true"
أمان النقل
transport (في معلمة الوكيل)
- بروتوكول النقل
- القيم:
udp|tcp|tls|ws|wss - محدد كجزء من قيمة الوكيل
- مثال:
proxy="203.0.113.50;transport=tcp"
للاتصالات TLS، قد تكون هناك حاجة لتكوين شهادة إضافية في ملف SIP.
مثال كامل مع الخيارات الشائعة
<include>
<gateway name="primary_carrier">
<!-- مطلوب: الاتصال الأساسي -->
<param name="proxy" value="sbc.carrier.com:5060;transport=tcp"/>
<param name="register" value="true"/>
<!-- المصادقة -->
<param name="username" value="customer_trunk_01"/>
<param name="password" value="SecurePassword123"/>
<!-- التسجيل -->
<param name="register-transport" value="tcp"/>
<param name="expire-seconds" value="1800"/>
<param name="retry-seconds" value="30"/>
<!-- معرف المتصل -->
<param name="caller-id-in-from" value="true"/>
<!-- المراقبة -->
<param name="ping" value="30"/>
<!-- الوسائط -->
<param name="codec-prefs" value="PCMU,PCMA,G729"/>
<param name="dtmf-type" value="rfc2833"/>
<!-- حدود المكالمات -->
<param name="channels" value="100"/>
<!-- مهلات RTP -->
<param name="rtp-timeout-sec" value="300"/>
</gateway>
</include>
استخدام البوابة في خطة الاتصال
قم بالإشارة إلى البوابات في خطة الاتصال الخاصة بك باستخدام تنسيق sofia/gateway/name/destination:
<!-- توجيه إلى بوابة معينة -->
<action application="bridge" data="sofia/gateway/primary_carrier/+12125551234"/>
<!-- توجيه باستخدام متغير -->
<action application="bridge" data="sofia/gateway/primary_carrier/${tas_destination_number}"/>
<!-- توجيه مع رؤوس SIP مخصصة -->
<action application="bridge" data="{sip_h_X-Custom=Value}sofia/gateway/primary_carrier/${tas_destination_number}"/>
<!-- ��لفشل بين البوابات -->
<action application="bridge" data="sofia/gateway/primary_carrier/${tas_destination_number}|sofia/gateway/backup_carrier/${tas_destination_number}"/>
استكشاف مشكلات البوابة
البوابة لا تسجل:
- تحقق من أن
usernameوpasswordصحيحة - تحقق من أن عنوان
proxyقابل للوصول - تأكد من أن
register-transportيتطابق مع متطلبات الناقل - راجع السجلات للبحث عن فشل المصادقة
فشل المكالمات:
- تحقق من حالة البوابة في واجهة الويب (
/gw) - تحقق من أن إعداد
caller-id-in-fromيتطابق مع متطلبات الناقل - تأكد من توافق الترميز مع
codec-prefs - تحقق من أن جدار الحماية يسمح بحركة SIP و RTP
جودة المكالمات ضعيفة:
- راجع أوقات
pingفي حالة البوابة - تحقق من أن
rtp-timeout-secليس عدوانيًا جدًا - تحقق من أن تفضيلات الترميز تتوافق مع قدرات الشبكة
- راقب زمن الاستجابة وفقدان الحزم في الشبكة
تكوين نظير Diameter
يجب تعريف نظراء Diameter في تكوين وقت التشغيل.
هذا التكوين هو في الغالب نموذج أولي.
لا تحتاج واجهة Ro إلى أن تكون مدرجة في التطبيقات إذا لم يتم استخدام Ro في النشر الخاص بك.
config :diameter_ex,
diameter: %{
service_name: :omnitouch_tas,
listen_ip: "10.8.82.60",
listen_port: 3868,
decode_format: :map,
host: "example-dc01-as01",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
product_name: "OmniTAS",
request_timeout: 5000,
peer_selection_algorithm: :random,
allow_undefined_peers_to_connect: true,
log_unauthorized_peer_connection_attempts: true,
control_module: Tas.Control.Diameter,
processor_module: DiameterEx.Processor,
auth_application_ids: [],
acct_application_ids: [],
vendor_id: 10415,
supported_vendor_ids: [10415],
applications: [
%{
application_name: :sh,
application_dictionary: :diameter_gen_3gpp_sh,
vendor_specific_application_ids: [
%{
vendor_id: 10415,
auth_application_id: 16_777_217,
acct_application_id: nil
}
]
},
%{
application_name: :ro,
application_dictionary: :diameter_gen_3gpp_ro,
vendor_specific_application_ids: [
%{
vendor_id: 0,
auth_application_id: 4,
acct_application_id: nil
}
]
}
],
peers: [
%{
port: 3868,
host: "example-dc01-dra01.epc.mnc001.mcc001.3gppnetwork.org",
ip: "1.2.3.4",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
tls: false,
transport: :diameter_tcp,
initiate_connection: true
},
%{
port: 3869,
host: "example-dc01-dra02.epc.mnc001.mcc001.3gppnetwork.org",
ip: "1.2.3.44",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
tls: false,
transport: :diameter_tcp,
initiate_connection: true
}
]
}
يمكنك التحقق من حالة نظراء Diameter من علامة Diameter في واجهة الويب.
يمكنك أيضًا اختبار استرجاع بيانات Sh من علامة Sh في واجهة الويب لمحاولة جلب أي من البيانات من Sh.