Интеграция контакт-центра Webex с ServiceNow (версия 1 — устаревшая версия)

list-menuОтправить обратную связь?
При интеграции контакт-центра Webex с консолью ServiceNow CRM можно запустить настольный компьютер Webex Contact Center из ServiceNow.

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

Минимальный поддерживаемый размер интерфейса софтфона составляет 500 пикселей. Любое значение ниже 500 пикселей может привести к проблемам с отображением или функциональностью.

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

  • Доступ к контакт-центру Webex.

  • Доступ администратора к Центру управления по адресу https://admin.webex.com и контактному центру Webex. Management Portal URL-адреса этих адресов Management Portal относятся к вашему региону.

  • Агент с доступом к рабочему столу. URL-адрес рабочего стола относится к вашему региону.

  • Доступ агентов к следующему домену, добавленному в список разрешенных политик безопасности контента:

    • *.service-now.com

    Дополнительные сведения о том, как определить разрешенный список, см. в статье Настройки безопасности для Webex Contact Center.

  • Учетная запись на портале для разработчиков ServiceNow. Чтобы создать учетную запись, перейдите на портал для разработчиков ServiceNow по адресу https://developer.servicenow.com/dev.do и нажмите «Зарегистрироваться» и «Начать разработку».

  • Доступ к следующим файлам по адресу https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:

    • Набор обновлений ServiceNow (XML)

    • Макет рабочего стола контактного центра ServiceNow (JSON)

  • Контактный центр Webex поддерживает следующие версии ServiceNow: Ванкувер (Юта), Токио, Вашингтон и Ксанаду. Дополнительные сведения см. в разделе Интеграция контакт-центра Webex с ServiceNow.

Воспользуйтесь одним из двух способов, описанных ниже:

  • Для экземпляров для разработчиков мы рекомендуем выполнить шаги, описанные в руководстве по экземплярам для разработчиков.
  • Если у вас есть экземпляр с корпоративной лицензией, следуйте рекомендациям по инстансам с корпоративной лицензией.

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

Цифровые каналы, такие как чат и электронная почта, не поддерживаются коннекторами CRM. Это относится ко всем интеграциям CRM, использующим эти коннекторы. Пожалуйста, соответствующим образом спланируйте рабочие процессы развертывания и привлечения клиентов.

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

1

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

2

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

ServiceNow developer portal screenshot with ‘Start Building’ button highlighted.

3

На вашем экземпляре разработчика в поле «Навигатор фильтров» в верхнем левом углу окна перейдите в раздел Плагины.

ServiceNow developer instance showing a search for ‘plugins’ filter navigator.

4

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

ServiceNow developer instance on the Applications screen, showing the search and results for ‘OpenFrame.’

5

Нажмите кнопку «Установить», чтобы установить плагин Openframe.

6

В диалоговом окне «Активировать плагин» нажмите «Активировать».

ServiceNow developer instance showing OpenFrame plugin popup with the ‘Activate’ button highlighted.

7

После завершения активации плагина нажмите кнопку Закрыть и перезагрузить форму в диалоговом окне «Активация плагина».

ServiceNow developer instance showing OpenFrame plugin activation loading.

ServiceNow developer instance showing OpenFrame plugin activation success window with the ‘Close & Reload Form’ button highlighted.

8

Чтобы проверить активацию плагина, в поле «Навигатор фильтров» в верхнем левом углу окна перейдите в OpenFrame.

9

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

ServiceNow developer instance showing OpenFrame Configurations in the filter navigator search.

1

Загрузите последний XML-файл набора обновлений системы, доступный в репозитории github по этой ссылке: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

Имя файла: WebExcc-ServiceNow-Update-Setv (X) .xml

Github repo screenshot for Webex Contact Center CRM integrations – ServiceNow.

2

На вашем экземпляре ServiceNow в поле «Навигатор фильтров» в верхнем левом углу окна выберите Наборы обновлений системы > Обновить наборы для фиксации.

