عندما تقوم بدمج مركز الاتصال Webex مع وحدة تحكم ServiceNow CRM، يمكنك تشغيل Webex Contact Center Desktop من داخل ServiceNow.
المتطلبات الأساسية
قبل دمج مركز الاتصال Webex مع وحدة تحكم ServiceNow CRM، تأكد من أن لديك ما يلي:
-
الوصول إلى مركز اتصال Webex.
-
وصول المسؤول إلى مركز التحكم على https://admin.webex.com وبوابة إدارة مركز الاتصال Webex. تعد عناوين URL لمدخل الإدارة خاصة بمنطقتك.
-
أمريكا الشمالية: https://portal.wxcc-us1.cisco.com
-
المملكة المتحدة: https://portal.wxcc-eu1.cisco.com
-
الاتحاد الأوروبي: https://portal.wxcc-eu2.cisco.com
-
اليابان: https://portal-v2.wxcc-jp1.cisco.com
-
-
وكيل لديه حق الوصول إلى سطح المكتب. يعد عنوان URL لسطح المكتب خاصًا بمنطقتك.
-
أمريكا الشمالية: https://desktop.wxcc-us1.cisco.com
-
المملكة المتحدة: https://desktop.wxcc-eu1.cisco.com
-
الاتحاد الأوروبي: https://desktop.wxcc-eu2.cisco.com
-
آسيا والمحيط الهادئ واليابان والصين (APJC): https://desktop.wxcc-anz1.cisco.com
-
-
وصول الوكيل إلى المجال التالي الذي تمت إضافته في القائمة المسموح بها لسياسة أمان المحتوى:
-
*.service-now.com
لمزيد من المعلومات حول كيفية تحديد القائمة المسموح بها، راجع المقالة إعدادات الأمان لمركز الاتصال Webex.
-
-
حساب بوابة مطور ServiceNow. لإنشاء حساب، انتقل إلى بوابة مطوري ServiceNow على https://developer.servicenow.com/dev.do وانقر على الاشتراك وبدء البناء.
-
الوصول إلى الملفات التالية على https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
مجموعة تحديث ServiceNow (XML)
-
تخطيط سطح مكتب مركز اتصال ServiceNow (JSON)
-
اتبع إحدى الطريقتين أدناه: بالنسبة لمثيلات المطورين، نوصي باتباع الخطوات الواردة في دليل مثيل المطور. إذا كنت تمتلك مثيلًا مرخصًا للمؤسسة، فاتبع الإرشادات الخاصة بالمثيلات المرخصة للمؤسسة. لا نوصي بخلط التطبيق المرخص من قبل المؤسسة مع مثيلات وضع الحماية للمطورين. |
تصف الأقسام التالية خطوات تثبيت موصل ServiceNow لمثيلات المطورين.
1 |
قم بتسجيل الدخول إلى حساب بوابة مطور ServiceNow الخاص بك وافتح الإدارة وحدة التحكم. |
2 |
من منطقة مثيلاتي في قائمة الحساب ، انقر على بدء الإنشاء. |
3 |
في مثيل المطور الخاص بك، من الحقل متصفح المرشح في الجزء العلوي الأيسر من النافذة، انتقل إلى المكونات الإضافية. |
4 |
ابحث عن المكوّن الإضافي Openframe الذي يحمل العنوان Openframe. قد تحتاج إلى التمرير عبر القائمة. |
5 |
انقر على تثبيت لتثبيت المكون الإضافي Openframe. |
6 |
في مربع الحوار تنشيط المكون الإضافي ، انقر فوق تنشيط. |
7 |
عند اكتمال تنشيط المكون الإضافي، انقر فوق إغلاق & تحديث النموذج في مربع الحوار تنشيط البرنامج المساعد . |
8 |
للتحقق من تنشيط المكون الإضافي، من الحقل متصفح التصفية في الجزء العلوي الأيسر من النافذة، انتقل إلى OpenFrame. |
9 |
انقر على التكوينات وتأكد من ظهور المكون الإضافي OpenFrame في قائمة تكوينات OpenFrame . |
1 |
قم بتنزيل أحدث ملف لمجموعة تحديث النظام XML المتوفر على github repo في هذا الموقع: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. اسم الملف: webexcc-servicenow-update-setV(X).xml |
2 |
في مثيل ServiceNow الخاص بك، من الحقل متصفح التصفية في الجزء العلوي الأيسر من النافذة، انتقل إلى . |
3 |
انقر فوق استيراد مجموعة التحديثات من الرابط XML . |
4 |
انقر فوق اختيار ملف، وحدد ملف مجموعة تحديث النظام XML، ثم انقر فوق تحميل.
تظهر مجموعة التحديثات في قائمة مجموعات التحديثات المستردة وهي في الحالة محملة .
|
5 |
من القائمة مجموعات التحديثات المستردة ، انقر فوق اسم ملف مجموعة التحديث (الرابط) لفتح مجموعة التحديثات. |
6 |
في الجزء العلوي الأيسر من النافذة، انقر فوق معاينة مجموعة التحديث للتحقق من وجود مشكلات في مجموعة التحديثات. |
7 |
انقر فوق إغلاق في مربع الحوار Update Set Preview بمجرد اكتمال المعاينة. |
8 |
انقر فوق تنفيذ مجموعة التحديث. |
9 |
انقر فوق إغلاق في مربع الحوار متابعة مجموعة التحديث بمجرد اكتمال الالتزام بمجموعة التحديثات. |
1 |
في الحقل متصفح التصفية في الجزء العلوي الأيسر من النافذة، اكتب |
2 |
في صفحة خصائص النظام ، قم بفرز الخصائص حسب تاريخ التحديث. تأكد من أنه يمكنك رؤية خصائص مركز الاتصال Webex التالية: |
3 |
انقر فوق agentdesktop_url لفتح الصفحة وكيل خاصية النظامdesktop_url . |
4 |
في الحقل القيمة ، أدخل عنوان URL لسطح مكتب مركز الاتصال Webex وفقًا لمنطقة التشغيل.
|
5 |
انقر فوق تحديث لحفظ التغييرات. |
6 |
(اختياري) لتغيير اسم جدول النشاط، قم بتحرير خصائص webexccactivitytable كما هو مطلوب. في صفحة خصائص النظام ، انقر على webexccactivitytable. غيّر الحقل القيمة كما هو مطلوب. |
7 |
(اختياري) قم بإضافة مجموعات المستخدمين بالطرق التالية:
|
1 |
من الحقل متصفح التصفية ، انتقل إلى . |
2 |
انقر فوق New (جديد). |
3 |
أدخل الخصائص التالية لعنوان URL:
|
4 |
على يسار الحقل URL ، انقر فوق الزر قفل وأضف |
5 |
(اختياري) حدد مجموعات المستخدمين/الوكلاء لتعيين التكوين. |
6 |
انقر فوق إرسال. يظهر عنوان URL كرابط. |
7 |
قبل أن تحاول استخدام هاتف OpenFrame، تأكد من تحميل ملف ServiceNow المخصص لتخطيط سطح المكتب JSON إلى Webex Contact Center Management Portal. لمزيد من المعلومات، راجع إعداد تخطيط سطح المكتب ServiceNow على Webex مركز الاتصال. |
1 |
قم بتنزيل تخطيط سطح المكتب لـ ServiceNow من https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
قم بتحديث الخصائص في ملف تخطيط سطح المكتب، إذا لزم الأمر. |
3 |
انتقل إلى Webex بوابة إدارة مركز الاتصال. |
4 |
من شريط التنقل في بوابة الإدارة، اختر . |
5 |
انقر فوق New Layout (تخطيط جديد) وأدخل تفاصيل تخطيط سطح المكتب. |
6 |
قم بتحميل ملف ServiceNow Desktop Layout JSON. |
7 |
انقر فوق حفظ لحفظ التكوين. يمكنك الآن بدء تشغيل Webex Contact Center Desktop ضمن وحدة تحكم ServiceNow. |
8 |
من الحقل متصفح عامل التصفية ، انتقل إلى . انقر على أيقونة الهاتف السفلية اليسرى. |
تصف الأقسام التالية خطوات تثبيت موصل ServiceNow لمثيلات المؤسسة المرخصة.
1 |
قم بتسجيل الدخول إلى حساب بوابة مطور ServiceNow الخاص بك وافتح الإدارة وحدة التحكم. |
2 |
من منطقة مثيلاتي في قائمة الحساب ، انقر على بدء الإنشاء. |
3 |
في مثيل المطور الخاص بك، من الحقل متصفح المرشح في الجزء العلوي الأيسر من النافذة، انتقل إلى المكونات الإضافية. |
4 |
ابحث عن المكون الإضافي Openframe الذي يحمل العنوان Openframe. قد تحتاج إلى التمرير عبر القائمة. |
5 |
انقر على تثبيت لتثبيت المكون الإضافي Openframe. |
6 |
في مربع الحوار تنشيط المكون الإضافي ، انقر فوق تنشيط. |
7 |
عند اكتمال تنشيط المكون الإضافي، انقر فوق إغلاق & تحديث النموذج في مربع الحوار تنشيط البرنامج المساعد . |
8 |
للتحقق من تنشيط المكون الإضافي، من الحقل متصفح المرشح في الجزء العلوي الأيسر من النافذة، انتقل إلى OpenFrame. |
9 |
انقر على التكوينات وتأكد من ظهور المكون الإضافي OpenFrame في قائمة تكوينات OpenFrame . |
يمكن للمثيلات التي لديها تراخيص مؤسسية تثبيت تطبيق مركز الاتصال Webex مباشرة من متجر ServiceNow.
قم بتنزيل وتثبيت حزمة مركز الاتصال Webex من متجر ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
في الحقل متصفح التصفية في الجزء العلوي الأيسر من النافذة، أدخل |
2 |
في الصفحة خصائص النظام ، قم بفرز الخصائص حسب تاريخ التحديث. تأكد من أنه يمكنك رؤية خصائص مركز الاتصال Webex التالية: |
3 |
انقر فوق agentdesktop_url لفتح الصفحة وكيل خاصية النظامdesktop_url . |
4 |
في الحقل القيمة ، أدخل عنوان URL لسطح مكتب مركز الاتصال Webex وفقًا لمنطقة التشغيل.
|
5 |
انقر فوق تحديث لحفظ التغييرات. |
6 |
(اختياري) لتغيير اسم جدول النشاط، قم بتحرير x_caci_webexcc.webexccactivitytable كما هو مطلوب.
|
7 |
(اختياري) قم بإضافة مجموعات المستخدمين بالطرق التالية:
|
1 |
من الحقل متصفح التصفية ، انتقل إلى . |
2 |
انقر فوق New (جديد). |
3 |
أدخل الخصائص التالية لعنوان URL:
|
4 |
على يسار الحقل عنوان URL ، انقر فوق الزر قفل وأضف |
5 |
(اختياري) حدد مجموعات المستخدمين/الوكلاء لتعيين التكوين. |
6 |
انقر فوق إرسال. يظهر عنوان URL كرابط. |
7 |
من الحقل متصفح التصفية ، انتقل إلى . انقر على أيقونة الهاتف السفلية اليسرى. |
8 |
(اختياري) في قائمة مجموعة المستخدمين ، انقل مجموعات المستخدمين التي يمكنها الوصول إلى Webex سطح مكتب مركز الاتصال من المتاح إلى محدد. |
9 |
قبل أن تحاول استخدام هاتف OpenFrame، تأكد من تحميل ملف ServiceNow المخصص لتخطيط سطح المكتب JSON إلى Webex Contact Center Management Portal. لمزيد من المعلومات، راجع إعداد تخطيط سطح المكتب ServiceNow في مركز الاتصال Webex. |
1 |
قم بتنزيل تخطيط سطح المكتب لـ ServiceNow من https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
قم بتحديث الخصائص في ملف تخطيط سطح المكتب، إذا لزم الأمر. |
3 |
انتقل إلى Webex بوابة إدارة مركز الاتصال. |
4 |
من شريط التنقل في مدخل الإدارة، اختر . |
5 |
انقر فوق New Layout (تخطيط جديد) وأدخل تفاصيل تخطيط سطح المكتب. |
6 |
قم بتحميل ملف ServiceNow Desktop Layout JSON. |
7 |
انقر فوق حفظ لحفظ التكوين. يمكنك الآن بدء تشغيل Webex Contact Center Desktop ضمن وحدة تحكم ServiceNow. |
8 |
من الحقل متصفح عامل التصفية ، انتقل إلى . انقر على أيقونة الهاتف السفلية اليسرى. |
1 |
من الحقل متصفح عامل التصفية ، انتقل إلى الحوادث > حادثة مفتوحة. |
2 |
انقر بزر الماوس الأيمن على حقل المتصل وانقر على تكوين القاموس. |
3 |
أضف سمات مفصولة بفواصل يمكنك الآن البدء في استخدام Webex Contact Center Desktop ضمن وحدة تحكم ServiceNow. |
4 |
من الحقل متصفح التصفية ، انتقل إلى . انقر على أيقونة الهاتف السفلية اليسرى. |
Agent Desktop في وحدة تحكم ServiceNow
قبل إجراء مكالمات صادرة، تأكد من القيام بما يلي:
-
إنشاء نقطة إدخال صادرة وقم بإعداد استراتيجية نقطة الإدخال الصادرة.
-
تمكين ANI صادر لملف تعريف الوكيل.
-
ضبط ANI صادر على تعيين رقم الطلب إلى نقطة الإدخال.
لمزيد من المعلومات، راجع فصل التزويد من دليل الإدارة وإعداد Cisco Webex Contact Center.
من الحقل متصفح التصفية ، انتقل إلى .
انقر على أيقونة الهاتف السفلية اليسرى.
للحصول على معلومات حول كيفية استخدام سطح المكتب، راجع Cisco Webex Contact Center Agent Desktop دليل المستخدم.
تقسيم تخزين الطرف الثالث
قد تؤدي مشكلة محتملة في التحديث الأخير لـ Google Chrome وEdge 116 أو الإصدارات الأحدث إلى تعطيل تجربة تسجيل الدخول إلى موصلات CRM في مركز الاتصال Webex. تؤثر هذه المشكلة على تسجيل الدخول إلى سطح المكتب على وحدة تحكم ServiceNow CRM.
لحل هذه المشكلة على متصفح Google Chrome:
-
افتح متصفح Google Chrome وأدخل
chrome://flags/#third-party-storage-partitioning
في شريط العناوين. -
قم بتعطيل علامة تقسيم التخزين التجريبي لجهة خارجية .
-
أغلق وأعد تشغيل Chrome.
-
قم بتسجيل الدخول مرة أخرى إلى سطح المكتب داخل وحدة تحكم ServiceNow CRM.
لحل هذه المشكلة على متصفح Edge:
-
افتح المتصفح وأدخل
edge://flags/#third-party-storage-partitioning
في شريط العناوين. -
قم بتعطيل علامة تقسيم التخزين التجريبي لجهة خارجية .
-
احفظ التغييرات وأعد تشغيل المتصفح.
-
قم بتسجيل الدخول مرة أخرى إلى سطح المكتب داخل وحدة تحكم ServiceNow CRM.
لحل هذه المشكلة على متصفح Firefox:
-
افتح المتصفح وأدخل
about:config
في شريط العناوين.قد تظهر صفحة تحذير. انقر على قبول المخاطرة والمتابعة للانتقال إلى صفحة
حول:config
. -
يدخل
Network.cookie.cookieBehavior
في ال اسم تفضيل البحث المربع في الجزء العلويحول: التكوين
الصفحة للعثور على التفضيل. -
انقر نقرًا مزدوجًا على التفضيل أو انقر يحرر أيقونة لتحرير التفضيلات.
-
قم بتغيير القيمة إلى 0.
-
احفظ التغييرات وأعد تشغيل المتصفح.
-
قم بتسجيل الدخول مرة أخرى إلى سطح المكتب داخل وحدة تحكم ServiceNow CRM.
نظرة عامة
تتناول هذه المقالة عدة طرق لتخصيص قواعد العمل الخاصة بك لموصل ServiceNow CRM. وهو يوضح بالتفصيل كيف يمكنك تخصيص حالات الاستخدام بناءً على قواعد العمل الخاصة بـ ServiceNow.
يجب على العميل إدارة حالات الاستخدام هذه ذاتيًا على ServiceNow. التكوين خاص بـ ServiceNow وليس برنامج Webex لمركز الاتصال أو الخبرة.
هذه وثيقة مرجعية للمساعدة في تعديل قواعد العمل. سيقوم مطورو ServiceNow بإنشاء وإدارة قواعد العمل وتقديم الدعم. توفر Cisco نماذج وثائق فقط. |
تغيير الكود في ServiceNow
يتضمن البرنامج النصي التغييرات-
انتقل إلى متصفح التصفية وابحث عن
يتضمن البرنامج النصي
.حدد يتضمن البرنامج النصي ضمن واجهة مستخدم النظام.
-
قم بتصفية الاسم وابحث عنه
com.propUtils
. -
تغيير الطريقة
معرف المستخدم
في البرنامج النصي.الحالي:
UserGetSysId: function () { var open_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); إذا (user.next()) open_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assisted_to= gs.getUserID(); grInt.type= 'الهاتف'; grInt.opened_for= open_for; var sysid=grInt.insert(); عودة النظام؛ },
نموذج التعليمات البرمجية الجديد للحادث:
UserGetSysId: function () { var open_for; // التغييرات المتعلقة بالحادث var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { open_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', open_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='الهاتف'; inc.short_description='تم تلقي مكالمة من'+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assisted_to= gs.getUserID(); grInt.type= 'الهاتف'; grInt.opened_for= open_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; إرجاع JSON.stringify(sysidlist); },
-
انتقل إلى متصفح التصفية وابحث عن
صفحة واجهة المستخدم
.حدد صفحات واجهة المستخدم ضمن واجهة مستخدم النظام.
-
قم بتصفية الاسم وابحث عن
com.agentdesktop
. -
غير ال
Screenpop
الوظيفة في البرنامج النصي للعميل.الوظيفة الحالية:
// شاشة منبثقة 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({ الكيان: 'التفاعل'، الاستعلام: 'sys_id='+sysid });
نموذج رمز للحادث:
// شاشة منبثقة 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 sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ الكيان: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ الكيان: 'incident'، query: 'sys_id=-1'، 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
إذا كانت معلومات المتصل موجودة في CRM، وكان هناك بالفعل حادث جديد مفتوح مع جهة الاتصال هذه، فسيفتح التطبيق الحادث قيد التقدم
إذا كانت معلومات المتصل غير موجودة في CRM، فسيقوم التطبيق بفتح حادثة جديدة
إذا كانت معلومات المتصل موجودة في CRM، فسيفتح التطبيق حادثة جديدة بتفاصيل مملوءة مسبقًا
نظرة عامة
توضح حالة الاستخدام هذه عملية إضافة عمود إضافي إلى جدول ServiceNow - webexcc_imp_activity وإنشاء sn_openframe_phone_log عند تثبيت Webex CC لموصل ServiceNow CRM.
بشكل افتراضي، يحتوي الجدول على حقول وقيم معينة للنظام.
يمكنك إنشاء المزيد من المتغيرات الخاصة بالأعمال (متغيرات CAD) داخل مصمم WebexCC Flow وإضافة متغيرات CAD داخل سجل أنشطة ما بعد الاتصال الخاص بـ ServiceNow، بالإضافة إلى استمرار ذلك في بيانات جدول نشاط ما بعد الاتصال.
هذه وثيقة مرجعية فقط - وتوضح كيفية القيام بذلك لنموذج متغير CAD يسمى اسم العميل الذي يخزن اسم العميل داخل IVR وينشره في ServiceNow. من المتوقع أن يقوم مطورو Partner+Customer ServiceNow بتكوين هذا التكوين وإدارته لأنه تخصيص للموصل الموجود. توفر Cisco فقط التقنيات الخاصة بكيفية تخصيص الموصل وتوسيعه. اعتبارًا من هذه المقالة، قام فريق Cisco بالتحقق من صحة الدعم لإضافة متغير CAD إلى سجل الأنشطة وجدول الأنشطة باستخدام التقنية الموضحة أدناه: |
إضافة عمود إلى نشاط WebexCC IMP
-
قم بتحرير الجدول في إصدار المطور من ServiceNow.
-
انتقل إلى متصفح المرشح وابحث عن الاستوديو.
تحديد
Webex Contact Center
أو
-
حدد
نشاط WebexCC IMP
طاولة -
أضف عمودًا جديدًا، على سبيل المثال،
اسم الزبون
إضافة عمود إلى سجل الهاتف
-
تحرير جدول سجل الهاتف.
-
أضف عمودًا جديدًا، على سبيل المثال،
اسم الزبون
.
خريطة تحويل نشاط WebexCC
أضف عمودًا جديدًا، على سبيل المثال، اسم الزبون
رسم الخرائط الميدانية.
تخصيص أعمدة القائمة
كما توصي Service Now، قم بتغيير إجراء الاختيار من الإنشاء إلى التجاهل.
تكوين قائمة سجلات الهاتف
انتقل إلى تضمين البرنامج النصي
إضافة سطر واحد فقط |
عينة من البرنامج النصي
انظر السطر: webexcc.u_customername=actInfo.CustomerName; مع تعليق مؤيد.
varpropUtils = 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 open_for; var user = new GlideRecord("sys_user"); user.addQuery( this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) open_for=user.sys_id;//return user.sys_id; // else / / return null; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.signed_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= open_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; // تمت إضافة هذا السطر - لالتقاطه في سجل الأنشطة webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); // الأنشطة المتعلقة بسجل الحوادث؛ 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(); } } } إرجاع sys_id; }، اكتب: 'propUtils' });
قم بإنشاء متغير CAD في مصمم التدفق
أضف متغير CAD إلى تخطيط سطح المكتب
مثال
"CadName1:SnowField1,CadName2:SnowField2" CadName1 هو CustomerName يتم استخدام SnowField1 أيضًا كـ CustomerName وهو جزء من نموذج النص الموضح أعلاه "actInfo.CustomerName".
لقطات تجريبية
اعرض متغير CAD المضاف حديثًا في جدول نشاط WebexCC.
إنشاء متغير CAD لمصمم التدفق
إلحاح الحادثتأثير الحادث
تحديث البرنامج النصي للخدمة الآن
تتضمن التحديثات على البرنامج النصي
-
انتقل إلى متصفح التصفية وابحث عن
يتضمن البرنامج النصي
حدد يتضمن البرنامج النصي الخيار تحت واجهة مستخدم النظام.
-
تصفية اسم مع
com.propUtils
. -
تغيير الطريقة
معرف المستخدم
في ال النصي مجال.البرنامج النصي الحالي:
UserGetSysId: function () { var open_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); إذا (user.next()) open_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assisted_to= gs.getUserID(); grInt.type= 'الهاتف'; grInt.opened_for= open_for; var sysid=grInt.insert(); عودة النظام؛ },
نموذج التعليمات البرمجية الجديد للحادث:
UserGetSysId: function () { var open_for; فار sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { open_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', open_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='الهاتف'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='تم تلقي مكالمة من'+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assisted_to= gs.getUserID(); grInt.type= 'الهاتف'; grInt.opened_for= open_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; إرجاع JSON.stringify(sysidlist);//sysid; },
-
انتقل إلى متصفح التصفية وابحث عن
صفحات واجهة المستخدم
.حدد صفحات واجهة المستخدم الخيار تحت واجهة مستخدم النظام.
-
تصفية صفحات واجهة المستخدم مع اسم والبحث عن
com.agentdesktop
. -
غير ال
Screenpop
وظيفة في مجال البرنامج النصي.الوظيفة الحالية:
// شاشة منبثقة 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({ الكيان: 'التفاعل'، الاستعلام: 'sys_id='+sysid }); }
نموذج رمز للحادث:
// انبثاق الشاشة function screenpop(callerani,callSessionInfo) { var Impact=3; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != unified) { Impact=callSessionInfo.callAssociatedData.Impact.value; } var IncUrgency=3; if(callSessionInfo.callAssociatedData.Urgency != null && callSessionInfo.callAssociatedData.Urgency != uncategorized) { 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({ الكيان: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ الكيان: '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
انقر فوق تحديث.
تتضمن التغييرات في البرنامج النصي
-
انتقل إلى متصفح التصفية وابحث عن "يتضمن البرنامج النصي".
حدد يتضمن البرنامج النصي تحت واجهة مستخدم النظام.
-
تصفية اسم مع
com.propUtils
. -
تغيير الطريقة
setWebexcctable
.نموذج التعليمات البرمجية الجديد للحادث:
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()) { // الأنشطة في سجل الحوادث؛ //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var Interactionsysid=actInfo.interaction_sys_id; فار Incnum = ""؛ فار إنتينوم = ""; حذف actInfo['interaction_sys_id']; حذف actInfo['incident_sys_id']; if( Interactionsysid!= null && Interactionsysid != unified){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', Interactionsysid ); inte.addQuery('sys_id', Interactionsysid ); inte.query(); إذا (inte.next()) { intenum=inte.number; // inte.setValue('state','Closed Complete'); inte.work_notes='تحديث الحالة إلى مغلق.'; inte.update(); } } if( incsysid!= null && incsysid != uncategorized){ var inci = new GlideRecordSecure('incident'); inci.addQuery('sys_id', incsysid ); inci.query(); إذا (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(); } إرجاع sys_id; },
يتغير الأسلوب على صفحات واجهة المستخدم
-
انتقل إلى متصفح التصفية وابحث عن
صفحات واجهة المستخدم
حدد الخيار صفحات واجهة المستخدم ضمن واجهة مستخدم النظام.
-
قم بتصفية صفحات واجهة المستخدم باستخدام الاسم وابحث عن
agentdesktop
. -
غير ال
الآن الأنشطة و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 != غير محدد) { 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); } وظيفة 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({ الكيان: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ الكيان: '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، قم بإنشاء سجل حادث جديد.
ابحث عن قواعد العمل في متصفح التصفية
انقر فوق New (جديد).
رمز العينة كمرجع:
وظيفة customcti() { var url = null; اسم فار = sysparm_caller_name؛ العيد = sysparm_caller_id; var phone = sysparm_caller_phone; var TaskID = sysparm_task_id; var fQuery = sysparm_query; إذا (fQuery == null) fQuery = ''; فار عرض = 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=" + معرف المستخدم; } if (url == null) { url = "incident.do?sys_id=-1"; if (fQuery!= null) url += "&sysparm_query=" + fQuery; } الإجابة = url; عنوان URL للإرجاع؛ } وظيفة UserGetSysId(field, value) { var user = new GlideRecord("sys_user"); user.addQuery(field, value); user.query(); إذا قام (user.next()) بإرجاع user.sys_id; وإلا يعود فارغًا؛ }
نموذج لتكوين قاعدة العمل
تمكين العميل للاستدعاء
تكامل الاتصالات الهاتفية بالكمبيوتر (CTI) معالجة الحوادث تم وضع علامة على أنها حقيقي.
قم بتحديث عنوان URL الخاص بـ screenpop باستخدام القاعدة المخصصة CTI " cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone= "
ال sysparm_cti_rule=name أين ' اسم "هو اسم أ وظيفة هو أن يتم الاحتجاج ل CTI المعالجة بدلاً من استخدام البرنامج النصي الافتراضي.
تحديد الوظيفة في أ sys_script تم وضع علامة على الإدخال العميل قابل للاستدعاء.
إذا كان يجب عليك إدراج أو تحديث أو حذف أي GlideRecords في الوظيفة، فاستدعاء وظيفة منفصلة غير تابعة للعميل قابلة للاستدعاء لإجراء التحديثات.
لجعل البرنامج النصي قابلاً للاستدعاء من قبل العميل، يجب عليك تحديد خانة الاختيار القابلة للاستدعاء من قبل العميل في النموذج الذي يتم عرضه عند عرض إدخال sys_script. لا تظهر خانة الاختيار القابلة للاستدعاء من قبل العميل بشكل افتراضي. للعرض، يجب عليك تعديل الحقول التي تظهر في النموذج باستخدام رمز الترس وآلية الجرافة البطيئة. |
التخصيص رقم 2 - أضف متغير CAD في جدول نشاط مركز الاتصال Webex
نظرة عامةتوضح هذه المقالة تفاصيل عملية إضافة عمود إضافي إلى جدول ServiceNow - webexcc_activity الذي تم إنشاؤه عند تثبيت Webex CC لـ ServiceNow CRM Connector.
بشكل افتراضي، يحتوي الجدول على حقول وقيم النظام الجاهزة.
يمكنك إنشاء المزيد من المتغيرات الخاصة بالأعمال (متغيرات CAD) داخل مصمم WebexCC Flow وإضافة متغيرات CAD تلك داخل ServiceNow سجل أنشطة ما بعد المكالمة، والاستمرار في ذلك إلى جدول أنشطة ما بعد المكالمة البيانات.
|
قم بتحرير الجدول في إصدار المطور من ServiceNow.
انتقل إلى
.حدد جدول نشاط WebexCC .
على سبيل المثال، اسم العميل.
حدد تخطيط القائمة لـ نشاط WebexCC.
هذه الخطوة غير مطلوبة إذا كنت تستخدم مجموعة التحديث XML - يلزم إضافة سطر واحد فقط "webexcc.u_customername=actInfo.CustomerName" إلى PropUtils. |
عينة من البرنامج النصي
راجع السطر الذي يحتوي على:webexcc.u_customername=actInfo.CustomerName; مع تعليق داعم.
varpropUtils2 = 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; // تمت إضافة هذا السطر - لالتقاطه في سجل الأنشطة webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); // الأنشطة المتعلقة بسجل الحوادث؛ 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(); } } } إرجاع sys_id; }، اكتب: 'propUtils2' });
قم بتحرير صفحة واجهة المستخدم باستخدام اسم البرنامج النصي الجديدقم بإنشاء متغير CAD في مصمم التدفق
أضف متغير CAD إلى تخطيط سطح المكتب
لقطات تجريبية
اعرض متغير CAD المضاف حديثًا في جدول نشاط WebexCC.