دمج مركز اتصال Webex مع ServiceNow (الإصدار 1 - Legacy)
المتطلبات الأساسية
الحد الأدنى للحجم المدعوم لواجهة الهاتف المحمول هو 500 بكسل. قد تؤدي أي قيمة أقل من 500 بكسل إلى مشكلات في العرض أو الوظائف.
قبل دمج مركز اتصال Webex مع وحدة تحكم ServiceNow CRM، تأكد من أن لديك ما يلي:
-
الوصول إلى مركز اتصال Webex.
-
وصول المسؤول إلى مركز التحكم على https://admin.webex.com ومركز Management Portal اتصال Webex. عناوين URL Management Portal الخاصة بـ منطقتك خاصة.
-
وكيل لديه حق الوصول إلى سطح المكتب. عنوان URL لسطح المكتب خاص بمنطقتك.
-
وصول الوكيل إلى المجال التالي الذي تمت إضافته في قائمة المسموح بها لسياسة أمان المحتوى:
-
*. الخدمة - الآن. كوم
لمزيد من المعلومات حول كيفية تحديد القائمة المسموح بها، راجع مقالة إعدادات الأمان لمركز اتصال Webex.
-
-
حساب بوابة مطوري ServiceNow. لإنشاء حساب، انتقل إلى بوابة مطوري ServiceNow على https://developer.servicenow.com/dev.do وانقر فوق التسجيل وبدء الإنشاء.
-
الوصول إلى الملفات التالية على https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
مجموعة تحديث سيرفيس ناو (XML)
-
تخطيط سطح المكتب لمركز اتصال ServiceNow (JSON)
-
- إصدارات ServiceNow التي يدعمها مركز اتصال Webex هي فانكوفر ويوتا وتوكيا وواشنطن وزانادو. لمزيد من المعلومات، راجع تكامل مركز اتصال Webex مع ServiceNow.
اتبع إحدى الطريقتين أدناه:
- بالنسبة لمثيلات المطورين، نوصي باتباع الخطوات الموجودة ضمن دليل مثيلات المطور.
- إذا كنت تمتلك مثيلاً مرخصًا من المؤسسة، فاتبع الإرشادات الخاصة بالمثيلات المرخصة من المؤسسة.
لا نوصي بخلط التطبيق المرخص من المؤسسة مع مثيلات وضع الحماية للمطورين.
لا يتم دعم القنوات الرقمية مثل الدردشة والبريد الإلكتروني باستخدام موصلات CRM. ينطبق هذا على جميع عمليات تكامل CRM باستخدام هذه الموصلات. يرجى تخطيط عمليات النشر ومشاركة العملاء وفقًا لذلك.
تصف الأقسام التالية خطوات تثبيت موصل ServiceNow لمثيلات المطور.
| 1 |
قم بتسجيل الدخول إلى حساب بوابة مطوري ServiceNow وافتح وحدة تحكم الإدارة. |
| 2 |
من منطقة My Instance من قائمة الحساب، انقر فوق بدء الإنشاء.
|
| 3 |
على مثيل المطور الخاص بك، من حقل Filter navigator في الجزء العلوي الأيسر من النافذة، انتقل إلى المكونات الإضافية.
|
| 4 |
ابحث عن ملحق Openframe الذي يحمل عنوان Openframe. قد تحتاج إلى التمرير عبر القائمة.
|
| 5 |
انقر فوق التثبيت لتثبيت ملحق Openframe. |
| 6 |
في مربع حوار تنشيط المكون الإضافي، انقر فوق التنشيط.
|
| 7 |
عند اكتمال تنشيط المكون الإضافي، انقر فوق إغلاق النموذج وإعادة تحميله في مربع حوار تنشيط المكون الإضافي.
|
| 8 |
للتحقق من تنشيط المكون الإضافي، من حقل Filter navigator في الجزء العلوي الأيسر من النافذة، انتقل إلى OpenFrame. |
| 9 |
انقر فوق التكوينات وتأكد من ظهور ملحق OpenFrame في قائمة تكوينات OpenFrame.
|
| 1 |
قم بتنزيل أحدث ملف XML لمجموعة تحديث النظام المتاح على github repo في هذا الموقع: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. اسم الملف: خدمة WebEXCC - التحديث الآن - setv (X) .xml
|
| 2 |
على مثيل ServiceNow الخاص بك، من حقل مستكشف التصفية في الجزء العلوي الأيسر من النافذة، انتقل إلى .
|
| 3 |
انقر فوق ارتباط استيراد مجموعة التحديث من XML.
|
| 4 |
انقر فوق اختيار ملف، وحدد ملف XML الخاص بمجموعة تحديث النظام، ثم انقر فوق تحميل.
تظهر مجموعة التحديث في قائمة مجموعات التحديث المستردة وهي في حالة التحميل.
|
| 5 |
من قائمة مجموعات التحديث المستردة، انقر فوق اسم ملف مجموعة التحديث (رابط) لفتح مجموعة التحديث.
|
| 6 |
في الجزء العلوي الأيسر من النافذة، انقر فوق معاينة مجموعة التحديث للتحقق من مجموعة التحديث بحثًا عن المشكلات.
|
| 7 |
انقر فوق إغلاق في مربع حوار Update Set Preview بمجرد اكتمال المعاينة.
|
| 8 |
انقر فوق الالتزام بمجموعة التحديث.
|
| 9 |
انقر فوق إغلاق في مربع حوار تحديث تعيين الالتزام بمجرد اكتمال تنفيذ مجموعة التحديث.
|
| 1 |
في حقل Filter navigator في الجزء العلوي الأيسر من النافذة، اكتب
|
| 2 |
في صفحة خصائص النظام، قم بفرز الخصائص حسب تاريخ التحديث. تأكد من أنه يمكنك رؤية خصائص مركز اتصال Webex التالية:
|
| 3 |
انقر agentdesktop_urlلفتح agentdesktop_url صفحة خصائص النظام. |
| 4 |
في حقل القيمة، أدخل عنوان URL لسطح مكتب Webex Contact Center وفقًا لمنطقة التشغيل.
|
| 5 |
انقر فوق التحديث لحفظ التغييرات. |
| 6 |
(اختياري) لتغيير اسم جدول النشاط، قم بتحرير خصائص webexcactivitytable كما هو مطلوب. في صفحة خصائص النظام، انقر فوق webexcactivitytable. قم بتغيير حقل القيمة كما هو مطلوب.
|
| 7 |
(اختياري) إضافة مجموعات المستخدمين بالطرق التالية:
|
| 1 |
من حقل متصفح التصفية، انتقل إلى .
|
| 2 |
انقر فوق جديد.
|
| 3 |
أدخل الخصائص التالية لعنوان URL:
|
| 4 |
على يسار حقل URL، انقر على زر القفل وأضفه
|
| 5 |
(اختياري) حدد مجموعة (مجموعات) المستخدم/الوكيل لتعيين التكوين.
|
| 6 |
انقر فوق إرسال. يظهر عنوان URL كرابط.
|
| 7 |
قبل محاولة استخدام هاتف OpenFrame، تأكد من تحميل ملف JSON لتخطيط سطح المكتب المخصص لـ ServiceNow إلى مركز اتصال Webex. Management Portal لمزيد من المعلومات، راجع إعداد تخطيط ServiceNow لسطح المكتب على مركز اتصال Webex. |
| 1 |
|
| 2 |
قم بتحديث الخصائص في ملف تخطيط سطح المكتب، إذا لزم الأمر. |
| 3 |
انتقل إلى مركز Management Portal اتصال Webex. |
| 4 |
من شريط Management Portal التنقل، اختر .
|
| 5 |
انقر فوق تخطيط جديد وأدخل تفاصيل تخطيط سطح المكتب. |
| 6 |
قم بتحميل ملف JSON لتخطيط سطح المكتب ServiceNow. |
| 7 |
انقر فوق حفظ لحفظ التكوين. يمكنك الآن بدء تشغيل سطح مكتب مركز اتصال Webex داخل وحدة تحكم ServiceNow. |
| 8 |
من حقل متصفح التصفية، انتقل إلى .
|
تصف الأقسام التالية خطوات تثبيت موصل ServiceNow لمثيلات المؤسسة المرخصة.
| 1 |
قم بتسجيل الدخول إلى حساب بوابة مطوري ServiceNow وافتح وحدة تحكم الإدارة. |
| 2 |
من منطقة My Instance من قائمة الحساب، انقر فوق بدء الإنشاء.
|
| 3 |
على مثيل المطور الخاص بك، من حقل Filter navigator في الجزء العلوي الأيسر من النافذة، انتقل إلى المكونات الإضافية.
|
| 4 |
ابحث عن ملحق Openframe الذي يحمل عنوان Openframe. قد تحتاج إلى التمرير عبر القائمة.
|
| 5 |
انقر فوق التثبيت لتثبيت ملحق Openframe. |
| 6 |
في مربع حوار تنشيط المكون الإضافي، انقر فوق التنشيط.
|
| 7 |
عند اكتمال تنشيط المكون الإضافي، انقر فوق إغلاق النموذج وإعادة تحميله في مربع حوار تنشيط المكون الإضافي.
|
| 8 |
للتحقق من تنشيط المكون الإضافي، من حقل Filter navigator في الجزء العلوي الأيسر من النافذة، انتقل إلى OpenFrame. |
| 9 |
انقر فوق التكوينات وتأكد من ظهور ملحق OpenFrame في قائمة تكوينات OpenFrame.
|
يمكن للمثيلات التي لديها تراخيص مؤسسية تثبيت تطبيق Webex Contact Center مباشرةً من متجر ServiceNow.
|
|
| 1 |
في حقل Filter navigator في الجزء العلوي الأيسر من النافذة، أدخل
|
| 2 |
في صفحة خصائص النظام، قم بفرز الخصائص حسب تاريخ التحديث. تأكد من أنه يمكنك رؤية خصائص مركز اتصال Webex التالية:
|
| 3 |
انقر agentdesktop_urlلفتح agentdesktop_url صفحة خصائص النظام. |
| 4 |
في حقل القيمة، أدخل عنوان URL لسطح مكتب Webex Contact Center وفقًا لمنطقة التشغيل.
|
| 5 |
انقر فوق التحديث لحفظ التغييرات. |
| 6 |
(اختياري) لتغيير اسم جدول النشاط، قم بتحرير x_caci_webexccخصائص.webexcactivitytable كما هو مطلوب.
|
| 7 |
(اختياري) إضافة مجموعات المستخدمين بالطرق التالية:
|
| 1 |
من حقل متصفح التصفية، انتقل إلى .
|
| 2 |
انقر فوق جديد.
|
| 3 |
أدخل الخصائص التالية لعنوان URL:
|
| 4 |
على يسار حقل URL، انقر على زر القفل وأضفه
|
| 5 |
(اختياري) حدد مجموعة (مجموعات) المستخدم/الوكيل لتعيين التكوين.
|
| 6 |
انقر فوق إرسال. يظهر عنوان URL كرابط.
|
| 7 |
من حقل متصفح التصفية، انتقل إلى .
|
| 8 |
(اختياري) في قائمة مجموعة المستخدمين، انقل مجموعات المستخدمين التي يمكنها الوصول إلى سطح مكتب Webex Contact Center من متاح إلى محدد. |
| 9 |
قبل محاولة استخدام هاتف OpenFrame، تأكد من تحميل ملف JSON لتخطيط سطح المكتب المخصص لـ ServiceNow إلى مركز اتصال Webex. Management Portal لمزيد من المعلومات، راجع إعداد تخطيط ServiceNow لسطح المكتب على مركز اتصال Webex. |
| 1 |
|
| 2 |
قم بتحديث الخصائص في ملف تخطيط سطح المكتب، إذا لزم الأمر. |
| 3 |
انتقل إلى مركز Management Portal اتصال Webex. |
| 4 |
من شريط Management Portal التنقل، اختر .
|
| 5 |
انقر فوق تخطيط جديد وأدخل تفاصيل تخطيط سطح المكتب. |
| 6 |
قم بتحميل ملف JSON لتخطيط سطح المكتب ServiceNow. |
| 7 |
انقر فوق حفظ لحفظ التكوين. يمكنك الآن بدء تشغيل سطح مكتب مركز اتصال Webex داخل وحدة تحكم ServiceNow. |
| 8 |
من حقل متصفح التصفية، انتقل إلى .
|
| 1 |
من حقل متصفح التصفية، انتقل إلى الحوادث > فتح الحادث. |
| 2 |
انقر بزر الماوس الأيمن على حقل المتصل وانقر فوق تكوين القاموس.
|
| 3 |
أضف سمات مفصولة بفواصل
يمكنك الآن البدء في استخدام سطح مكتب Webex Contact Center داخل وحدة تحكم ServiceNow. |
| 4 |
من حقل متصفح التصفية، انتقل إلى .
|
- نحن ندعم تسجيل الدخول Agent Desktop باستخدام WebRTC لموصلات Salesforce (SFDC) وMicrosoft Dynamics (MS Dynamics) فقط.
- حاليًا، تنطبق هذه الميزة على الوكلاء فقط.
Agent Desktopفي وحدة تحكم ServiceNow
قبل إجراء مكالمات خارجية، تأكد من القيام بما يلي:
-
قم بإنشاء نقطة الدخول الخارجية وقم بإعداد إستراتيجية نقطة الدخول الخارجية.
-
قم بتمكين ANI الخارجي لملف تعريف الوكيل.
-
قم بتعيين ANI الخارجي إلى تخطيط رقم الاتصال إلى نقطة الإدخال.
لمزيد من المعلومات، راجع فصل التوفير في دليل Cisco Webex Contact Center الإعداد والإدارة.
من حقل متصفح التصفية، انتقل إلى .
للحصول على معلومات حول كيفية استخدام سطح المكتب، راجع علامة تبويب العامل في تعليمات مركز اتصال Webex.
نظرة عامة
تتناول هذه المقالة عدة طرق لتخصيص قواعد عملك لموصل ServiceNow CRM. يوضح بالتفصيل كيف يمكنك تخصيص حالات الاستخدام بناءً على قواعد العمل الخاصة بـ ServiceNow.
يجب على العميل إدارة حالات الاستخدام هذه بنفسه على ServiceNow. التكوين خاص بـ ServiceNow وليس برنامج Webex Contact Center أو خبرته.
هذه وثيقة مرجعية للمساعدة في تعديل قواعد العمل. سيقوم مطورو ServiceNow بإنشاء وإدارة قواعد العمل وتقديم الدعم.
توفر Cisco وثائق نموذجية فقط.
توفر الأقسام التالية تفاصيل حول كيفية إعداد أداة الإجراءات وتمكينها وإدارتها لمثيلات المطور والمؤسسة.
قم بتنفيذ أداة التحديث الخاصة بمجموعة الإجراءات
بالنسبة لمثيلات المؤسسات المرخصة، قم بتثبيت أحدث تطبيق Webex Contact Center من متجر ServiceNow.
لإعداد أداة الإجراءات لمثيلات المطور، قم بتنزيل أحدث ملف XML لمجموعة تحديثات النظام المتاح على github repo في هذا الموقع: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. اسم الملف هو webexcc-servicenow-update-setv7-1-ActionsWidget.xml. لتنفيذ مجموعة التحديث لأداة الإجراءات، راجع الخطوات من 2 إلى 9 في تنفيذ مجموعة التحديث.
أداة تمكين الإجراءات
استخدم الخاصية isWidgetDisplayEnabled لتمكين أداة الإجراءات. يجب ألا تقوم بتعديل قيمة هذه الخاصية في القسم بدون رأس لتخطيط سطح المكتب المخصص. يتم دائمًا تعيين الخاصية على false في القسم بدون رأس لتخطيط سطح المكتب المخصص. يجب تحديث قيمة الخاصية فقط في قسم اللوحة في تخطيط سطح المكتب المخصص.
بمجرد تمكين أداة الإجراءات في تخطيط سطح المكتب المخصص، يمكنك تنفيذ الإجراءات التالية:
- إدارة سجلات الأنشطة - انقر فوق عرض/تحرير سجل النشاط لعرض قائمة سجلات الأنشطة المرتبطة بالمتصل.
- ربط كائنات CRM - انقر فوق الارتباط بسجلات الأنشطة لإضافة كائنات CRM مثل نوع المكالمة (واردة أو صادرة) وكائن المكالمة وملاحظات المكالمة وما إلى ذلك إلى سجل النشاط.
- إدارة الحوادث - انقر فوق إنشاء حادث. يتم إنشاء حادث جديد مع ملء تفاصيل المتصل مسبقًا. يمكنك إجراء التحديثات المطلوبة للحادث. يمكنك اختيار تعديل نوع السجل من حادث إلى آخر، ووحدة الموارد البشرية، وما إلى ذلك بناءً على متطلباتك. لتغيير نوع السجل، قم بتعديل قيمة خاصية typeOfRecord في تكوين أداة الإجراءات. على سبيل المثال:
{ "comp": "md-tab-panel", "attributes": { "slot": "panel", "class": "widget-pane" }, "children": [ { "comp": "agentx-custom-desktop", "script": "https://cx-crmconnector.ciscoccservice.com/servicenow/v5/dist/index.js", "properties": { "isWidgetDisplayEnabled": true, "typeOfRecord" : "Create Incident" }, "wrapper": { "title": "SNOW Actions !", "maximizeAreaName": "app-maximize-area" } } ] } - إضافة ملاحظات المكالمة المباشرة - يمكنك الحصول على معلومات إضافية حول المكالمة في منطقة النص واختتام المكالمة. يمكنك مشاهدة هذه الملاحظات المضافة كملاحظات مكالمات في سجل النشاط.
تغيير الكود على ServiceNow
يتضمن البرنامج النصي تغييرات-
انتقل إلى متصفح التصفية وابحث عن
البرنامج النصي المتضمن
.حدد البرنامج النصي المتضمن ضمن واجهة مستخدم النظام.
-
قم بتصفية الاسم وابحث عن
Proputils
. -
قم بتغيير الطريقة
userGetSysId في البرنامج النصي
.تيار:
UserGetSysId : function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; },نموذج جديد للحادث:
UserGetSysId : function () { var opened_for; //Incident related changes var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', opened_for); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.initialize(); inc.caller_id=opened_for; inc.contact_type='phone'; inc.short_description='Call Received From '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },
-
انتقل إلى متصفح التصفية وابحث عن
UI page.حدد صفحات واجهة المستخدم ضمن واجهة مستخدم النظام.
-
قم بتصفية الاسم وابحث عن
agentdesktop
. -
قم بتغيير وظيفة
screenpop
في البرنامج النصي للعميل.الوظيفة الحالية:
// screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid });نموذج التعليمات البرمجية للحادث:
// screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // For Incident-related change var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
إذا كانت معلومات المتصل موجودة في CRM، وكان هناك بالفعل حادث جديد تم فتحه مع جهة الاتصال هذه، يفتح التطبيق الحادث الجاري
في حالة عدم وجود معلومات المتصل في CRM، يفتح التطبيق حادثة جديدة
في حالة وجود معلومات المتصل في CRM، يفتح التطبيق حادثة جديدة بتفاصيل مملوءة مسبقًا
نظرة عامة
توضح حالة الاستخدام هذه عملية إضافة عمود إضافي إلى جدول ServiceNow - webexcc_imp_activity وإنشاءه sn_openframe_phone_log عند تثبيت Webex CC for ServiceNow CRM Connector.
افتراضيًا، يحتوي الجدول على بعض حقول وقيم النظام الجاهزة.
يمكنك إنشاء المزيد من المتغيرات الخاصة بالأعمال (متغيرات CAD) داخل مصمم WebExcc Flow وإضافة متغيرات CAD داخل سجل نشاط ما بعد المكالمة ServiceNow، بالإضافة إلى متابعة ذلك في بيانات جدول نشاط ما بعد المكالمة.
هذه وثائق مرجعية فقط - وتوضح كيفية القيام بذلك لمتغير CAD نموذجي يسمى اسم العميل يقوم بتخزين اسم العميل داخل IVR ونشره على ServiceNow.
من المتوقع أن يقوم مطورو الشريك+Customer ServiceNow بتكوين وإدارة هذا التكوين لأنه تخصيص للموصل الحالي.
توفر Cisco فقط التقنيات الخاصة بكيفية تخصيص الموصل وتوسيعه.
اعتبارًا من هذه المقالة، قام فريق Cisco بالتحقق من صحة الدعم لإضافة متغير CAD إلى سجل النشاط وجدول النشاط باستخدام التقنية الموضحة أدناه:
إضافة عمود إلى نشاط WebExcc IMP
-
قم بتحرير الجدول في إصدار المطور من ServiceNow.

-
انتقل إلى متصفح الفلتر وابحث عن الاستوديو.

حدد
مركز اتصال Webex

أو



-
حدد جدول نشاط
WebEXCC IMP

-
أضف عمودًا جديدًا، على سبيل المثال،
CustomerName


إضافة عمود إلى سجل الهاتف
-
قم بتحرير جدول سجل الهاتف.


-
أضف عمودًا جديدًا، على سبيل المثال،
CustomerName
.

خريطة تحويل نشاط WebEXCC

أضف عمودًا جديدًا، على سبيل المثال، تعيين حقل CustomerName
.


تخصيص أعمدة القائمة

وفقًا لما توصي به Service Now، قم بتغيير إجراء الاختيار من الإنشاء إلى التجاهل.


تكوين قائمة سجلات الهاتف

انتقل إلى تضمين البرنامج النصي
أضف سطرًا واحدًا فقط webexcc. u_customername= Actionfo.اسم
العميل لدعم ITLS.



انظر السطر: webexcc. u_customername=actinfo.customername؛ مع تعليق داعم.
var propUtils = Class.create();
propUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{
getWebexccProp : function () {
var webexccprop = {};
webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/';
webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url');
// webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url');
return JSON.stringify(webexccprop);
},
UserGetSysId : function () {
var opened_for;
var user = new GlideRecord("sys_user");
user.addQuery(this.getParameter('field'),this.getParameter('value'));
user.query();
if (user.next())
opened_for=user.sys_id;//return user.sys_id;
// else
// return null;
var grInt = new GlideRecord('interaction');
grInt.initialize();
grInt.assigned_to= gs.getUserID();
grInt.type= 'phone';
grInt.opened_for= opened_for;
var sysid=grInt.insert();
return sysid;
},
setWebexcctable : function () {
var sys_id=0;
var actInfo = JSON.parse(this.getParameter('actInfo'));
var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable'));
webexcc.addQuery("callobject", actInfo.CallObject);
webexcc.query();
if(!webexcc.next()) {
webexcc.ani = actInfo.ani;
webexcc.dnis =actInfo.dnis;
webexcc.queuename =actInfo.queuename;
webexcc.wrapuptime =actInfo.wrapuptime;
webexcc.callduration =actInfo.CallDurationInSeconds;
webexcc.ringingtime =actInfo.ringingtime;
webexcc.activitydate =actInfo.ActivityDate;
webexcc.callobject =actInfo.CallObject;
webexcc.calltype =actInfo.CallType;
webexcc.calldisposition=actInfo.CallDisposition;
// This line is Added - to capture it in the Activity Log
webexcc.u_customername=actInfo.CustomerName;
sys_id=webexcc.insert();
//Activities on Incident record;
var actInfoString =this.getParameter('actInfo');
var suser = new GlideRecordSecure("sys_user");
suser.addQuery("phone", this.getParameter('ani'));
suser.query();
if(suser.next()) {
var inc = new GlideRecordSecure('incident');
inc.addQuery('caller_id', suser.sys_id);
inc.orderByDesc('sys_created_on');
inc.query();
if (inc.next()) {
var jsonPretty = JSON.stringify(JSON.parse(actInfoString),null,2);
inc.comments =jsonPretty;
inc.update();
}
}
}
return sys_id;
},
type: 'propUtils'
});
قم بإنشاء متغير CAD في مصمم التدفق