ServiceNow developer instance showing a search in the filter navigator on the ‘All’ tab for ‘Update set’ and ‘Update Sets to Commit’ option highlighted.

3

Нажмите ссылку Импортировать набор обновлений из XML.

ServiceNow developer instance on the Update Sets results page with ‘Related Links: Import Update Set from XML’ highlighted.

4

Нажмите «Выбрать файл», выберите XML-файл «Набор обновлений системы» и нажмите «Загрузить».

ServiceNow developer instance import XML screen.

ServiceNow developer portal retrieved update sets list.

Набор обновлений отображается в списке «Полученные наборы обновлений» и находится в состоянии «Загружен».
5

В списке извлеченных наборов обновлений нажмите на имя файла набора обновлений (ссылка), чтобы открыть набор обновлений.

ServiceNow developer portal retrieved update sets list for an updated file.

6

В правом верхнем углу окна нажмите кнопку «Предварительный просмотр набора обновлений», чтобы проверить набор обновлений на наличие проблем.

ServiceNow developer portal retrieved update sets list for an updated file with the ‘Preview Update Set’ button highlighted.

7

После завершения предварительного просмотра нажмите кнопку «Закрыть» в диалоговом окне «Предварительный просмотр набора обновлений».

ServiceNow developer portal with the update set preview success notification.

8

Нажмите «Зафиксировать набор обновлений».

ServiceNow developer portal retrieved update sets list for an updated file with the ‘Commit Update Set’ button highlighted.

9

После завершения фиксации набора обновлений нажмите кнопку «Закрыть» в диалоговом окне «Зафиксировать набор обновлений».

ServiceNow developer portal with the update set commit success notification.

1

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

ServiceNow developer instance showing a search in the filter navigator on the ‘All’ tab for ‘sys_properties.list’

2

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

ServiceNow developer instance system properties page.

3

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

4

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

ServiceNow developer instance system property details for agentdesktop_url.

5

Нажмите «Обновить», чтобы сохранить изменения.

6

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

На странице «Свойства системы» нажмите на таблицу webexcactivitytable.

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

ServiceNow developer instance system property details for webexactivitytable.

7

(Необязательно) Добавьте группы пользователей следующими способами:

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

    ServiceNow developer instance filter navigator search for ‘Groups’ under ‘System Security’
  2. Создайте новую группу пользователей или используйте существующую.

    ServiceNow developer instance group page for WebexccAgentsGroup.

  3. Нажмите «Редактировать».

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

    ServiceNow developer instance group edit members page showing a search for a collection.

    ServiceNow developer instance group edit members page showing a collection moved into the roles list.

  5. Нажмите кнопку «Сохранить».

  6. Добавьте пользователя в группу.

    ServiceNow developer instance group page with user roles assigned.

1

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

ServiceNow developer instance filters navigator with ‘openframe’ in the search field and ‘Configurations’ under ‘OpenFrame’ highlighted in the results.

2

Нажмите кнопку «Создать».

ServiceNow developer instance OpenFrame Configurations page with ‘New’ highlighted.

3

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

  • Имя: настольный компьютер контакт-центра Webex

  • Название: Контактный центр Webex

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

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

4

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

ServiceNow developer instance OpenFrame Configurations – New Record page with the lock icon highlighted.

5

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

ServiceNow developer instance OpenFrame Configurations – New Record user group selection.

6

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

ServiceNow developer instance OpenFrame Configurations – New Record page showing the URL link that appears after submitting the user group selections.

7

Прежде чем пытаться использовать телефон OpenFrame, обязательно загрузите JSON-файл пользовательского макета рабочего стола ServiceNow в контактный центр Webex. Management Portal Дополнительные сведения см. в разделе Настройка макета рабочего стола ServiceNow в контакт-центре Webex.

1

Загрузите макет рабочего стола для ServiceNow по адресу https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

