Предварительные условия

В настоящее время эта функция применима только к операторам.

Перед интеграцией Webex Contact Center с консолью ServiceNow CRM убедитесь в том, что у вас есть следующие следующую возможность.

Выполните один из двух приведенных ниже способов.

Для экземпляров разработчиков рекомендуется следовать инструкциям в руководстве по экземпляру разработчика.

Если у вас есть экземпляр с корпоративной лицензией, следуйте рекомендациям для экземпляров с корпоративной лицензией.

Не рекомендуется смешивать корпоративную лицензию с экземплярами песочницы разработчика.

В следующих разделах описаны шаги по установке соединителя 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

В поле Навигатор по фильтрам в левом верхнем углу окна введите sys_properties.list и нажмите клавишу ввода.

2

На странице Свойства системы отсортировать свойства по обновленной дате. Убедитесь, что вы видите следующие свойства Webex Contact Center :

3

Щелкните agentdesktop_url , чтобы открыть страницу Свойства agentdesktop_url системы.

4

В поле Значение введите URL-адрес рабочего стола Webex Contact Center в соответствии с регионом деятельности.

5

Чтобы сохранить изменения , щелкните Обновить.

6

(Необязательно) Чтобы изменить название таблицы активности, при необходимости измените свойства webexccactivitytable .

На странице Свойства системы щелкните webexccactivitytable.

При необходимости измените поле Значение .

7

(Необязательно) Добавьте группы пользователей указанными ниже способами.

  1. В поле Навигатор фильтра в левом верхнем углу окна перейдите к разделу Группы в разделе Безопасность системы.

  2. Создайте новую группу пользователей или используйте существующую.

  3. Щелкните Правка.

  4. Найдите sn_openframe_user в разделе Коллекция и переместите ее в свою группу пользователей.

  5. Нажмите Сохранить.

  6. Добавьте пользователя в качестве участника группы.

1

В поле навигатора фильтров перейдите к openFrame > конфигураций.

2

Нажмите Создать.

3

Введите следующие свойства URL-адреса:

  • Имя: Рабочий стол Webex Contact Center

  • Заголовок: Webex Contact Center

  • Ширина: 550 (рекомендуется)

  • Высота: 600 (рекомендуется)

4

Справа от поля URL щелкните кнопку Заблокировать и добавьте agentdesktop.do в качестве 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, интегрированная с ServiceNow с Webex Contact Center Agent Desktop.

В следующих разделах описаны шаги по установке соединителя ServiceNow для лицензированных корпоративных экземпляров.

1

Войдите в учетную запись портала разработчиков ServiceNow и откройте консоль Администрирование .

2

В области "Мой экземпляр " меню Учетная запись щелкните Начать создание.

3

В экземпляре разработчика в поле Filter navigator (Навигатор фильтров) в левом верхнем углу окна перейдите к разделу Plugins (Подключаемые модули).

4

Наыщите подключаемый модуль Openframe с заголовком Openframe. Возможно, потребуется прокрутить список.

5

Нажмите "Установить ", чтобы установить подключаемый модуль Openframe.

6

В области Активировать подключаемый диалоговое окно щелкните Активировать .

7

По завершении активации подключаемого модуля щелкните Закрыть и перезагрузить форму в диалоговом окне Активация подключаемого модуля .

8

Чтобы проверить активацию подключаемого устройства, в поле навигатора фильтров в верхнем левом месте окна перейдите в openFrame.

9

Щелкните Конфигурации и убедитесь, что подключаемый модуль OpenFrame отображается в списке Конфигурации OpenFrame .

1

В поле навигатора фильтров в верхнем левом месте окна введите sys_properties.list.

2

На странице Свойства системы отсортировать свойства по обновленной дате. Убедитесь, что вы видите следующие свойства Webex Contact Center :

3

Щелкните agentdesktop_url , чтобы открыть страницу Свойства agentdesktop_url системы.

4

В поле Значение введите URL-адрес рабочего стола Webex Contact Center в соответствии с регионом деятельности.

5

Чтобы сохранить изменения , щелкните Обновить.

6

(Необязательно) Чтобы изменить название таблицы активности, при необходимости отредактируйте свойства x_caci_webexcc.webexccactivitytable .

  1. На странице Свойства системы щелкните x_caci_webexcc.webexccactivitytable.

  2. При необходимости измените поле Значение .

7

(Необязательно) Добавьте группы пользователей указанными ниже способами.

  1. В поле Навигатор фильтра в левом верхнем углу окна перейдите к разделу Группы в разделе Безопасность системы.

  2. Щелкните Редактировать и добавьте перечисленные ниже роли.

    • sn_openframe_user

    • x_caci_webexcc.оператор

    • agent_workspace_user

    • x_caci_webexcc.webexcc_imp_activity_user

    • x_caci_webexcc.webex_contact_center

1

В поле навигатора фильтров перейдите к openFrame > конфигураций.

2

Нажмите Создать.

3

Введите следующие свойства URL-адреса:

  • Имя: Рабочий стол Webex Contact Center

  • Заголовок: Webex Contact Center

  • Ширина: 550 (рекомендуется)

  • Высота: 600 (рекомендуется)

4

Справа от поля URL щелкните кнопку Заблокировать и добавьте x_caci_webexcc_agentdesktop.do в качестве URL-адреса. (Выполните этот шаг, чтобы указать конфигурацию на страницу пользовательского интерфейса)

5

(Необязательно) Выберите группы пользователей или операторов, которым необходимо назначить конфигурацию.

6

Нажмите кнопку Отправить. URL отображается в качестве ссылки.

7