أضف متغير CAD إلى تخطيط سطح المكتب
مثال
"CadName1:SnowField1,CadName2:SnowField2"
CadName1 is CustomerName
SnowField1 is also used as CustomerName which is part of sample scirpt showen above "actInfo.CustomerName".

لقطات شاشة تجريبية
اعرض متغير CAD المضاف حديثًا في جدول نشاط WebExcc.



إنشاء متغير CAD لمصمم التدفق
إلحاح الحادث
تأثير الحادث

تحديث البرنامج النصي لخدمة الآن
تتضمن التحديثات على البرنامج النصي
-
انتقل إلى متصفح الفلتر وابحث عن
script includesحدد خيار تضمين البرنامج النصي ضمن واجهة مستخدم النظام.

-
قم بتصفية الاسم باستخدام
propUtils.
-
قم بتغيير الطريقة
UserGetSysId في حقل
البرنامج النصي.
البرنامج النصي الحالي:
UserGetSysId : function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; },نموذج جديد للحادث:
UserGetSysId : function () { var opened_for; var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', opened_for); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.initialize(); inc.caller_id=opened_for; inc.contact_type='phone'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='Call Received From '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },
-
انتقل إلى متصفح الفلتر وابحث عن
UI pages.حدد خيار صفحات واجهة المستخدم ضمن واجهة مستخدم النظام.

-
قم بتصفية صفحات واجهة المستخدم بالاسم وابحث عنها
agentdesktop.
-
قم بتغيير وظيفة
screenpop
في حقل البرنامج النصي.
الوظيفة الحالية:
// screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid }); }نموذج التعليمات البرمجية للحادث:
// screen pop function screenpop(callerani,callSessionInfo) { var Impact=3; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != undefined) { Impact=callSessionInfo.callAssociatedData.Impact.value; } var IncUrgency=3; if(callSessionInfo.callAssociatedData.Urgency != null && callSessionInfo.callAssociatedData.Urgency != undefined) { IncUrgency=callSessionInfo.callAssociatedData.Urgency.value; } if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.addParam('IncUrgency', IncUrgency); gaout.addParam('Impact', Impact); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
إذا كانت معلومات المتصل موجودة في CRM، ولم يكن هناك حادث جديد أو قيد التقدم، فسيفتح التطبيق حادثًا جديدًا


قم بتغيير الكود على ServiceNow
أضف أعمدة جديدة إلى جدول نشاط WebExcc IMP
افتح جدول نشاط WebEXCC IMP





انقر فوق التحديث.


إضافة أعمدة جديدة إلى جدول سجل الهاتف
افتح جدول سجل الهاتف





خريطة تحويل نشاط WebEXCC
افتح خريطة التحويل
من متصفح الفلتر


انقر فوق خريطة تحويل نشاط WebEXCC




انقر فوق التحديث.

تتضمن التغييرات في البرنامج النصي
-
انتقل إلى متصفح التصفية وابحث عن «يتضمن البرنامج النصي».
حدد البرنامج النصي المتضمن ضمن واجهة مستخدم النظام.

-
قم بتصفية الاسم باستخدام
PropUtils
.
-
قم بتغيير الطريقة
setWebexctable
.
نموذج جديد لرمز الحادث:
setWebexcctable : function () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('webexccactivitytable')); webexcc.addQuery("u_callobject", actInfo.CallObject); webexcc.query(); if(!webexcc.next()) { //Activities on Incident record; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var interactionsysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; delete actInfo['interaction_sys_id']; delete actInfo['incident_sys_id']; if( interactionsysid!= null && interactionsysid != undefined){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', interactionsysid ); inte.addQuery('sys_id', interactionsysid ); inte.query(); if (inte.next()) { intenum=inte.number; // inte.setValue('state','Closed Complete'); inte.work_notes='Update State to closed.'; inte.update(); } } if( incsysid!= null && incsysid != undefined){ var inci = new GlideRecordSecure('incident'); inci.addQuery('sys_id', incsysid ); inci.query(); if (inci.next()) { incnum=inci.number; var jsonPretty = JSON.stringify(actInfo,null,2); //JSON.stringify(JSON.parse(actInfoString),null,2); inci.comments =jsonPretty; inci.update(); } }else{ var suser = new GlideRecordSecure("sys_user"); suser.addQuery("phone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', suser.sys_id); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { var jsonPretty = JSON.stringify(actInfo,null,2); inc.comments =jsonPretty; inc.update(); } } } webexcc.u_ani = actInfo.ani; webexcc.u_dnis =actInfo.dnis; webexcc.u_queuename =actInfo.queuename; webexcc.u_wrapuptime =actInfo.wrapuptime; webexcc.u_callduration =actInfo.CallDurationInSeconds; webexcc.u_ringingtime =actInfo.ringingtime; webexcc.u_activitydate =actInfo.ActivityDate; webexcc.u_callobject =actInfo.CallObject; webexcc.u_calltype =actInfo.CallType; webexcc.u_calldisposition=actInfo.CallDisposition; webexcc.u_incidentnumber=incnum; webexcc.u_interactionsnumber=intenum; sys_id=webexcc.insert(); } return sys_id; },
تغييرات الطريقة على صفحات واجهة المستخدم
-
انتقل إلى متصفح التصفية وابحث عن
صفحات واجهة المستخدم
حدد خيار صفحات واجهة المستخدم ضمن واجهة مستخدم النظام.

-
قم بتصفية صفحات واجهة المستخدم بالاسم وابحث عنها
agentdesktop.
-
قم بتغيير وظيفة
nowActivities وscreenpop
في البرنامج النصي.
الوظيفة الحالية:
function nowActivities(actInfo, ani) { var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebexcctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', stripPrefixes(ani)); gaout.getXML(SetCCsysId); }نموذج التعليمات البرمجية للحادث:
function nowActivities(actInfo, ani) { var sysObjstr = window.localStorage.getItem("screenpopinteraction"); if(sysObjstr != null && sysObjstr != undefined) { var sysObjjson=JSON.parse(sysObjstr); actInfo.interaction_sys_id=sysObjjson.sysid; actInfo.incident_sys_id=sysObjjson.incsysid; } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebexcctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', stripPrefixes(ani)); gaout.getXML(SetCCsysId); } function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
النتائج بعد التحديث

تنطبق التخصيصات التالية على الإصدارات 1.0.5 والإصدارات التالية. للحصول على تخصيصات الإصدارات الأحدث 1.0.7 والإصدارات الأحدث، اتبع الخطوات أعلاه.
التخصيص رقم 1 - إضافة قواعد عمل مخصصة لحالات استخدام تدفق المكالمات
قم بإنشاء سجل حوادث جديد لكل مكالمةلكل مكالمة جديدة في موصل WebEXCC CRM في ServiceNow، قم بإنشاء سجل حوادث جديد.
ابحث عن قواعد العمل على متصفح التصفية

انقر فوق جديد.

نموذج التعليمات البرمجية كمرجع:
function customcti() { var url = null; var name = sysparm_caller_name; eid = sysparm_caller_id; var phone = sysparm_caller_phone; var taskID = sysparm_task_id; var fQuery = sysparm_query; if (fQuery == null) fQuery = ''; var view = sysparm_view; if (view == null || view == '') view = "itil"; var userID = null; if (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid); } if (userID == null && name != null && name != '') { userID = UserGetSysId("name", name); } if (userID == null && phone != null && phone != '') { userID = UserGetSysId("phone", phone); } if (userID != null) { if (fQuery.length > 0) fQuery += "^"; fQuery += "caller_id=" + userID; } if (url == null) { url = "incident.do?sys_id=-1"; if (fQuery != null) url += "&sysparm_query=" + fQuery; } answer = url; return url; } function UserGetSysId(field, value) { var user = new GlideRecord("sys_user"); user.addQuery(field, value); user.query(); if (user.next()) return user.sys_id; else return null; }نموذج تكوين لقاعدة الأعمال

تمكين العميل القابل للاستدعاء

تم وضع علامة على معالجة تكامل الاتصال الهاتفي بالكمبيوتر (CTI) للحادث على أنها صحيحة.


يجب استدعاء sysparm_cti_rule=name حيث يكون 'name' هو اسم الدالة لـ CTI Processing بدلاً من استخدام البرنامج النصي الافتراضي.
حدد الوظيفة في sys_scriptإدخال يحمل علامة العميل القابلة للاستدعاء.
إذا كان يجب إدراج أي GlideRecord (سجلات) GlideRecord أو تحديثها أو حذفها في الوظيفة، فاتصل بوظيفة منفصلة غير قابلة للاستدعاء من قبل العميل لإجراء التحديثات.
لجعل البرنامج النصي قابلاً للاستدعاء بواسطة العميل، يجب تحديد خانة الاختيار القابلة للاستدعاء من قبل العميل في النموذج الذي يظهر عند عرض الإدخال. sys_script
لا تظهر خانة الاختيار القابلة للاتصال من قبل العميل افتراضيًا. للعرض، يجب تعديل الحقول التي تظهر في النموذج باستخدام أيقونة الترس وآلية الجرافة الناعمة.
التخصيص رقم 2 - إضافة متغير CAD في جدول نشاط مركز اتصال Webex
نظرة عامةتوضح هذه المقالة عملية إضافة عمود إضافي إلى جدول ServiceNow - webexcc_activity الذي تم إنشاؤه عند تثبيت Webex CC for ServiceNow CRM Connector.
افتراضيًا، يحتوي الجدول على حقول وقيم النظام الجاهزة.
يمكنك إنشاء المزيد من المتغيرات الخاصة بالأعمال (متغيرات CAD) داخل مصمم WebExcc Flow وإضافة متغيرات CAD هذه داخل سجل نشاط ما بعد المكالمة ServiceNow، والاستمرار في ذلك في بيانات جدول نشاط ما بعد المكالمة.
-
هذه وثائق مرجعية فقط - وتوضح كيفية القيام بذلك لمتغير CAD نموذجي يسمى اسم العميل يقوم بتخزين اسم العميل داخل IVR ونشره على ServiceNow.
-
سيقوم مطورو الشريك+Customer ServiceNow بتكوين وإدارة هذا التكوين لأنه تخصيص للموصل الحالي.
-
ستوفر Cisco فقط التقنيات الخاصة بكيفية تخصيص الموصل وتوسيعه.
-
اعتبارًا من هذه المقالة، قام فريق Cisco بالتحقق من صحة الدعم لإضافة متغير CAD إلى سجل النشاط وجدول النشاط باستخدام التقنية الموضحة أدناه.
قم بتحرير الجدول في إصدار المطور من ServiceNow.

انتقل إلى .



حدد جدول أنشطة WebExcc.

على سبيل المثال، اسم العميل.


حدد تخطيط القائمة لنشاط WebExcc.

هذه الخطوة غير مطلوبة إذا كنت تستخدم تحديث Set XML - مطلوب سطر واحد فقط لإضافة "webexcc. u_customername=actinfo.customer.name "لدعم عناوين IP.



نموذج نصي
انظر السطر مع: webexcc. u_customername=actinfo.customername؛ مع تعليق داعم.
var propUtils2 = Class.create();
propUtils2.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{
getWebexccProp : function () {
var webexccprop = {};
webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/';
webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url');
webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url');
return JSON.stringify(webexccprop);
},
setWebexcctable : function () {
var sys_id=0;
var actInfo = JSON.parse(this.getParameter('actInfo'));
var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable'));
webexcc.addQuery("callobject", actInfo.CallObject);
webexcc.query();
if(!webexcc.next()) {
webexcc.ani = actInfo.ani;
webexcc.dnis =actInfo.dnis;
webexcc.queuename =actInfo.queuename;
webexcc.wrapuptime =actInfo.wrapuptime;
webexcc.callduration =actInfo.CallDurationInSeconds;
webexcc.ringingtime =actInfo.ringingtime;
webexcc.activitydate =actInfo.ActivityDate;
webexcc.callobject =actInfo.CallObject;
webexcc.calltype =actInfo.CallType;
webexcc.calldisposition=actInfo.CallDisposition;
// This line is Added - to capture it in the Activity Log
webexcc.u_customername=actInfo.CustomerName;
sys_id=webexcc.insert();
// Activities on Incident record;
var actInfoString =this.getParameter('actInfo');
var suser = new GlideRecordSecure("sys_user");
suser.addQuery("phone", this.getParameter('ani'));
suser.query();
if(suser.next()) {
var inc = new GlideRecordSecure('incident');
inc.addQuery('caller_id', suser.sys_id);
inc.orderByDesc('sys_created_on');
inc.query();
if (inc.next()) {
var jsonPretty = JSON.stringify(JSON.parse(acting string),null,2);
inc.comments =jsonPretty;
inc.update();
}
}
}
return sys_id;
},
type: 'propUtils2'
});
قم بتحرير صفحة واجهة المستخدم باسم برنامج نصي جديد
قم بإنشاء متغير CAD في مصمم التدفق
أضف متغير CAD إلى تخطيط سطح المكتب
لقطات شاشة تجريبية
اعرض متغير CAD المضاف حديثًا في جدول نشاط WebExcc.

يعمل موصل CRM استنادًا إلى إصدار الأداة المحدد في تخطيط سطح المكتب JSON. من المهم للغاية التأكد من تحديث إصدار الأداة داخل تخطيط سطح المكتب.
يُتوقع من المسؤولين التأكد من أن جميع تخطيطات سطح المكتب لموصل CRM هذا تستخدم إصدار الأداة هذا. If the layout is not updated to use the latest version, functionality will no longer be supported and may cease to work correctly.
- آخر تحديث للخدمة الآن - .1.0_v5.0.3.jsonServiceNow_Desktop_0. اعتبارًا من مارس 2024، إصدار الحزمة هو 1.0.9
- آخر تحديث لـ XML - تحديث خدمة WebExcel الآن - setv7-1 - ActionsWidget.xml، يونيو 2024











