Github screen for Webex Contact Center CRM Integrations – Desktop Layouts – ServiceNow.

2

При необходимости обновите свойства в файле макета рабочего стола.

3

Перейдите в контактный центр Webex. Management Portal

4

На панели Management Portal навигации выберите « Подготовка» > «Макет рабочего стола».

Webex Contact Center Management Portal provisioning page with Desktop Layout highlighted in the left navigation.

5

Нажмите «Новый макет» и введите сведения о макете рабочего стола.

6

Загрузите JSON-файл макета рабочего стола ServiceNow.

7

Нажмите кнопку Сохранить, чтобы сохранить конфигурацию.

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

8

В поле навигатора фильтров перейдите в рабочую область Service Operations Workspace.

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

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

1

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

2

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

ServiceNow developer portal screenshot with ‘Start Building’ button highlighted.

3

На вашем экземпляре разработчика в поле «Навигатор фильтров» в верхнем левом углу окна перейдите в раздел Плагины.

ServiceNow developer instance showing a search for ‘plugins’ filter navigator.

4

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

ServiceNow developer instance on the Applications screen, showing the search and results for ‘OpenFrame.’

5

Нажмите кнопку «Установить», чтобы установить плагин Openframe.

6

В диалоговом окне «Активировать плагин» нажмите «Активировать».

ServiceNow developer instance showing OpenFrame plugin popup with the ‘Activate’ button highlighted.

7

После завершения активации плагина нажмите кнопку Закрыть и перезагрузить форму в диалоговом окне «Активация плагина».

ServiceNow developer instance showing OpenFrame plugin activation loading.

ServiceNow developer instance showing OpenFrame plugin activation success window with the ‘Close & Reload Form’ button highlighted.

8

Чтобы проверить активацию плагина, в поле «Навигатор фильтров» в верхнем левом углу окна перейдите в OpenFrame.

9

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

ServiceNow developer instance showing OpenFrame Configurations in the filter navigator search.

1

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

ServiceNow developer instance showing a search in the filter navigator on the ‘All’ tab for ‘sys_properties.list’

2

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

ServiceNow developer instance system properties page results.

3

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

4

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

ServiceNow developer instance system property details page for agentdesktop_url.

5

Нажмите «Обновить», чтобы сохранить изменения.

6

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

  1. На странице «Свойства системы» нажмите на файл.webexcactivitytable. x_caci_webexcc

    ServiceNow developer instance system properties page results for x_caci_webexcc.webexccactivitytable.

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

    ServiceNow developer instance system property page for x_caci_webexcc.webexccactivitytable.

7

(Необязательно) Добавьте группы пользователей следующими способами:

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

    ServiceNow developer instance filter navigator results for ‘Groups.’

    SeviceNow developer instance group page for webexccagentsgroup.

  2. Нажмите кнопку Изменить и добавьте следующие роли:

    • sn_openframe_user

    • x_caci_webexcc.agent

    • agent_workspace_user

    • x_caci_webexcc. webexcc_imp_activity_user

    • x_caci_webexcc. webex_contact_center

    SeviceNow developer instance group page for webexccagentsgroup with rolls added.

1

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

ServiceNow developer instance filters navigator with ‘openframe’ in the search field and ‘Configurations’ under ‘OpenFrame’ highlighted in the results.

2

Нажмите кнопку «Создать».

ServiceNow developer instance OpenFrame Configurations page with ‘New’ highlighted.

3

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

  • Имя: настольный компьютер контакт-центра Webex

  • Название: Контактный центр Webex

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

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

4

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

ServiceNow developer instance OpenFrame Configurations – New Record page with the lock icon highlighted.

5

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

ServiceNow developer instance OpenFrame Configurations – New Record user group selection.

6

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

ServiceNow developer instance OpenFrame Configurations – New Record with URL added.

7

В поле навигатора фильтров перейдите в рабочую область Service Operations Workspace.

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

8