В поле Навигатор фильтра перейдите в раздел Рабочее пространство операций службы.

Главная страница ServiceNow, интегрированная с ServiceNow с Webex Contact Center Agent Desktop.

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

В поле Навигатор фильтра перейдите в раздел Рабочее пространство операций службы.

Главная страница ServiceNow, интегрированная с ServiceNow с Webex Contact Center Agent Desktop.

1

В поле Навигатор фильтров перейдите в раздел Инциденты > Открыть инцидент.

2

Щелкните правой кнопкой мыши поле вызывающего абонента и щелкните Настройка словаря.

3

Добавьте атрибуты, разделенные запятыми, "ref_contributions=show_phone,.

Теперь можно начать использование рабочего стола Webex Contact Center в консоли ServiceNow.

4

В поле Навигатор фильтра перейдите в раздел Рабочее пространство операций службы.

Главная страница ServiceNow, интегрированная с ServiceNow с Webex Contact Center Agent Desktop.

В настоящее время вход в Agent Desktop с помощью параметра Desktop (WebRTC) не поддерживается.

Agent Desktop в консоли ServiceNow

Перед вызовом вызова необходимо убедиться в том, что сделайте следующее:

  • Создайте точку входа для набора и настройте стратегию точки входа для набора.

  • Включить ANI для профиля агента.

  • Установите ANI для набора номера для сопоставления точки набора номера для входа.

Дополнительную информацию см. в главе ПодготовкаРуководства по настройке и администрированию Cisco Webex Contact Center.

В поле Навигатор фильтра перейдите в раздел Рабочее пространство операций службы.

Главная страница ServiceNow, интегрированная с ServiceNow с Webex Contact Center Agent Desktop.

Информацию об использовании рабочего стола см. на вкладке Оператор справки 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

Сценарий Включает изменения
  1. Перейдите к меню "Навигатор" и выполните поиск сценария.

    Выберите Сценарий включает в разделе Пользовательский интерфейс системы.

  2. Отфильтруйте Имя и выполните поиск по запросу propUtils.

  3. Измените метод 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); },

Изменение способа на страницах пользовательского интерфейса
  1. Перейдите к меню "Навигатор" и найдите страницу пользовательского интерфейса.

    Выберите Страницы интерфейса пользователя в разделе Пользовательский интерфейс системы.

  2. Отфильтруйте Имя и выполните поиск по запросу agentdesktop.

  3. Измените функцию всплывающего окна в разделе Сценарий клиента.

    Текущая функция:

    // 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

  1. Отредактируйте таблицу в версии ServiceNow для разработчиков.

  2. Перейдите в навигатор фильтров и выполните поиск студии.

    Выберите Webex Contact Center

    или

  3. Выберите таблицу Активность WebexCC IMP

  4. Добавьте новый столбец, например Имя клиента

Добавить столбец в журнал телефона

  1. Измените таблицу журналов телефона.

  2. Добавьте новый столбец, например Имя клиента.

Карта преобразований активности 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

Обновления сценария включают

  1. Перейдите в навигатор фильтров и поиск сценария включает

    Выберите параметр Сценарий включает в разделе Пользовательский интерфейс системы.

  2. Отфильтруйте Имя с помощью propUtils.

  3. Измените метод 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; },

Изменение метода на страницах пользовательского интерфейса
  1. Перейдите в навигатор фильтров и выполните поиск страниц пользовательского интерфейса.

    Выберите параметр Страницы интерфейса пользователя в разделе Пользовательский интерфейс системы.

  2. Отфильтруйте страницы интерфейса по имени и выполните поиск по запросу agentdesktop.

  3. Измените функцию всплывающего окна в поле сценария.

    Текущая функция:

    // 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

Щелкните Обновить.

Добавить новые столбцы в таблицу Журнал телефона

Откройте таблицу Журнал телефона

Добавить новый столбец – InteractionsNumber

Добавить новый столбец – IncidentNumber

Карта преобразований активности WebexCC

Открыть карту преобразования из навигатора фильтров

Щелкните Карта преобразования активности WebexCC

Добавить новое для карты номеров взаимодействия

Добавить новую карту номеров инцидентов

Нажмите Обновить.

Изменения сценария включают

  1. Перейдите к меню "Навигатор" и выполните поиск по фразе "сценарий включает".

    Выберите Сценарий включает в разделе Пользовательский интерфейс системы.

  2. Отфильтруйте Имя с помощью propUtils.

  3. Измените метод 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; },

Изменение метода на страницах интерфейса

  1. Перейдите к меню "Навигатор" и выполните поиск страниц пользовательского интерфейса

    Выберите параметр Страницы интерфейса пользователя в разделе Пользовательский интерфейс системы.

  2. Отфильтруйте страницы интерфейса по имени и выполните поиск по запросу agentdesktop.

  3. Измените функцию 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 создавайте новую запись инцидентов.

  1. Поиск бизнес-правил в навигаторе фильтров

  2. Щелкните "Создать".

    Пример кода для справки:

    Функция 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; }

    Пример конфигурации бизнес-правила

  3. Включить вызываемый абонент клиента

    Обработка интеграции компьютерной телефонии (CTI) для инцидентов отмечена как True.

  4. Обновите 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-переменной в журнал активности и таблицу активности с помощью описанной ниже методики.

Добавить столбец к активности WebexCC
  1. Отредактируйте таблицу в версии ServiceNow для разработчиков.

  2. Перейдите в раздел Studio > Webex Contact Center.

  3. Выберите таблицу Активность WebexCC .

  4. Например, Имя клиента.

  5. Выберите компоновку списка для активности 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.