المقدمة
يصف هذا وثيقة كيف أن يستعمل جلسة بدء بروتوكول (SIP) تطبيع نص في cisco يدعو مدير (CCM) مع قليل مثال أساسي.
المتطلبات الأساسية
المتطلبات
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
- Cisco Unified Communications Manager (CUCM)، الإصدار 8.x والإصدارات الأحدث
- بروتوكول SIP
- معرفة النصوص التفاعلية
المكونات المستخدمة
تستند المعلومات الواردة في هذا المستند إلى الإصدار 11.5 من CCM.
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
التكوين
تطبيق البرنامج النصي على خط الاتصال في CUCM
في حالة خط اتصال SIP، يلزم تطبيق البرنامج النصي على خط اتصال SIP مباشرة. لن يعمل إستخدام البرنامج النصي على ملف تعريف SIP بدلا من خط الاتصال.
فيما يلي الخطوات التي يتعين عليك اتباعها:
- انتقل إلى جهاز > إعداد الجهاز > تكوين برنامج SIP Normalization Script وقم بإضافة برنامج نصي جديد كما هو موضح في الصورة.
2. انتقل إلى الجهاز > خط الاتصال.
حدد خط الاتصال الذي تريد تطبيق البرنامج النصي عليه وعلى صفحة التكوين الخاصة به، حدد البرنامج النصي الذي تم إنشاؤه مسبقا. حدد خيار تمكين التتبع وستطبع التغييرات التي تم إجراؤها بواسطة البرنامج النصي في سجلات طبقة توزيع الإشارات (SDL) كما هو موضح في الصورة. قم بحفظ التكوين، وتطبيق التكوين، ثم إعادة تعيين خط الاتصال لكي تصبح التغييرات نافذة المفعول.
تطبيق البرنامج النصي على هاتف SIP
في حالة هواتف SIP، يجب عليك إستخدام البرنامج النصي على ملف تعريف SIP للهواتف.
هذه هي الخطوات التي يجب عليك اتباعها.
- انتقل إلى جهاز > إعداد الجهاز > برنامج SIP Normalization Script وأضف البرنامج النصي الجديد.
- انتقل إلى جهاز > إعداد الجهاز > ملف تعريف SIP. حدد ملف تخصيص SIP الذي تريد تطبيق البرنامج النصي عليه أو إنشاء ملف تخصيص جديد بنسخ ملف تخصيص SIP القياسي.
- في صفحة تكوين ملف تعريف SIP، حدد البرنامج النصي الذي يتبعه تطبيق التكوين وإعادة ضبط ملف التعريف.
- انتقل إلى الجهاز > الهاتف. حدد الهاتف الذي تريد تطبيق البرنامج النصي عليه وقم بتغيير ملف تعريف SIP الخاص به باستخدام الهاتف الذي تم إنشاؤه وتبعه بحفظه، ثم قم بتطبيق التكوين وإعادة تعيين الهاتف من أجل إجراء التغييرات.
تطوير برنامج نصي للسيناريوهات الشائعة
إن المصدر الرئيسي للخطوات التفصيلية حول كيفية تطوير نص تطبيع SIP هنا هو: دليل المطورين لشفافية SIP وتطبيع إستخدامه.
يحتوي هذا الدليل على وظائف مختلفة متاحة للقيام بالمعالجة في رسائل SIP ومحتوى بروتوكول وصف الجلسة (SDP) وواجهات برمجة التطبيقات (API) المتقدمة الأخرى.
هنا مثال بسيط نص:
تعديل الرأس
هنا تستبدل المجهول من عنوان رسالة دعوة/إعادة دعوة SIP الصادرة.
M = {}
function M.outbound_INVITE(msg)
-- Replacing the Anonymous from From Header
local from = msg:getHeader("From")
local newfrom = string.gsub(from, "anonymous" ,"1111")
msg:modifyHeader("From", newfrom)
end
return M
كود |
الشرح |
m={} |
تهيئة محتوى الرسالة. M يحصل على كافة محتوى رسالة SIP هنا |
الدالة M.Outbound_INVITE(msg) |
دالة LUA التي يتم تطبيقها على M(رسالة SIP) في رسالة INVITE/REINVITE الصادرة. ويقرر الإتجاه دائما من حيث CUCM، سواء كان قادما أو خارجيا إليه. يمكن أن يكون نوع الرسالة من أنواع مختلفة مثل INVITE، 183، 200. لمزيد من التفاصيل، راجع قسم النظرة العامة في دليل المطورين لتطبيع SIP. |
محلي من = msg:getHeader("From") |
تخزين محتوى الرسالة من في نموذج متغير محلي |
getHeader |
إحدى الوظائف المتاحة للتطبيع في CCM من أجل الحصول على محتوى رأس متغير |
string.gsub |
دالة LUA لاستبدال محتوى معين من السلسلة |
تعديل Header |
مرة أخرى، وظيفة متوفرة في CCM in order to عدلت المحتوى من الرأس |
إزالة الرأس
هنا، أنت أزلت cisco-مرشد رأس من قادم SIP دعوة/إعادة دعوة رسالة:
M = {}
function M.inbound_INVITE(msg)
msg:removeHeader("Cisco-Guid")
end
return M
إضافة رأس
هنا، تقوم بإضافة المعلومات في محتوى رأس السماح.
تتم إضافة هذا في المحتوى الأصلي ل "السماح" بعد الفاصلة.
M = {}
function M.outbound_INVITE(msg)
msg:addHeader("Allow", "INFO")
end
return M
معالجة محتوى SDP
هناك واجهات برمجة تطبيقات متوفرة لتعديل محتوى SDP من رسالة SIP. لتعديل بروتوكول SDP، يجب أن يحصل على النص الأساسي لمحتوى SDP من كائن رسالة SIP الخاصة بعنصر التحكم LUA باستخدام واجهة برمجة التطبيقات (API) التي يوفرها كائن رسالة SIP. ويمكن حينئذ أن يستخدم البرنامج النصي مكتبة السلاسل التي تتضمن واجهات برمجة تطبيقات Cisco لمعالجة SDP. عند التعديل، تتم كتابة بروتوكول SDP مرة أخرى إلى كائن رسالة SIP باستخدام واجهة برمجة تطبيقات SetSDP(SDP) التي يوفرها كائن رسالة SIP. ارجع إلى واجهات برمجة تطبيقات رسائل SIP للحصول على مزيد من المعلومات حول واجهات برمجة التطبيقات هذه.
local sdp = msg:getSdp()
-- modification of the SDP happens at this point
-- Update the SDP associated with the SIP message
msg: etSdp(sdp)
ملاحظة: يتغير الرمز a= سطر ل G.722 كوديك ليصبح G722 بدون النقطة.
M = {}
function M.inbound_INVITE(msg)
local sdp = msg:getSdp()
if sdp
then
local g722_line = sdp:getLine("a=","G.722")
if g722_line
then
--Replace G.722 with G722. The dot is special and must be escaped using % when using gsub.
g722_line = g722_line:gsub("G%.722", "G722")
sdp = sdp:modifyLine("a=", "G.722", g722_line)
msg:setSdp(sdp)
end
end
end
return M
التحقق من الصحة
استخدم هذا القسم لتأكيد عمل التكوين بشكل صحيح.
قم بتمكين خيار التتبع عند تطبيق البرنامج النصي للتحقق مما إذا كان البرنامج النصي يعمل أم لا من سجلات SDL.
استكشاف الأخطاء وإصلاحها
يوفر هذا القسم معلومات يمكنك إستخدامها لاستكشاف أخطاء التكوين وإصلاحها.
هنا بعض التحققات إذا كان البرنامج النصي لا يعمل كما هو متوقع:
- إذا لم يتم تنفيذ البرنامج النصي بنفسه (ابحث عن قبل التطبيع/بعد التطبيع في سجلات SDL) على الأرجح، فهذا الأمر لم يتم تطبيقه بشكل صحيح على الجهاز أو خطأ في بناء الجملة.
- تحقق من وظائف "تطبيع CUCM" من دليل المطورين ومن Lua، أستخدم أي مترجم متاح للتحقق من ذلك.
- إذا تم تنفيذ النص التنفيذي لكنه لا يقوم بأي تغييرات، ثم تحقق من الإتجاه، نوع الرسالة والمنطق المستخدم في النص التنفيذي.
معلومات ذات صلة