(Необязательно) В списке «Группа пользователей» переместите группы пользователей, которые имеют доступ к рабочему столу Webex Contact Center, из «Доступно» в «Выбранные».

9

Прежде чем пытаться использовать телефон OpenFrame, обязательно загрузите JSON-файл пользовательского макета рабочего стола ServiceNow в контактный центр Webex. Management Portal Дополнительные сведения см. в разделе Настройка макета рабочего стола ServiceNow в контакт-центре Webex.

1

Загрузите макет рабочего стола для ServiceNow по адресу https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

Github screen for Webex Contact Center CRM Integrations – Desktop Layouts – ServiceNow.

2

При необходимости обновите свойства в файле макета рабочего стола.

3

Перейдите в контактный центр Webex. Management Portal

4

На панели Management Portal навигации выберите « Подготовка» > «Макет рабочего стола».

Webex Contact Center Management Portal provisioning page with Desktop Layout highlighted in the left navigation.

5

Нажмите «Новый макет» и введите сведения о макете рабочего стола.

6

Загрузите JSON-файл макета рабочего стола ServiceNow.

7

Нажмите кнопку Сохранить, чтобы сохранить конфигурацию.

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

8

В поле навигатора фильтров перейдите в рабочую область Service Operations Workspace.

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

1

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

2

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

ServiceNow developer instance Incidents window with the Configure Directory option highlighted.

3

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

ServiceNow developer instance call incident window for a Directory Entry.

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

4

В поле навигатора фильтров перейдите в рабочую область Service Operations Workspace.

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

  • Мы поддерживаем вход Agent Desktop с использованием WebRTC только для коннекторов Salesforce (SFDC) и Microsoft Dynamics (MS Dynamics).
  • В настоящее время эта функция доступна только агентам.

Agent Desktopв консоли ServiceNow

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

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

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

  • Настройте ANI исходящих вызовов в качестве сопоставления телефонного номера с точкой входа.

Дополнительные сведения см. в главе «Подготовка» руководства по Cisco Webex Contact Centerустановке и администрированию.

В поле навигатора фильтров перейдите в рабочую область Service Operations Workspace.

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

Сведения об использовании настольного компьютера см. на вкладке Агент в справке Webex Contact Center.

Обзор

В этой статье описывается несколько способов настройки бизнес-правил для коннектора ServiceNow CRM. В ней подробно описывается, как настроить сценарии использования на основе бизнес-правил, специфичных для ServiceNow.

Заказчик должен самостоятельно управлять этими вариантами использования ServiceNow. Конфигурация специфична для ServiceNow, а не для программного обеспечения или опыта Webex Contact Center.

Это справочная документация, помогающая изменять бизнес-правила. Разработчики ServiceNow будут создавать бизнес-правила и управлять ими, а также оказывать поддержку.

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

В следующих разделах подробно описано, как настроить, включить и управлять виджетом Actions для разработчиков и корпоративных экземпляров.

Зафиксируйте виджет «Набор обновлений для действий»

