Інтегрувати Webex Contact Center з ServiceNow (Версія 1—Legacy)
Коли ви інтегруєте Webex Contact Center з консоллю CRM ServiceNow, ви можете запустити Webex Contact Center Desktop зсередини ServiceNow.
Необхідні умови
CRM-конектор працює на основі версії віджета, визначеної у робочому столі JSON. Вкрай важливо переконатися, що версія віджета в Desktop Layout постійно оновлюється. Станом на листопад 2025 року остання версія віджета — 5.0.0 (V5).
Від адміністраторів очікується, що всі макети робочого столу цього CRM-конектора використовують цю версію віджета. Якщо макет не оновлюється для останньої версії, функціонал більше не підтримуватиметься і може перестати працювати коректно.
Мінімальний підтримуваний розмір інтерфейсу софтфону — 500px. Будь-яке значення нижче 500px може призвести до проблем із відображенням або функціональністю.
Перед тим, як інтегрувати Webex Contact Center з консоллю CRM ServiceNow, переконайтеся, що у вас є наступне:
-
Доступ до Webex Contact Center.
-
Доступ адміністратора до Control Hub за адресою https://admin.webex.com та порталу керування Webex Contact Center. URL-адреси Управлінського порталу специфічні для вашого регіону.
-
Агент із доступом до робочого столу. URL робочого столу залежить від вашого регіону.
-
Доступ агента до наступного домену, який додається до списку дозволених політик безпеки контенту:
-
*.service-now.com
Для отримання додаткової інформації про визначення списку дозволених сторінок дивіться статтю «Налаштування безпеки» для Webex Contact Center.
-
-
Обліковий запис порталу розробника 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, які підтримує Webex Contact Center, — це Ванкувер, Юта, Токія, Вашингтон і Ксанаду. Детальніше див. Webex Contact Center Інтеграція з ServiceNow.
Дотримуйтесь одного з двох наведених нижче методів:
Для інстансів розробників ми рекомендуємо дотримуватися кроків у посібнику з інстансів розробника.
Якщо у вас є інстанс з корпоративною ліцензією, дотримуйтесь правил для корпоративної ліцензії.
Ми не рекомендуємо змішувати корпоративний ліцензований додаток із інстансами пісочниці розробників.
Наступні розділи описують кроки встановлення конектора ServiceNow для екземплярів розробників.
| 1 |
Увійдіть у свій обліковий запис порталу розробника ServiceNow і відкрийте консоль адміністрування . |
| 2 |
У розділі «Мій екземпляр » меню «Обліковий запис » натисніть «Почати будувати».
|
| 3 |
У вашому екземплярі розробника, у полі Filter navigator у верхньому лівому куті вікна, перейдіть до Плагінів.
|
| 4 |
Пошукайте плагін Openframe з назвою Openframe. Можливо, вам доведеться переглянути список.
|
| 5 |
Натисніть Встановити , щоб встановити плагін Openframe. |
| 6 |
У діалоговому вікні «Активувати плагін » натисніть «Активувати».
|
| 7 |
Коли активація плагіна завершена, натисніть «Закрити та перезавантажити форму » у діалоговому вікні активації плагіна.
|
| 8 |
Щоб перевірити активацію плагіна, у полі Filter navigator у верхньому лівому куті вікна перейдіть до OpenFrame. |
| 9 |
Натисніть «Конфігурації » та переконайтеся, що плагін OpenFrame з'являється у списку конфігурацій OpenFrame.
|
| 1 |
Завантажте останній файл System Update Set XML, доступний у репозиторії github за цією адресою : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. Ім'я файлу: webexcc-servicenow-update-setV(X).XML
|
| 2 |
У вашому екземплярі ServiceNow, у полі Filter navigator у верхньому лівому куті вікна, перейдіть до .
|
| 3 |
Натисніть на Import Update Set за посиланням XML .
|
| 4 |
Натисніть «Вибрати файл», виберіть файл System Update Set XML, а потім натисніть «Upload».
Набір оновлень з'являється у списку Retrieved Update Sets і перебуває у стані Loaded .
|
| 5 |
Зі списку Retrieved Update Sets натисніть Name Update Set File Name (посилання), щоб відкрити Update Set.
|
| 6 |
У верхньому правому куті вікна натисніть «Попередній перегляд оновлення», щоб перевірити набір оновлень на наявність проблем.
|
| 7 |
Після завершення попереднього перегляду натисніть «Закрити» у діалоговому вікні Update Set.
|
| 8 |
Натисніть Commit Update Set.
|
| 9 |
Натисніть «Закрити » у діалоговому вікні Update Set Commit після завершення комітингу Update Set.
|
| 1 |
У полі Filter navigator у верхньому лівому куті вікна введіть
|
| 2 |
На сторінці властивостей системи відсортуйте властивості за датою оновлення. Переконайтеся, що ви бачите такі властивості Webex Contact Center:
|
| 3 |
Натисніть agentdesktop_url , щоб відкрити сторінку Властивості системи agentdesktop_url . |
| 4 |
У полі Value введіть URL робочого столу Webex Contact Center відповідно до регіону роботи.
|
| 5 |
Натисніть «Оновити », щоб зберегти зміни. |
| 6 |
(За бажанням) Щоб змінити назву таблиці активності, редагуйте властивості webexccactivitytable за потреби. На сторінці властивостей системи натисніть webexccactivitytable . Змініть поле Значення за потреби.
|
| 7 |
(За бажанням) Додавайте групи користувачів такими способами:
|
| 1 |
З поля навігатора фільтрів перейдіть до .
|
| 2 |
Натисніть кнопку Створити.
|
| 3 |
Введіть такі властивості для URL:
|
| 4 |
Праворуч від поля URL натисніть кнопку Lock і додайте
|
| 5 |
(За бажанням) Виберіть групи користувачів/агентів для призначення конфігурації.
|
| 6 |
Натисніть Submit (Надіслати). URL з'являється як посилання.
|
| 7 |
Перед тим, як спробувати використовувати телефон OpenFrame, переконайтеся, що ви завантажили JSON-файл ServiceNow Custom Desktop Layout на портал керування Webex Contact Center. Детальніше дивіться у розділі «Налаштувати розкладку робочого столу ServiceNow» на Webex Contact Center. |
| 1 |
Завантажте макет робочого столу для ServiceNow з https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.
|
| 2 |
Оновіть властивості у файлі Desktop Layout, якщо потрібно. |
| 3 |
Перейдіть на портал управління Webex Contact Center. |
| 4 |
У навігаційній панелі Порталу керування виберіть .
|
| 5 |
Натисніть «Новий макет » і введіть деталі розташування робочого столу. |
| 6 |
Завантажте JSON-файл ServiceNow Desktop Layout. |
| 7 |
Натисніть «Зберегти », щоб зберегти конфігурацію. Тепер ви можете запускати робочий стіл Webex Contact Center у консолі ServiceNow. |
| 8 |
З поля навігатора фільтрів перейдіть до Service Operations.
|
Наступні розділи описують кроки встановлення конектора ServiceNow для ліцензованих корпоративних інстансів.
| 1 |
Увійдіть у свій обліковий запис порталу розробника ServiceNow і відкрийте консоль адміністрування . |
| 2 |
У розділі «Мій екземпляр » меню «Обліковий запис » натисніть «Почати будувати».
|
| 3 |
У вашому екземплярі розробника, у полі Filter navigator у верхньому лівому куті вікна, перейдіть до Плагінів.
|
| 4 |
Пошукайте плагін Openframe з назвою Openframe. Можливо, вам доведеться переглянути список.
|
| 5 |
Натисніть Встановити , щоб встановити плагін Openframe. |
| 6 |
У діалоговому вікні «Активувати плагін » натисніть «Активувати».
|
| 7 |
Коли активація плагіна завершена, натисніть «Закрити та перезавантажити форму » у діалоговому вікні активації плагіна.
|
| 8 |
Щоб перевірити активацію плагіна, у полі Filter navigator у верхньому лівому куті вікна перейдіть до OpenFrame. |
| 9 |
Натисніть «Конфігурації » та переконайтеся, що плагін OpenFrame з'являється у списку конфігурацій OpenFrame.
|
Інстанси з корпоративними ліцензіями можуть встановлювати додаток Webex Contact Center безпосередньо з ServiceNow Store.
|
Завантажте та встановіть пакет Webex Contact Center з магазину ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947.
|
| 1 |
У полі Filter navigator у верхньому лівому куті вікна введіть
|
| 2 |
На сторінці властивостей системи відсортуйте властивості за датою оновлення. Переконайтеся, що ви бачите такі властивості Webex Contact Center:
|
| 3 |
Натисніть agentdesktop_url , щоб відкрити сторінку Властивості системи agentdesktop_url . |
| 4 |
У полі Value введіть URL робочого столу Webex Contact Center відповідно до регіону роботи.
|
| 5 |
Натисніть «Оновити », щоб зберегти зміни. |
| 6 |
(За бажанням) Щоб змінити назву таблиці Активності, за потреби відредагуйте властивості x_caci_webexcc.webexccactivitytable .
|
| 7 |
(За бажанням) Додавайте групи користувачів такими способами:
|
| 1 |
З поля навігатора фільтрів перейдіть до .
|
| 2 |
Натисніть кнопку Створити.
|
| 3 |
Введіть такі властивості для URL:
|
| 4 |
Праворуч від поля URL натисніть кнопку Lock і додайте
|
| 5 |
(За бажанням) Виберіть групи користувачів/агентів для призначення конфігурації.
|
| 6 |
Натисніть Submit (Надіслати). URL з'являється як посилання.
|
| 7 |
З поля навігатора фільтрів перейдіть до Service Operations.
|
| 8 |
(За бажанням) У списку групи користувачів перемістіть групи, які мають доступ до робочого столу Webex Contact Center, з «Доступно » до «Вибрані ». |
| 9 |
Перед тим, як спробувати використовувати телефон OpenFrame, переконайтеся, що ви завантажили JSON-файл ServiceNow Custom Desktop Layout на портал керування Webex Contact Center. Для отримання додаткової інформації дивіться у розділі «Налаштувати розташування робочого столу ServiceNow» на Webex Contact Center. |
| 1 |
Завантажте макет робочого столу для ServiceNow з https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.
|
| 2 |
Оновіть властивості у файлі Desktop Layout, якщо потрібно. |
| 3 |
Перейдіть на портал управління Webex Contact Center. |
| 4 |
У навігаційній панелі Порталу керування виберіть .
|
| 5 |
Натисніть «Новий макет » і введіть деталі розташування робочого столу. |
| 6 |
Завантажте JSON-файл ServiceNow Desktop Layout. |
| 7 |
Натисніть «Зберегти », щоб зберегти конфігурацію. Тепер ви можете запускати робочий стіл Webex Contact Center у консолі ServiceNow. |
| 8 |
З поля навігатора фільтрів перейдіть до Service Operations.
|
| 1 |
З поля навігатора фільтра перейдіть до Інциденти > Відкриті інциденти. |
| 2 |
Клацніть правою кнопкою миші по полю абонента і виберіть «Налаштувати словник».
|
| 3 |
Додати з комою Атрибути
Тепер ви можете почати користуватися робочим столом Webex Contact Center у консолі ServiceNow. |
| 4 |
З поля навігатора фільтрів перейдіть до Service Operations.
|
- Ми підтримуємо вхід у Agent Desktop за допомогою WebRTC лише для конекторів Salesforce (SFDC) та Microsoft Dynamics (MS Dynamics).
- Наразі ця функція застосовна лише для агентів.
Agent Desktop у консолі ServiceNow
Перед тим, як здійснювати вихідні дзвінки, переконайтеся, що ви зробили наступне:
-
Створіть точку входу на вихідний номер і налаштуйте стратегію входу на вихідний набір.
-
Увімкніть outdial ANI для профілю агента.
-
Встановіть вихідний ANI на відтворення номера набору до точки входу.
Для отримання додаткової інформації дивіться розділ Provisioning у Посібнику з налаштування та адміністрування Cisco Webex Contact Center.
З поля навігатора фільтрів перейдіть до Service Operations.
Для інформації про використання Desktop дивіться Agent Tab у довідці Webex Contact Center.
Огляд
У цій статті розглядається кілька способів налаштувати бізнес-правила для конектора CRM ServiceNow. У ньому детально описано, як можна налаштувати кейси використання відповідно до бізнес-правил, специфічних для ServiceNow.
Клієнт повинен самостійно керувати цими сценаріями використання на ServiceNow. Конфігурація специфічна для ServiceNow, а не для Webex Contact Center програмного забезпечення чи експертизи.
Це довідкова документація для допомоги у зміні бізнес-правил. Розробники ServiceNow створюватимуть і керуватимуть бізнес-правилами, а також надаватимуть підтримку.
Cisco надає лише зразки документації.
Наступні розділи містять інформацію про те, як налаштувати, активувати та керувати віджетом дій для розробників і корпоративних інстансів.
Зафіксуйте віджет оновлень для дій
Для ліцензованих корпоративних інстансів встановіть останній додаток Webex Contact Center з магазину ServiceNow.
Щоб налаштувати віджет Actions для екземплярів розробника, завантажте останній файл System Update Set XML, доступний у репозиторії github у цьому адресі: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. Ім'я файлу — webexcc-servicenow-update-setv7-1-ActionsWidget.XML. Щоб зафіксувати набір оновлень для віджета Actions, дивіться кроки 2–9 у розділі Commit the Update Set.
Віджет увімкнути дії
Використовуйте властивість isWidgetDisplayEnabled , щоб увімкнути віджет Actions. Ви не повинні змінювати значення цієї властивості у безголовному розділі кастомної верстки робочого столу. Ця властивість завжди встановлена як false у розділі безголовного розділу кастомної комп'ютерної верстки. Вам слід оновлювати значення властивості лише в розділі панелі кастомної комп'ютерної верстки.
Після того, як ви активуєте віджет Actions у власному макеті робочого столу, ви можете виконати такі дії:
- Керування записами активності — натисніть Переглянути/Редагувати запис активності, щоб переглянути список записів активності, пов'язаних із абонентом.
- Асоціюйте об'єкти CRM — натисніть «Асоціювати з записами активності», щоб додати об'єкти CRM, такі як тип виклику (вхідний або вихідний), об'єкт виклику, нотатки дзвінків тощо до запису активності.
- Керуйте інцидентами — натисніть Create Incident. Створюється новий інцидент із попередньо заповненими даними абонента. Ви можете внести необхідні оновлення щодо інциденту. Ви можете змінити тип запису від інциденту до справи, HR-модуля тощо відповідно до ваших вимог. Щоб змінити тип запису, змініть значення властивості typeOfRecord у конфігурації віджета Actions. Наприклад:
{ "comp": "md-tab-panel", "атрибути": { "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
Сценарій містить зміни-
Перейдіть у фільтр-навігатор і знайдіть
Сценарій включає
.Виберіть Script Includes у системному інтерфейсі.
-
Відфільтруйте ім'я та знайдіть
propUtils
. -
Зміни метод
UserGetSysId
у сценарії.Curent:
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= 'телефон'; 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='телефон'; inc.short_description='Дзвінок, отриманий з '+ this.getParameter('value'); sysidlist.incsysid=inc.Insert(); } } var grInt = новий GlideRecordSecure ('взаємодія'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'телефон'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); sysidlist.sysid=sysid; повернути JSON.stringify (sysidlist); },
-
Перейдіть у навигатор фільтрів і знайдіть сторінку
інтерфейсу.Виберіть сторінки інтерфейсу в системному інтерфейсі.
-
Відфільтруйте ім'я та знайдіть
AgentDesktop
. -
Змініть
screenpop
функції у скрипті клієнта.Поточна функція:
screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = новий GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('поле', 'телефон'); gaout.addParam('значення', 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('поле', 'телефон'); gaout.addParam('value', callerani); gaout.getXMLWait(); // Для зміни, пов'язаних з інцидентом, 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 designer і додати CAD-змінні у журнал активності ServiceNow POST, а також зберігати їх у таблиці активності POST викликів.
Це лише довідкова документація — і показує, як це зробити для зразка CAD-змінної під назвою Customer Name, яка зберігає ім'я клієнта всередині IVR і публікує це в ServiceNow.
Очікується, що розробники Partner+customer ServiceNow налаштуватимуть і керуватимуть цією конфігурацією, оскільки це налаштування існуючого роз'єму.
Cisco надає лише техніки налаштування та розширення конектора.
Станом на цю статтю команда Cisco підтвердила підтримку додавання змінної CAD до журналу активності та таблиці активності за допомогою техніки, описаної нижче:
Додати колонку до діяльності WebexCC IMP
-
Відредагуйте таблицю у розробницькій версії ServiceNow.

-
Перейдіть у навигатор фільтрів і знайдіть Studio.

Виберіть
Webex Contact Center

або



-
Виберіть
Діяльність WebexCC IMP
стіл
-
Додайте новий стовпець, наприклад,
Ім'я клієнта


Додати стовпець до журналу телефону
-
Відредагуйте таблицю журналів телефону.


-
Додайте новий стовпець, наприклад,
Ім'я клієнта
.

Карта трансформації активності WebexCC

Додайте новий стовпець, наприклад, Ім'я клієнта
Картографування поля.


Персоналізувати колонки списку

Як рекомендує Service Now, змініть дію вибору з створити на ігнорування.


Налаштуйте список журналів телефону

Перейти до Script Include
Додайте лише один рядок webexcc.u_customername=actInfo.CustomerName
до propUtils.



Дивіться рядок: 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; інакше // повернути null; var grInt = новий GlideRecord ('взаємодія'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'телефон'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); повернути 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 = новий 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; }, type: 'propUtils' });
Створіть CAD-змінну в Flow designer

Додайте змінну CAD до Desktop Layout
Приклад
"CadName1:SnowField1,CadName2:SnowField2" CadName1 — це ім'я клієнта. SnowField1 також використовується як CustomerName, що є частиною зразка scirpt, наведеного вище "actInfo.CustomerName".

Демо-скріншоти
Перегляньте нову змінну CAD у таблиці активності WebexCC.



Створити змінну CAD для Flow Designer
Терміновість інциденту
Вплив інциденту

Оновлення сценарію Service Now
Оновлення сценарію включають
-
Перейдіть до навігатора фільтрів і знайдіть script
includesВиберіть опцію «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= 'телефон'; 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='Дзвінок, отриманий з '+ this.getParameter('value'); sysidlist.incsysid=inc.Insert(); } } var grInt = новий GlideRecordSecure ('взаємодія'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'телефон'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },
-
Перейдіть до навігатора фільтрів і знайдіть
сторінкиінтерфейсу.Виберіть опцію UI Pages у системному інтерфейсі.

