Інтеграція контактного центру Webex з ServiceNow (версія 1 — застаріла версія)
передумови
Мінімальний підтримуваний розмір інтерфейсу софтфона становить 500px. Будь-яке значення нижче 500 пікселів може призвести до проблем із відображенням або функціональністю.
Перш ніж інтегрувати Контактний центр Webex з консоллю ServiceNow CRM, переконайтеся, що у вас є наступне:
-
Доступ до контактного центру Webex.
-
Доступ адміністратора до центру управління за адресою https://admin.webex.com та контактного центру Management Portal Webex. URL-адреси Management Portal залежать від вашого регіону.
-
Агент з доступом до робочого столу. URL-адреса робочого столу залежить від вашого регіону.
-
Доступ агента до наступного домену, доданого до списку дозволених політик безпеки вмісту:
-
*.сервіс-ноу.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, які підтримує Контактний центр Webex, - це Ванкувер, Юта, Токья, Вашингтон та Xanadu. Для отримання додаткової інформації див. Інте грація контактного центру Webex з ServiceNow.
Дотримуйтесь одного з двох методів нижче:
- Для екземплярів розробників рекомендуємо виконати дії, наведені в посібнику з екземплярів розробника.
- Якщо ви володієте екземпляром з корпоративною ліцензією, дотримуйтесь вказівок щодо інстанцій з корпоративною ліцензією.
Ми не рекомендуємо змішувати програму з корпоративною ліцензією з екземплярами пісочниці розробників.
Цифрові канали, такі як чат та електронна пошта, не підтримуються за допомогою роз'ємів CRM. Це стосується всіх CRM-інтеграцій, що використовують ці роз'єми. Будь ласка, сплануйте робочі процеси розгортання та залучення клієнтів відповідно.
У наступних розділах описано кроки для встановлення роз'єму ServiceNow для екземплярів розробників.
| 1 |
Увійдіть у свій обліковий запис порталу розробників ServiceNow та відкрийте консоль адміністр ування. |
| 2 |
У розділі «М ій екземп ляр» меню «Облі ковий запис» натисніть «Почати створення».
|
| 3 |
У вашому екземплярі розробника в по лі навігатора філь трів у верхньому лівому куті вікна перейдіть до пункту Пла гіни.
|
| 4 |
Шукайте плагін Openframe, який має назву Open frame. Можливо, вам доведеться прокрутити список.
|
| 5 |
Натисніть кнопку Встанов ити, щоб встановити плагін Openframe. |
| 6 |
У діалоговому вікні Активувати плагін натисніть кнопку Активувати.
|
| 7 |
Після завершення активації плагіна натисніть кнопку Закрити та перезавантажити форму в діалоговому вікні А ктивація плагі на.
|
| 8 |
Щоб перевірити активацію плагіна, у по лі навігатора філь тра у верхньому лівому куті вікна перейдіть до OpenFrame. |
| 9 |
Натисніть кнопку Конфігурації та переконайтеся, що плагін OpenFrame відображається у списку Кон фігурації OpenFrame.
|
| 1 |
Назва файлу: Web Excc-ServiceNow-Update-Setv (X) .xml
|
| 2 |
У вашому екземплярі ServiceNow у полі навігатора філь трів у верхньому лівому куті вікна перейдіть до Набори оновлень дження.
|
| 3 |
Натисніть посилання Імпортувати набір оновлень із XML.
|
| 4 |
Натисніть Вибрати файл, виберіть файл XML набору оновлень системи, а потім натисніть кнопку Завантажити.
Набір оновлень з'являється у списку Отримані набори онов лень і знаходиться у стані Завантажен о.
|
| 5 |
У списку Отримані набори онов лень клацніть ім'я файлу набору оновлень (посилання), щоб відкрити набір оновлень.
|
| 6 |
У верхньому правому куті вікна натисніть «Попередній перегляд набору оновлень», щоб перевірити наявність проблем у наборі оновлень.
|
| 7 |
Натисніть «Зак рити» у діалоговому вікні «Перегляд набору оновлень» після завершення попереднього перегляду.
|
| 8 |
Натисніть кнопку «Зробити набір оновлень».
|
| 9 |
Натисніть «Зак рити» у діалогов ому вікні «Коміт набору оновлень» після завершення виконання Набору онов лень.
|
| 1 |
У полі навігатора філь трів у верхньому лівому куті вікна введіть
|
| 2 |
На сторінці Вла стивості системи відсортуйте властивості за датою оновлення. Переконайтеся, що ви можете бачити такі властивості контактного центру Webex:
|
| 3 |
Клацніть agentdesktop_url, щоб відкрити agentdesktop_url сторінку Властивості системи. |
| 4 |
У по лі Зна чення введіть URL-адресу робочого столу контактного центру Webex відповідно до регіону роботи.
|
| 5 |
Натисніть Онов ити, щоб зберегти зміни. |
| 6 |
(Необов'язково) Щоб змінити назву таблиці активності, відредагуйте властивості webexccactivit ytable, як потрібно. На сторінці Власти вості системи натисніть на webex ccactivitytable. Змініть поле Зна чення, як потрібно.
|
| 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 |
У розділі «М ій екземп ляр» меню «Облі ковий запис» натисніть «Почати створення».
|
| 3 |
У вашому екземплярі розробника в по лі навігатора філь трів у верхньому лівому куті вікна перейдіть до пункту Пла гіни.
|
| 4 |
Шукайте плагін Openframe, який має назву Open frame. Можливо, вам доведеться прокрутити список.
|
| 5 |
Натисніть кнопку Встанов ити, щоб встановити плагін Openframe. |
| 6 |
У діалоговому вікні Активувати плагін натисніть кнопку Активувати.
|
| 7 |
Після завершення активації плагіна натисніть кнопку Закрити та перезавантажити форму в діалоговому вікні А ктивація плагі на.
|
| 8 |
Щоб перевірити активацію плагіна, у по лі навігатора філь тра у верхньому лівому куті вікна перейдіть до OpenFrame. |
| 9 |
Натисніть кнопку Конфігурації та переконайтеся, що плагін OpenFrame відображається у списку Кон фігурації OpenFrame.
|
Екземпляри, які мають корпоративні ліцензії, можуть інсталювати програму контактного центру Webex безпосередньо з магазину ServiceNow.
|
|
| 1 |
У полі навігатора філь трів у верхньому лівому куті вікна введіть
|
| 2 |
На сторінці Вла стивості системи відсортуйте властивості за датою оновлення. Переконайтеся, що ви можете бачити такі властивості контактного центру Webex:
|
| 3 |
Клацніть agentdesktop_url, щоб відкрити agentdesktop_url сторінку Властивості системи. |
| 4 |
У по лі Зна чення введіть URL-адресу робочого столу контактного центру Webex відповідно до регіону роботи.
|
| 5 |
Натисніть Онов ити, щоб зберегти зміни. |
| 6 |
(Необов'язково) Щоб змінити назву таблиці активності, відредагуйте властивості x_caci_webexcc.webexccactiv itytable, як потрібно.
|
| 7 |
(Необов'язково) Додайте групи користувачів наступними способами:
|
| 1 |
У полі навігатора філь трів перейдіть до .
|
| 2 |
Натисніть кнопку Ство рити.
|
| 3 |
Введіть такі властивості для URL-адреси:
|
| 4 |
Праворуч від поля URL натисніть кнопку Бло кувати та додайте
|
| 5 |
(Необов'язково) Виберіть групу користувачів або агентів, щоб призначити конфігурацію.
|
| 6 |
Натисніть На діслати. URL-адреса відображається як посилання.
|
| 7 |
У полі навігатора філь трів перейдіть до .
|
| 8 |
(Необов'язково) У списку Гру па користувачів перемістіть групи користувачів, які можуть отримати доступ до робочого столу контактного центру Webex, з До ступно на Ви бр ане. |
| 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 у консолі 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.
Це довідкова документація для сприяння зміні правил ведення бізнесу. Розробники ServiceNow створять і керуватимуть бізнес-правилами, а також нададуть підтримку.
Cisco надає лише зразкову документацію.
У наступних розділах наведено докладну інформацію про те, як налаштувати, увімкнути та керувати віджетом «Дії» для екземплярів розробників та підприємств.
Здійснити набір оновлень для віджета дій
Для ліцензованих корпоративних екземплярів встановіть найновішу програму контактного центру Webex із магазину ServiceNow.
Щоб налаштувати віджет «Дії» для екземплярів розробника, завантажте найновіший XML-файл Набору оновлення системи, доступний у репозиторії github за цим місцем: 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, такі як тип виклику (вхідний або вихідний), об'єкт виклику, примітки виклику тощо, до запису активності.
- Керування інцидентами — натисніть «Створити інцидент». Створюється новий інцидент із попередньо заповненими реквізитами абонента. Ви можете внести необхідні оновлення інциденту. Ви можете змінити тип запису від інциденту до випадку, модуля HR тощо, виходячи з ваших вимог. Щоб змінити тип запису, змініть значення властивості 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
. -
Змініть функцію ск
ріншопу
в клієнтському скрипті.Поточна функція:
// 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, і з цим контактом вже відкрито новий інцидент, програма відкриває інцидент inprogress
Якщо інформації про абонента не існує в CRM, програма відкриває новий інцидент
Якщо інформація абонента існує в CRM, програма відкриває новий інцидент із попередньо заповненими реквізитами
Огляд
Цей випадок використання детально описує процес додавання додаткового стовпця до таблиці ServiceNow - webexcc_imp_activity і створення після sn_openframe_phone_log встановлення Webex CC для ServiceNow CRM Connector.
За замовчуванням таблиця містить певні нестандартні системні поля і значення.
Ви можете створити більш специфічні для бізнесу змінні (змінні САПР) всередині конструктора потоку WebExCC та додати змінні CAD всередині журналу активності після дзвінків ServiceNow, а також зберегти це до даних таблиці активності після виклику.
Це лише довідкова документація - і показує, як це зробити для зразка змінної CAD під назвою Ім'я клієнта, яка зберігає ім'я клієнта всередині IVR та розміщує це в ServiceNow.
Очікується, що розробники партнер+Customer ServiceNow налаштують і керуватимуть цією конфігурацією, оскільки це налаштування існуючого роз'єму.
Cisco надає лише методи налаштування та розширення роз'єму.
Станом на цю статтю команда Cisco підтвердила підтримку додавання змінної CAD до журналу активності та таблиці активності за допомогою описаної нижче методики:
Додати стовпець до активності WebExCC IMP
-
Відредагуйте таблицю у версії розробника ServiceNow.

-
Переходимо в навігатор фільтрів і шукаємо студію.

Виберіть Кон
тактний центр Webex

або



-
Виберіть таблицю
активності WebExCC IMP

-
Додати новий стовпець, наприклад,
CustomerName


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


-
Додайте новий стовпець, наприклад,
CustomerName
.

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

Додайте новий стовпець, наприклад, відображення поля CustomerName
.


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

Як рекомендує Служба зараз, змініть дію «Вибір» зі створення на «ігнорувати».


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

Перейти до скрипта Включити
Додайте лише один рядок webexcc. u_customername=ActInfo.Назва клієнта до PropUtils
.



Дивіться рядок: webexcc. u_customername=ActInfo.Назва замовника; з допоміжним коментарем.
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 в конструкторі Flow

Додавання змінної 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 для Flow Designer
терміновість інциденту
Вплив інциденту

Оновлення сценарію Service Now
Оновлення сценарію включає
-
Перейдіть в навігатор фільтрів і шукайте
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.

-
Змініть метод
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']; 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 і скріншоп
у скрипті.
Поточна функція:
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) для інциден ту позначено як True.

Оновіть URL-адресу екрана за допомогою спеціального правила CTI "cti.do? sysparm_cti_rule=Створити випадку& = "sysparm_caller_phone

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

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



Виберіть Т аблиця активності WebExCC.

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


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

Цей крок не обов'язковий, якщо ви використовуєте набір оновлень XML - для додавання потрібно лише один рядок "webexcc. u_customername=ActInfo.Назва замовника "до прототилів.



Приклад сценарію
Дивіться рядок з: webexcc. u_customername=ActInfo.Назва замовника; з допоміжним коментарем.
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.
- Останнє оновлення ServiceNow— ServiceNow_Desktop_0 .1.0_v5.0.3.json. Станом на березень 2024 року версія пакета становить 1.0.9
- Останнє оновлення XML — WebExcc-ServiceNow-Update-SetV7-1-ActionsWidget.xml, червень 2024 року











