Для лицензированных корпоративных экземпляров установите последнюю версию приложения Webex Contact Center из магазина 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, как тип вызова (входящий или исходящий), объект вызова, заметки о звонках и т. д.
  • Управление инцидентами — нажмите кнопку Создать инцидент. Создается новый инцидент с предварительно заполненными данными о вызывающем абоненте. В инцидент можно внести необходимые изменения. Вы можете изменить тип записи: от инцидента к случаю, модулю управления персоналом и т. д. в зависимости от ваших требований. Чтобы изменить тип записи, измените значение свойства 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 : 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);
            },

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

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

  2. Отфильтруйте имя и найдите agentdesktop.

  3. Измените функцию 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) {
       
    
        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 и с этим контактом уже открыт новый инцидент, программа откроет незавершенный инцидент

Если информация о звонящем отсутствует в CRM, приложение открывает новый инцидент

Если информация о звонящем существует в CRM, приложение открывает новый инцидент с предварительно заполненными данными

Обзор

В этом примере использования подробно описан процесс добавления дополнительного столбца в таблицу ServiceNow webexcc_imp_activity и создания sn_openframe_phone_log его после установки коннектора Webex CC for ServiceNow CRM.

По умолчанию таблица содержит некоторые стандартные системные поля и значения.

В конструкторе WebExcc Flow можно создать дополнительные бизнес-переменные (CAD-переменные) и добавить переменные CAD в журнал активности после звонков ServiceNow, а также сохранить их в данных таблицы активности после звонков.

Это только справочная документация, в которой показано, как это сделать для образца переменной CAD под названием «Имя клиента», которая сохраняет имя клиента в IVR и отправляет его в ServiceNow.

Ожидается, что разработчики ServiceNow, являющиеся партнерами и заказчиками, будут настраивать эту конфигурацию и управлять ею, поскольку она адаптирована к существующему коннектору.

Cisco предоставляет только методы настройки и расширения коннектора.

В этой статье команда Cisco подтвердила поддержку добавления переменной CAD в журнал активности и таблицу активности, используя метод, описанный ниже:

Добавить столбец в активность WebExcc IMP

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

    ServiceNow developer instance WebexCC IMP activity table.

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

    ServiceNow developer instance filter navigator on the All tab with ‘studio’ entered in the filter.

    Выберите контактный центр Webex

    Studio app for ServiceNow with the Select Application window open.

    или же

    Studio app for ServiceNow with the Select Application window open and ‘Select Store App to Customize’ selected.

    Studio app for ServiceNow with the ‘Select Store App to Customize’ window open and ‘Webex Contact Center’ selected.

    Studio app for ServiceNow with Webex Contact Center application file details.

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

    Studio app for ServiceNow WebexCC IMP Activity table.

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

    Studio app for ServiceNow WebexCC IMP Activity table new column example.

    Studio app for ServiceNow WebexCC IMP Activity table new column example with new column added.

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

  1. Отредактируйте таблицу телефонного журнала.

    ServiceNow developer instance search for a phone log table.

    ServiceNow developer instance phone log table.

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

    ServiceNow developer instance phone log table new column examples.

    ServiceNow developer instance phone log table new column example with new column added.

Карта трансформации активности WebExcc

Studio app for ServiceNow WebexCC Activity Transform Map.

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

Studio app for ServiceNow WebexCC Activity Transform Map new column example for CustomerName field mapping.

Studio app for ServiceNow WebexCC Activity Transform Map new column example with CustomeName selected in the Target field.

Персонализируйте столбцы списка

Studio app for ServiceNow WebexCC Activity Transform Map with popup window to personalized list columns. Choice action option is highlighted in the Selected column.

В соответствии с рекомендациями Service Now измените действие «Выбор» с «Создать» на «Игнорировать».

Studio app for ServiceNow WebexCC Activity Transform Map with the Choice action column, showing the dropdown to choose ‘ignore’ or ‘create.’

Studio app for ServiceNow WebexCC Activity Transform Map with the Choice action column and ‘ignore’ highlighted for the customer name source field.

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

Studio app for ServiceNow configuring phone log list with CustomerName highlighted in the Selected column.

Перейдите в раздел Включить скрипт

Добавьте только одну строку webexcc. u_customername=ActInfo.Имя клиента в PropUtils.

ServiceNow developer instance filter navigator search for ‘script includes.’

ServiceNow developer instance Script Includes page.

Пример сценария

См. строку: webexcc. u_customername=ActInfo.customerName; со вспомогательным комментарием.

var propUtils = Class.create();
propUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{
         getWebexccProp : function () {
           var webexccprop = {};
           webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/';
           webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url');
          // webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url');
           return  JSON.stringify(webexccprop);
      
        },
        UserGetSysId : function () {
            var opened_for;
            var user = new GlideRecord("sys_user");
              user.addQuery(this.getParameter('field'),this.getParameter('value'));
              user.query();
              if (user.next())
                 opened_for=user.sys_id;//return user.sys_id;
//            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

Webex Contact Center CAD variable flow designer with Add Flow Variable popup for CustomerName.

Добавьте переменную CAD в макет рабочего стола

Пример

"CadName1:SnowField1,CadName2:SnowField2"
 CadName1 is CustomerName
 SnowField1 is also used as CustomerName which is part of sample scirpt showen above "actInfo.CustomerName".

Example source code for adding the CAD variable to the Desktop Layout.

Демо-снимки экрана

Просмотрите недавно добавленную переменную CAD в таблице активности WebExcc.

ServiceNow example of the newly added CAD variable in the WebexCC Activity table, showing ‘Customer Name’ in the Cisco WebexCC popup.

ServiceNow example of the newly added CAD variable in the WebexCC Activity table, showing ‘CustomerName’ in the comments section under ‘Activity’ and ‘System Administrator.’

ServiceNow developer instance example of the newly added CAD variable in the WebexCC Activity table, showing the ‘CustomerName’ column.

Создайте переменную CAD для Flow Designer

Срочность инцидента

Webex Contact Center flow designer create CAD variable screen showing the edit flow variable popup for an incident urgency flow variable.

Воздействие инцидента

Webex Contact Center flow designer create CAD variable screen showing the edit flow variable popup for an incident urgency flow variable.

Обновление скрипта Service Now

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

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

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

    ServiceNow developer instance filter navigator search for ‘script includes’

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

    ServiceNow developer instance Script Includes name filter by ‘propUtils’

  3. Измените метод UserGetSysid в поле «Скрипт».

    ServiceNow developer instance Script Includes – propUtils details page.

    Текущий скрипт:

    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;
            },

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

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

    ServiceNow developer instance filter navigator search for ‘Ui page’

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

    ServiceNow developer instance UI Pages name filter to search ‘agentdesktop’

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

    ServiceNow developer instance UI Page – agentdesktop details page.

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

    // 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 example of an incident.

ServiceNow example of an interaction.

Измените код на ServiceNow

Добавьте новые столбцы в таблицу активности WebEXCC IMP

Откройте таблицу активности WebEXCC IMP

ServiceNow developer instance WebexCC Activity TransformMap.

ServiceNow developer instance WebexCC Activity TransformMap details page.

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

ServiceNow developer instance WebexCC Activity TransformMap new column, InteractionNumber.

ServiceNow developer instance WebexCC Activity TransformMap details page showing the new ‘interactionnumber’ column added.

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

ServiceNow developer instance WebexCC Activity TransformMap details page showing adding a new ‘incidentnumber’ column.

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

ServiceNow developer instance WebexCC Activity TransformMap details page showing editing the max length for the IncidentNumber column.

ServiceNow developer instance WebexCC Activity TransformMap details page showing the new ‘incidentnumber’ column added.

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

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

ServiceNow developer instance Phone Log table.

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

ServiceNow developer instance Directory Entry – New Record page showing a new column for InteractionsNumber.

ServiceNow Developer instance Phone Log table with InteractionsNumber column added.

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

ServiceNow developer instance Directory Entry – New Record page showing a new column for IncidentNumber.

ServiceNow Developer instance Phone Log table with IncidentNumber column added.

Карта трансформации активности WebExcc

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

ServiceNow developer instance filter navigator search for ‘transform map’

ServiceNow developer instance Table Transform Maps showing WebexCC Activity TransformMap in results.

Нажмите на карту активности WebExcc

ServiceNow developer instance WebexCC Activity TransformMap.

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

ServiceNow developer instance WebexCC Activity TransformMap with ‘InteractionNumber’ entered into the ‘Target field’

ServiceNow developer instance WebexCC Activity TransformMap with ‘InteractionNumber’ added.

Добавить новое — для карты номеров инцидентов

ServiceNow developer instance WebexCC Activity TransformMap with ‘IncidentNumber’ entered into the ‘Target field’

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

ServiceNow developer instance WebexCC Activity TransformMap with ‘IncidentNumber’ added.

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

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

    Выберите скрипт, включенный в меню «Системный интерфейс».

    ServiceNow developer instance filter navigator with search for ‘script includes’

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

    ServiceNow developer instance Script Includes with Name filter applied to search and  ‘propUtils’ entered into the search field.

  3. Измените метод setWebExccTable.

    ServiceNow developer instance Script includes - propUtils page

    Новый пример кода для Incident:

    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;
           },

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

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

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

    ServiceNow developer instance filter navigator with search for ‘Ui page’

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

    ServiceNow developer instance UI Pages with Name filter applied to search.

  3. Измените функции NowActivities и screenpop в скрипте.

    ServiceNow developer instance UI Page – agentdesktop.

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

    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));
            
       
    }
    
    

