Интеграция Webex Contact Center с ServiceNow (версия 1 – устаревший)
Предварительные условия
В настоящее время эта функция применима только к операторам.
Перед интеграцией Webex Contact Center с консолью ServiceNow CRM убедитесь в том, что у вас есть следующие следующую возможность.
-
Доступ к Webex Contact Center.
-
Доступ администратора к Control Hub на веб-сайте https://admin.webex.com и порталу управления Webex Contact Center. URL-адреса портала управления специфилены для вашего региона.
-
Северная Америка: https://portal.wxcc-us1.cisco.com
-
Великобритания: https://portal.wxcc-eu1.cisco.com
-
Сингапур: https://portal-v2.wxcc-sg1.cisco.com
-
-
Агент с доступом к рабочему столу. URL рабочего стола характерна для вашего региона.
-
Северная Америка: https://desktop.wxcc-us1.cisco.com
-
Великобритания: https://desktop.wxcc-eu1.cisco.com
-
Сингапур: https://desktop.wxcc-sg1.cisco.com
-
-
Доступ агента к следующему домену, добавленму в список разрешенных политик безопасности контента:
-
*.service-now.com
Для получения дополнительной информации о том, как определить список разрешенных, см. статью Параметры безопасности для Webex Contact Center.
-
-
Учетная запись портала разработчика ServiceNow. Чтобы создать учетную запись, перейдите на портал ServiceNow developer по https://developer.servicenow.com/dev.do ссылке и щелкните Зарегистрироваться и начать создание.
-
Доступ к следующим файлам на: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow
-
Набор обновлений ServiceNow (XML)
-
Компоновка рабочего стола ServiceNow Contact Center (JSON)
-
- Поддерживаемые Webex Contact Center выпуски ServiceNow: Ванкувер, Юта, Токья, Вашингтон и Ханаду. Дополнительную информацию см. в статье Интеграция Webex Contact Center со ServiceNow.
Выполните один из двух приведенных ниже способов.
Для экземпляров разработчиков рекомендуется следовать инструкциям в руководстве по экземпляру разработчика.
Если у вас есть экземпляр с корпоративной лицензией, следуйте рекомендациям для экземпляров с корпоративной лицензией.
Не рекомендуется смешивать корпоративную лицензию с экземплярами песочницы разработчика.
В следующих разделах описаны шаги по установке соединителя ServiceNow для экземпляров разработчиков.
1 |
Войдите в учетную запись портала разработчиков ServiceNow и откройте консоль Администрирование . |
2 |
В области "Мой экземпляр " меню Учетная запись щелкните Начать создание. |
3 |
В экземпляре разработчика в поле Filter navigator (Навигатор фильтров) в левом верхнем углу окна перейдите к разделу Plugins (Подключаемые модули). |
4 |
Наыщите подключаемый модуль Openframe с заголовком Openframe. Возможно, потребуется прокрутить список. |
5 |
Нажмите "Установить ", чтобы установить подключаемый модуль Openframe. |
6 |
В области Активировать подключаемый диалоговое окно щелкните Активировать . |
7 |
По завершении активации подключаемого модуля щелкните Закрыть и перезагрузить форму в диалоговом окне Активация подключаемого модуля . |
8 |
Чтобы проверить активацию подключаемого устройства, в поле навигатора фильтров в верхнем левом месте окна перейдите в openFrame. |
9 |
Щелкните Конфигурации и убедитесь, что подключаемый модуль OpenFrame отображается в списке Конфигурации OpenFrame . |
1 |
Скачайте XML-файл последнего пакета обновлений системы, доступный в repo github по ссылке: 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 |
По завершении предпросмотра щелкните Закрыть в диалоговом окне "Обновить настройки предпросмотра". |
8 |
Щелкните Commit Update Set (Установить набор обновлений). |
9 |
После завершения установки обновления щелкните Закрыть в диалоговом окне Update Set Commit . |
1 |
В поле Навигатор по фильтрам в левом верхнем углу окна введите |
2 |
На странице Свойства системы отсортировать свойства по обновленной дате. Убедитесь, что вы видите следующие свойства Webex Contact Center : |
3 |
Щелкните agentdesktop_url , чтобы открыть страницу Свойства agentdesktop_url системы. |
4 |
В поле Значение введите URL-адрес рабочего стола Webex Contact Center в соответствии с регионом деятельности.
|
5 |
Чтобы сохранить изменения , щелкните Обновить. |
6 |
(Необязательно) Чтобы изменить название таблицы активности, при необходимости измените свойства webexccactivitytable . На странице Свойства системы щелкните webexccactivitytable. При необходимости измените поле Значение . |
7 |
(Необязательно) Добавьте группы пользователей указанными ниже способами.
|
1 |
В поле навигатора фильтров перейдите к openFrame |
2 |
Нажмите Создать. |
3 |
Введите следующие свойства URL-адреса:
|
4 |
Справа от поля URL щелкните кнопку Заблокировать и добавьте |
5 |
(Необязательно) Выберите группы пользователей или операторов, которым необходимо назначить конфигурацию. |
6 |
Нажмите кнопку Отправить. URL отображается в качестве ссылки. |
7 |
Перед попыткой использования телефона OpenFrame убедитесь, что вы загрузили файл JSON пользовательского макета рабочего стола ServiceNow на портал управления Webex Contact Center. Дополнительную информацию см. в статье Настройка компоновки рабочего стола ServiceNow в Webex Contact Center. |
1 |
Скачайте компоновку рабочего стола для ServiceNow из https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
При необходимости обновите свойства в файле макета рабочего стола. |
3 |
Перейдите на портал управления Webex Contact Center . |
4 |
На панели навигации портала управления выберите |
5 |
Щелкните Новая компоновка и введите сведения о компоновке рабочего стола. |
6 |
Загрузите файл ServiceNow Desktop Layout JSON. |
7 |
Щелкните "Готово", чтобы сохранить конфигурацию. Теперь можно запустить рабочий стол Webex Contact Center с консоли ServiceNow. |
8 |
В поле Навигатор фильтра перейдите в раздел . |
В следующих разделах описаны шаги по установке соединителя ServiceNow для лицензированных корпоративных экземпляров.
1 |
Войдите в учетную запись портала разработчиков ServiceNow и откройте консоль Администрирование . |
2 |
В области "Мой экземпляр " меню Учетная запись щелкните Начать создание. |
3 |
В экземпляре разработчика в поле Filter navigator (Навигатор фильтров) в левом верхнем углу окна перейдите к разделу Plugins (Подключаемые модули). |
4 |
Наыщите подключаемый модуль Openframe с заголовком Openframe. Возможно, потребуется прокрутить список. |
5 |
Нажмите "Установить ", чтобы установить подключаемый модуль Openframe. |
6 |
В области Активировать подключаемый диалоговое окно щелкните Активировать . |
7 |
По завершении активации подключаемого модуля щелкните Закрыть и перезагрузить форму в диалоговом окне Активация подключаемого модуля . |
8 |
Чтобы проверить активацию подключаемого устройства, в поле навигатора фильтров в верхнем левом месте окна перейдите в openFrame. |
9 |
Щелкните Конфигурации и убедитесь, что подключаемый модуль OpenFrame отображается в списке Конфигурации OpenFrame . |
Экземпляры с корпоративными лицензиями могут установить приложение Webex Contact Center непосредственно из магазина ServiceNow.
Скачайте и установите пакет Webex Contact Center из магазина ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
В поле навигатора фильтров в верхнем левом месте окна введите |
2 |
На странице Свойства системы отсортировать свойства по обновленной дате. Убедитесь, что вы видите следующие свойства Webex Contact Center : |
3 |
Щелкните agentdesktop_url , чтобы открыть страницу Свойства agentdesktop_url системы. |
4 |
В поле Значение введите URL-адрес рабочего стола Webex Contact Center в соответствии с регионом деятельности.
|
5 |
Чтобы сохранить изменения , щелкните Обновить. |
6 |
(Необязательно) Чтобы изменить название таблицы активности, при необходимости отредактируйте свойства x_caci_webexcc.webexccactivitytable .
|
7 |
(Необязательно) Добавьте группы пользователей указанными ниже способами.
|
1 |
В поле навигатора фильтров перейдите к openFrame |
2 |
Нажмите Создать. |
3 |
Введите следующие свойства URL-адреса:
|
4 |
Справа от поля URL щелкните кнопку Заблокировать и добавьте |
5 |
(Необязательно) Выберите группы пользователей или операторов, которым необходимо назначить конфигурацию. |
6 |
Нажмите кнопку Отправить. URL отображается в качестве ссылки. |
7 |
В поле Навигатор фильтра перейдите в раздел . |
8 |
(Необязательно) В списке Группа пользователей переместите группы пользователей, которые могут получить доступ к рабочему столу Webex Contact Center, из раздела Доступные в раздел Выбранные. |
9 |
Перед попыткой использования телефона OpenFrame убедитесь, что вы загрузили файл JSON пользовательского макета рабочего стола ServiceNow на портал управления Webex Contact Center. Дополнительную информацию см. в статье Настройка компоновки рабочего стола ServiceNow в Webex Contact Center. |
1 |
Скачайте компоновку рабочего стола для ServiceNow из https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
При необходимости обновите свойства в файле макета рабочего стола. |
3 |
Перейдите на портал управления Webex Contact Center . |
4 |
На панели навигации портала управления выберите |
5 |
Щелкните Новая компоновка и введите сведения о компоновке рабочего стола. |
6 |
Загрузите файл ServiceNow Desktop Layout JSON. |
7 |
Щелкните "Готово", чтобы сохранить конфигурацию. Теперь можно запустить рабочий стол Webex Contact Center с консоли ServiceNow. |
8 |
В поле Навигатор фильтра перейдите в раздел . |
1 |
В поле Навигатор фильтров перейдите в раздел Инциденты > Открыть инцидент. |
2 |
Щелкните правой кнопкой мыши поле вызывающего абонента и щелкните Настройка словаря. |
3 |
Добавьте атрибуты, разделенные запятыми, Теперь можно начать использование рабочего стола Webex Contact Center в консоли ServiceNow. |
4 |
В поле Навигатор фильтра перейдите в раздел . |
В настоящее время вход в Agent Desktop с помощью параметра Desktop (WebRTC) не поддерживается.
Agent Desktop в консоли ServiceNow
Перед вызовом вызова необходимо убедиться в том, что сделайте следующее:
-
Создайте точку входа для набора и настройте стратегию точки входа для набора.
-
Включить ANI для профиля агента.
-
Установите ANI для набора номера для сопоставления точки набора номера для входа.
Дополнительную информацию см. в главе ПодготовкаРуководства по настройке и администрированию Cisco Webex Contact Center.
В поле Навигатор фильтра перейдите в раздел .
Информацию об использовании рабочего стола см. на вкладке Оператор справки Webex Contact Center.
Обзор
В этой статье описаны несколько способов настройки бизнес-правил для соединителя ServiceNow CRM. В нем представлена информация о том, как можно настроить сценарии использования на основе бизнес-правил, специфичных для ServiceNow.
Клиент должен самостоятельно управлять этими сценариями использования в ServiceNow. Конфигурация предназначена для ServiceNow, а не для программного обеспечения или экспертных знаний Webex Contact Center.
Это справочная документация, которая помогает в изменении бизнес-правил. Разработчики ServiceNow будут создавать рабочие правила и управлять ими, а также предоставлять поддержку.
Cisco предоставляет только образец документации.
В следующих разделах приводятся сведения о настройке, включении и управлении виджетом действий для экземпляров разработчиков и предприятия.
Выполнение виджета «Набор обновлений для действий»
Для лицензированных корпоративных экземпляров установите последнюю версию приложения Webex Contact Center из магазина ServiceNow.
Чтобы настроить виджет действий для экземпляров разработчиков, скачайте последний XML-файл настройки обновлений системы, доступный на repo 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, как тип вызова (входящий или исходящий), объект вызова, примечания к вызову и т. д.
- Управление инцидентами: щелкните Create Incident (Создать инцидент). Создается новый инцидент с предварительно заполненными сведениями о вызывающем абоненте. В инцидент можно внести необходимые обновления. Можно изменить тип записи с инцидента на случай, модуль управления персоналом и т. д. в зависимости от требований. Чтобы изменить тип записи, измените значение свойства 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: функция () { 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=пользователь.sys_id;//вернуть пользователя.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Корпорацияcontact_type= "phone"; inc.short_description='Вызов Получен От '+ 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); },
-
Перейдите к меню "Навигатор" и найдите
страницу пользовательского интерфейса
.Выберите Страницы интерфейса пользователя в разделе Пользовательский интерфейс системы.
-
Отфильтруйте Имя и выполните поиск по запросу
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: "взаимодействие", запрос: '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(); // Для изменения, связанного с инцидентом 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", запрос: '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 и добавлять переменные CAD в журнал активности после вызова ServiceNow, а также сохранять их в данных таблицы активности после вызова.
Это только справочная документация - и показывает, как это сделать для примера переменной CAD под названием "Имя клиента", в которой имя клиента хранится в IVR и публикуется в ServiceNow.
Ожидается, что разработчики partner+customer ServiceNow настраивают эту конфигурацию и управляют ею, поскольку это настройка существующего соединителя.
Cisco предоставляет только методики настройки и расширения соединителя.
В этой статье команда Cisco подтвердила поддержку добавления CAD-переменной в журнал активности и таблицу активности, используя описанную ниже методику.
Добавить столбец в активность службы обмена мгновенными сообщениями и состояния доступности WebexCC
-
Отредактируйте таблицу в версии ServiceNow для разработчиков.
-
Перейдите в навигатор фильтров и выполните поиск студии.
Выберите
Webex Contact Center
или
-
Выберите таблицу
Активность WebexCC IMP
-
Добавьте новый столбец, например
Имя клиента
Добавить столбец в журнал телефона
-
Измените таблицу журналов телефона.
-
Добавьте новый столбец, например
Имя клиента
.
Карта преобразований активности WebexCC
Добавьте новый столбец, например для сопоставления поля CustomerName
.
Персонализировать столбцы списка
В соответствии с рекомендациями Service Now измените действие выбора, которое необходимо создать, и проигнорируйте.
Настройка списка журналов телефона
Перейти к включению сценария
Добавьте только одну линию 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'); возвратите 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.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; }, setWebexcctable: функция () { 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.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallDurationInSeconds; webexcc.ringingtime =actInfo.ActivityDate; webexcc.callobject =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; // Эта линия добавлена, чтобы сохранить ее в журнале активности webexcc.u_customername=actInfo.Имя клиента; 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", тсс.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; }, тип: 'propUtils' });
Создание CAD-переменной в конструкторе потоков
Добавление переменной CAD в макет рабочего стола
Пример
"CadName1:SnowField1,CadName2:SnowField2" CadName1 является CustomerName SnowField1 также используется как CustomerName, который является частью примера scirpt showen выше "actInfo.CustomerName".
Демонстрационные снимки экрана
Просмотрите недавно добавленную переменную CAD в таблице активности WebexCC.
Создать переменную CAD для Flow Designer
Срочность инцидентаВлияние инцидента
Обновление сценария Service Now
Обновления сценария включают
-
Перейдите в навигатор фильтров и поиск
сценария включает
Выберите параметр Сценарий включает в разделе Пользовательский интерфейс системы.
-
Отфильтруйте Имя с помощью
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: функция () { 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=пользователь.sys_id;//вернуть пользователя.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Корпорация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 = 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; },
-
Перейдите в навигатор фильтров и выполните поиск
страниц пользовательского интерфейса
.Выберите параметр Страницы интерфейса пользователя в разделе Пользовательский интерфейс системы.
-
Отфильтруйте страницы интерфейса по имени и выполните поиск по запросу
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: "взаимодействие", запрос: '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 != undefined) { Impact=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", запрос: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: "incident", запрос: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Если информация о вызывающем абоненте существует в CRM и нет новых или текущих инцидентов, приложение откроет новый инцидент
Изменение кода в ServiceNow
Добавить новые столбцы в таблицу Активность WebexCC IMP
Откройте таблицу Активность WebexCC IMPДобавить новый столбец – InteractionsNumber Добавить новый столбец – IncidentNumber
Щелкните Обновить.
Добавить новые столбцы в таблицу Журнал телефона
Откройте таблицу Журнал телефона
Карта преобразований активности WebexCC
Открыть карту преобразования
из навигатора фильтров
Щелкните Карта преобразования активности WebexCC
Нажмите Обновить.
Изменения сценария включают
-
Перейдите к меню "Навигатор" и выполните поиск по фразе "сценарий включает".
Выберите Сценарий включает в разделе Пользовательский интерфейс системы.
-
Отфильтруйте Имя с помощью
propUtils
. -
Измените метод
setWebexcctable
.Новый пример кода инцидента:
setWebexcctable: функция () { 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=""; удалить actInfo['interaction_sys_id"]; удалить actInfo["incident_sys_id']; if( interactionsysid!= null && interactionsysid != undefined){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', interactionsysid ); int.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", тсс.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.DispositionCallDisposition; webexcc.u_incidentnumber=incnum; webexcc.u_interactionsnumber=Intenum; sys_id=webexcc.insert(); } возврат sys_id; },
Изменение метода на страницах интерфейса
-
Перейдите к меню "Навигатор" и выполните поиск
страниц пользовательского интерфейса
Выберите параметр Страницы интерфейса пользователя в разделе Пользовательский интерфейс системы.
-
Отфильтруйте страницы интерфейса по
имени
и выполните поиск по запросу agentdesktop. -
Измените функцию
nowActivities и screen pop
в сценарии.Текущая функция:
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); } функция 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", запрос: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: "incident", запрос: '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 создавайте новую запись инцидентов.
Поиск бизнес-правил в навигаторе фильтров
Щелкните "Создать".
Пример кода для справки:
Функция customcti() { var url = null; var name = sysparm_caller_name; идентификатор = sysparm_caller_id; var phone = sysparm_caller_phone; идентификатор задачи var = 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); } если (userID == null && name != null && name != '') { userID = UserGetSysId("name", name); } если (userID == null && phone != null && phone != '') { userID = UserGetSysId("phone", phone); } если (userID != null) { if (fQuery.length > 0) fQuery += "^"; fQuery += "caller_id=" + userID; } если (url == null) { url = "incident.do?sys_id=-1"; if (fQuery != null) url += "&sysparm_query=" + fQuery; } ответ = url; return url; } функция UserGetSysId(поле, значение) { var user = new GlideRecord("sys_user"); user.addQuery(поле, значение); user.query(); если (user.next()) возвратит пользователя.sys_id; else возвращает null; }
Пример конфигурации бизнес-правила
Включить вызываемый абонент клиента
Обработка интеграции компьютерной телефонии (CTI) для инцидентов отмечена как True.
Обновите URL-адрес всплывающего окна с помощью пользовательского правила CTI " cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="
sysparm_cti_rule=имя , где name — это имя функции , должно быть вызвано для обработки CTI , а не с помощью сценария по умолчанию.
Определите функцию в sys_script записи с возможностью вызова клиента.
Если необходимо вставить, обновить или удалить какие-либо записи GlideRecord(-ы) в эту функцию, для выполнения обновлений вызовите отдельную функцию, вызываемую не клиентом.
Чтобы сделать сценарий вызываемым клиентом, необходимо установить флажок для вызываемого клиента в форме, которая отображается при отображении sys_script записи.
Флажок, вызываемый клиентом, не отображается по умолчанию. Для просмотра необходимо изменить поля, отображаемые в форме, с помощью пиктограммы шестеренки и механизма скольжения.
Настройка # 2. Добавьте переменную CAD в таблицу активности Webex Contact Center.
ОбзорВ этой статье подробно описан процесс добавления дополнительного столбца в таблицу ServiceNow – webexcc_activity который создается при установке Webex CC для соединителя ServiceNow CRM.
По умолчанию в таблице содержатся системные поля и значения вне поля.
Потенциально можно создавать более специфические для бизнеса переменные (переменные CAD) в конструкторе потоков WebexCC и добавлять эти переменные CAD в журнал активности после вызова ServiceNow и сохранять их в данных таблицы активности после вызова .
-
Это только справочная документация - и показывает, как это сделать для примера переменной CAD под названием "Имя клиента", в которой имя клиента хранится в IVR и публикуется в ServiceNow.
-
Разработчики partner+customer ServiceNow настраивают эту конфигурацию и управляют ею, поскольку это настройка существующего соединителя.
-
Cisco предоставит только методики настройки и расширения соединителя.
-
В этой статье команда Cisco проверила поддержку добавления CAD-переменной в журнал активности и таблицу активности с помощью описанной ниже методики.
Отредактируйте таблицу в версии ServiceNow для разработчиков.
Перейдите в раздел
.Выберите таблицу Активность WebexCC .
Например, Имя клиента.
Выберите компоновку списка для активности WebexCC.
Этот шаг не требуется, если используется параметр "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'); возвратите JSON.stringify(webexccprop); }, setWebexcctable: функция () { 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.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallDurationInSeconds; webexcc.ringingtime =actInfo.ActivityDate; webexcc.callobject =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; // Эта линия добавлена, чтобы сохранить ее в журнале активности webexcc.u_customername=actInfo.Имя клиента; 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", тсс.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; }, тип: "propUtils2" }).
Изменение страницы интерфейса с новым именем сценарияСоздание CAD-переменной в конструкторе потоков
Добавление переменной CAD в макет рабочего стола
Демонстрационные снимки экрана
Просмотрите недавно добавленную переменную CAD в таблице активности WebexCC.