-
Відфільтруйте сторінки інтерфейсу за ім'ям і шукайте agentdesktop
.
-
Змініть
screenpop
функції у полі скрипту.
Поточна функція:
функція pop-екрану screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('поле', 'телефон'); gaout.addParam('значення', 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 != невизначено) { IncUrgency=callSessionInfo.callAssociatedData.Urgency.value; } if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam(«поле», «телефон»); gaout.addParam(«цінність», callerani); gaout.addParam («Інтермінованість», IncUrgency); gaout.addParam («Вплив», Вплив); 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 Activity TransformMap




Натисніть Update (Оновити).

Зміни у сценарії включають
-
Перейдіть у Filter Navigator і знайдіть "script includes".
Виберіть Script Includes у системному інтерфейсі.

-
Відфільтруйте ім'я за допомогою
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()) { //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']; видалити 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='Оновлення стану до закритого.'; 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 = новий 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=інтенум; sys_id=webexcc.Insert(); } повернути sys_id; },
Зміни методів на сторінках інтерфейсу
-
Перейдіть у фільтр-навігатор і знайдіть
Сторінки інтерфейсу
Виберіть опцію UI Pages у системному інтерфейсі.

-
Відфільтруйте сторінки інтерфейсу за ім'ям і шукайте
agentdesktop.
-
Змініть
nowАктивності та 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('поле', 'телефон'); gaout.addParam('значення', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', запит: '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", ім'я); } 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; } відповідь = url; 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) для інциденту позначається як Істинна.

Оновіть URL screenpop за допомогою власного CTI Rule " cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="

sysparm_cti_rule=name , де 'name' — це ім'я функції , слід викликати для обробкиCTI замість використання стандартного скрипту.
Визначте функцію в sys_script записі, позначеному як client callable .
Якщо потрібно Insert, оновити або видалити будь-які GlideRecords у цій функції, викликайте окрему функцію, не викликану клієнтом, для виконання оновлень.
Щоб зробити скрипт доступним для виклику клієнта, потрібно поставити галочку на формі, яка відображається при відображенні запису sys_script.
Галочка, яку можна викликати клієнт, за замовчуванням не відображається. Для перегляду потрібно змінити поля, що відображаються на формі, за допомогою іконки шестерні та механізму відра зі сльозом.
Налаштування #2 - Додати змінну CAD у таблиці активності Webex Contact Center
ОглядУ цій статті детально описано процес додавання додаткового стовпця до таблиці ServiceNow — webexcc_activity, який створюється після встановлення Webex CC для ServiceNow CRM Connector.
За замовчуванням таблиця містить автоматичні системні поля та значення.
Ви потенційно можете створити більш бізнес-специфічні змінні (CAD-змінні) у WebexCC Flow designer і додати ці CAD-змінні у журнал активності ServiceNow POST викликів, зберігаючи їх у даних таблиці активності викликівPOST.
-
Це лише довідкова документація — і показує, як це зробити для зразка CAD-змінної під назвою Customer Name, яка зберігає ім'я клієнта всередині IVR і публікує це в ServiceNow.
-
Розробники Partner+customer ServiceNow налаштовують і керуватимуть цією конфігурацією, оскільки це кастомізація існуючого конектутора.
-
Cisco надасть лише техніки налаштування та розширення роз'єму.
-
Станом на цю статтю команда Cisco підтвердила підтримку додавання змінної CAD до журналу активності та таблиці активності за допомогою техніки, описаної нижче.
Відредагуйте таблицю у розробницькій версії ServiceNow.

Перейдіть до .



Виберіть таблицю активності WebexCC.

Наприклад, ім'я клієнта.


Виберіть макет списку для активності WebexCC.

Цей крок не є обов'язковим, якщо ви використовуєте Update Set XML - Потрібно додати лише один рядок "webexcc.u_customername=actInfo.CustomerName" до propUtils.



Зразок сценарію
Дивіться рядок з: 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; // Цей рядок додано — щоб зафіксувати його у журналі активності webexcc. u_customername=actInfo.CustomerName; sys_id=webexcc.Insert(); Діяльність у реєстрі інцидентів; var actInfoString =this.getParameter('actInfo'); var suser = новий 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; }, type: 'propUtils2' });
Відредагуйте сторінку інтерфейсу з новою назвою скрипту
Створіть CAD-змінну в Flow designer
Додайте змінну CAD до Desktop Layout
Демо-скріншоти
Перегляньте нову змінну CAD у таблиці активності WebexCC.












