Результаты после обновления

ServiceNow developer instance Phone Logs page.

Следующие настройки применимы к версиям 1.0.5 и ниже. Для настройки новых версий 1.0.7 и выше выполните указанные выше действия.

Настройка № 1. Добавьте собственные бизнес-правила для сценариев использования потока вызовов

Создавайте новую запись инцидента для каждого вызова

Для каждого нового вызова коннектора WebExcc CRM в ServiceNow создавайте новую запись инцидента.

  1. Найдите бизнес-правила в навигаторе фильтров

    ServiceNow developer instance Business Rules page header.
  2. Нажмите кнопку «Создать».

    ServiceNow developer instance Business Rule – New Record.

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

    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;
    }

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

    ServiceNow developer instance Business Rule – CTI Processing For Incident page as a sample configuration of the business rule.
  3. Включите функцию вызова клиента

    ServiceNow developer instance Business Rules page with the Personalized List Columns popup screen showing ‘Client callable’ in the ‘Selected’ column.

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

    ServiceNow developer instance Business Rules page showing the Client callable column with options to select ‘true’ or ‘false’
  4. Обновите URL-адрес screenpop с помощью специального правила CTI "cti.do? sysparm_cti_rulesysparm_caller_phone=Создать инцидент& = "

    System Property page for screenpop_url showing update to the custom CTI rule in the ‘Value’ field.
Пример

sysparm_cti_ruleПараметр =name, где «name» — имя функции, следует вызывать для обработки CTI, а не использовать сценарий по умолчанию.

Определите функцию в sys_scriptзаписи, помеченной как вызываемая клиентом.

Если вам необходимо вставить, обновить или удалить какие-либо GlideRecord (ы) в функции, вызовите отдельную функцию, не вызываемую клиентом, для выполнения обновлений.

Чтобы сделать скрипт доступным для вызова клиента, необходимо установить флажок «Вызываемый клиентом» в форме, которая отображается при отображении записи. sys_script

Флажок, вызываемый клиентом, по умолчанию не отображается. Для просмотра необходимо изменить поля, отображаемые в форме, используя значок шестеренки и механизм слякоти.

Ссылки

Настройка № 2 — добавление переменной CAD в таблицу активности Webex Contact Center

Обзор

В этой статье описывается процесс добавления дополнительного столбца в таблицу ServiceNow, созданную при установке webexcc_activity коннектора Webex CC for ServiceNow CRM.

По умолчанию таблица содержит стандартные системные поля и значения.

Потенциально в конструкторе WebEXCC Flow можно создать больше специфичных для бизнеса переменных (CAD-переменных), добавить эти переменные CAD в журнал активности ServiceNow после звонков и сохранить их в данных таблицы активности после звонков.

  • Это только справочная документация. В ней показано, как это сделать с образцом переменной CAD под названием «Имя клиента», в которой имя клиента хранится в IVR и передается в ServiceNow.

  • Разработчики ServiceNow, являющиеся партнерами и заказчиками, будут настраивать эту конфигурацию и управлять ею, поскольку она адаптирована к существующему коннектору.

  • Cisco предоставит только методы настройки и расширения соединителя.

  • В этой статье команда Cisco подтвердила поддержку добавления переменной CAD в журнал активности и таблицу активности, используя метод, описанный ниже.

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

    ServiceNow developer instance Table – WebexCC Activity page.
  2. Перейдите в раздел Студия > Контактный центр Webex.

    ServiceNow developer instance filter navigator search for ‘studio’  highlighting the cross launch search result for ‘App Engine Studio’

    App Engine Studio Select Application screen showing Webex Contact Center in the search results.

    App Engine Studio Webex Contact Center screen.

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

    App Engine Studio WebexCC Activity table.
  4. Например, имя клиента.

    App Engine Studio WebexCC Activity table column edit example for ‘CustomerName’ column.

    App Engine Studio WebexCC Activity table screen.

  5. Выберите «Макет списка» для активности WebExcc.

    App Engine Studio WebexCC Activity table list layout showing ‘CustomerName’ highlighted in the ‘Selected’ column.
Создание нового скрипта включает

Этот шаг необязателен, если вы используете набор обновлений XML — для добавления только одной строки «webexcc» требуется добавить только одну строку. u_customername=ActInfo.CustomerName» в PropUtils.

ServiceNow developer instance filter navigator search for ‘script includes’

ServiceNow developer instance Script Includes page with ‘Application’ in the filter.

ServiceNow developer instance Script Includes – New Record page.

Пример сценария

См. строку с текстом: webexcc. u_customername=ActInfo.CustomerName; со вспомогательным комментарием.

var propUtils2 = Class.create();
propUtils2.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{
         getWebexccProp : function () {
           var webexccprop = {};
           webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/';
           webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url');
           webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url');
           return  JSON.stringify(webexccprop);
      
        },
        setWebexcctable : function () {
            var sys_id=0;
             
            var actInfo = JSON.parse(this.getParameter('actInfo'));
            var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable'));
            webexcc.addQuery("callobject", actInfo.CallObject);
            webexcc.query();
            if(!webexcc.next()) {
                webexcc.ani = actInfo.ani;
                webexcc.dnis =actInfo.dnis; 
                webexcc.queuename =actInfo.queuename;
                webexcc.wrapuptime =actInfo.wrapuptime;
                webexcc.callduration =actInfo.CallDurationInSeconds;
                webexcc.ringingtime =actInfo.ringingtime;
                webexcc.activitydate =actInfo.ActivityDate;
                webexcc.callobject =actInfo.CallObject;
                webexcc.calltype =actInfo.CallType;
                webexcc.calldisposition=actInfo.CallDisposition;
 
               // 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'
});
Отредактируйте страницу пользовательского интерфейса, указав новое имя скриптаApp Engine Studio agentdesktop UI page with new script name.

Создайте переменную CAD в конструкторе FlowWebex Contact Center flow designer with Add Flow Variable popup showing adding a CustomerName variable.

Добавьте переменную CAD в макет рабочего столаWebex Contact Center CAD variable to the desktop layout script with ‘CustomerName:CustomerName’ highlighted.

Демо-снимки экрана

Просмотрите недавно добавленную переменную CAD в таблице активности WebExcc.

ServiceNow developer instance showing newly added CAD variable in the WebexCC Activity table.

ServiceNow developer instance WebexCC Activities screen.

Коннектор 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.

  • Последнее обновление сервиса Now — ServiceNow_Desktop_0 .1.0_v5.0.3.json. По состоянию на март 2024 года версия пакета — 1.0.9
  • Последнее обновление XML — WebExcc-ServiceNow-Update-Setv7-1-Actionswidget.xml, июнь 2024 г.

Была ли статья полезной?
Была ли статья полезной?