Поделиться через


Интеграция Twilio Flex с аналитикой разговоров Dynamics 365 (предварительная версия)

[Данная статья посвящена предварительному выпуску и может быть изменена.]

Эта интеграция позволяет вашим продавцам совершать и принимать вызовы Twilio Flex из Dynamics 365, а также получать расшифровки в реальном времени во время звонка и аналитические данные о звонках, созданные ИИ, после звонка.

Внимание

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

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

  • Учетная запись Twilio

  • Учетная запись Twilio Flex — перейдите по этой ссылке для получения дополнительной информации о настройке учетной записи Flex

  • Среда Microsoft Dynamics 365 Sales с лицензией Sales Premium или Sales Enterprise, а также привилегиями системного администратора

  • Аналитика разговоров установлена и настроена — Подробнее

  • Установлена инфраструктура интеграции каналов Dynamics 365 1.0 Подробнее

  • Настройка локальной среды Node JS

  • Приложение create-flex-plugin

Шаг 1. Настройка Twilio Flex в качестве поставщика каналов

В инфраструктуре интеграции каналов Dynamics 365 создайте поставщика каналов для Twilio Flex. См. приведенный ниже снимок экрана в качестве примера:

Снимок экрана Twilio, добавленного в качестве поставщика каналов.

Введите следующие значения::

  • URL-адрес канала:https://flex.twilio.com/agent-desktop

  • Включить исходящую связь: Да

  • Версия API: 1.0

  • Порядковый номер канала: 1

  • Доверенный домен:https://flex.twilio.com/

  • Выберите приложения единого интерфейса для канала: Центр продаж (или любое другое приложение, для которого вы хотите включить интеграцию)

  • Выберите роли безопасности для канала: добавьте роли, которые будут использовать Twilio Flex. Например, продавец, менеджер по продажам и т. д. Чтобы встроить Twilio Flex в качестве iFrame внутри Dynamics 365, добавьте URL-адрес организации Dynamics 365 в список разрешенных URL-адресов. Дополнительные сведения см. в этой статье.

Шаг 2. Установка соединителя SIPREC и маршрутизация вызовов в Dynamics 365

  1. Установите надстройку Соединитель SIPREC.

  2. Откройте настройки центра администрирования Twilio и настройте его для разветвления мультимедиа на устройство записи Dynamics 365, как показано на следующем снимке экрана:

    Снимок экрана настроек центра администрирования Twilio

    Важно отметить следующие поля:

    • Уникальное имя: укажите имя и запишите его. Его необходимо использовать на следующих шагах

    • Сервер записи сеанса: укажите URL-адрес сервера записи мультимедиа Dynamics 365. Список поддерживаемых устройств записи и регионов см. в разделе Конечные точки устройств записи и поддерживаемые регионы.

      • Если вы хотите разветвить мультимедиа на ближайшее устройство записи, используйте следующий URL-адрес: sip:SRS@media.recording.dynamics.com:5061;secure=true

      • Поля учетных данных могут оставаться пустыми. Аутентификация выполняется с помощью сертификата при настройке TLS между Twilio и Dynamics.

Шаг 3. Настройка потока вызовов для разветвления мультимедиа в Dynamics 365

  1. Перейдите в раздел потоков Studio в консоли и выберите поток голосового IVR.

  2. С правой стороны в разделе Голосовая связь в библиотеке мини-приложений добавьте мини-приложение Разветвление потока:

    Снимок экрана мини-приложения разветвления потока.

  3. Теперь настройте мини-приложение для разветвления потока с помощью соединителя SIPREC, который вы определили ранее:

    Снимок экрана конфигурации мини-приложения разветвления потока.

  4. Введите следующие значения:

    - Действие потока: Пуск

    • Тип потока: Siprec
    • Имя соединителя: имя, которое вы дали соединителю SIPREC. В нашем примере это SipRec1.
    • Дорожки: Обе дорожки
    • Параметры потока:
      • Роль: входящие (в нашем примере мы собираемся записывать входящие звонки)

      • CallerDisplayName: {{trigger.call.From}}

      • CalleeDisplayName: {{trigger.call.To}}

  5. На вкладке Переходы настройте, чтобы Разветвление потока выполнялось до направления звонка агенту:

    Снимок экрана с вкладкой «Переход Twilio».

  6. Сохраните поток и опубликуйте его.

Шаг 4. Настройка номера телефона Twilio

Вам нужно указать номер телефона Twilio для только что созданного потока Studio.

  1. Выберите номер, которым владеете, — или купите новый номер, — в консоли номеров телефонов Twilio.

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

  3. Выберите поток, который вы определили ранее, в полях Звонок поступает в , как показано на следующем снимке экрана:

    Снимок экрана полей Twilio «Звонок поступает в».

Шаг 5. Настройка Dynamics 365 для интеграции

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

  1. В приложении Центра продаж перейдите к области "Изменить" и выберите Параметры Sales Insights.

  2. Выберите Аналитика разговоров.

    Снимок экрана страницы параметров аналитики разговоров

  3. Выберите Twilio в разделе «Поставщики звонков» и укажите SID учетной записи Twilio.

  4. Сохраните изменения.

  5. Настройте политику записи с помощью поставщика вызовов Twilio.

    1. Выберите Создать политику записи и настройте политику. Подробнее.

    2. Выберите Создать, затем опубликуйте настройки.

Шаг 6. Подготовка подключаемого модуля Flex для интеграции работы в режиме реального времени

Flex — это проект React, и настройки, которые вы вносите в пользовательский интерфейс, создаются как компоненты подключаемого модуля.

Подготовка среды Node и установка пустого подключаемого модуля Flex выходят за рамки этой документации. Обратитесь к документации Twilio для получения пошагового руководства по созданию вашего первого подключаемого модуля Flex.

Создайте новый подключаемый модуль, готовый для добавления кода настройки для Dynamics.

На этом этапе ваш JS-файл подключаемого модуля выглядит так:

Снимок экрана файла plugin.js.

Добавьте клиентскую библиотеку Microsoft CIF в свой подключаемый модуль. Клиентская библиотека должна загружаться асинхронно при запуске Flex, поэтому добавьте следующий код в функцию инициализации Flex.

import React from 'react';
import \* as Flex from '@twilio/flex-ui';
import { FlexPlugin } from '@twilio/flex-plugin';
import reducers, { namespace } from './states';
const PLUGIN\_NAME = 'SamplePlugin';
export interface CallStartedEvent {
  callId: string;
  startTime: Date;
  isIncomingCall: boolean;
  contactNumber: string;
  contactName: string;
}

export interface CallEndedEvent {
  callId: string;
  callDurationInSeconds: number;
  callTerminationReason: string; // \['success', 'error'\]
  callEndTime: Date;
  isCallStarted: boolean;
}

export default class SamplePlugin extends FlexPlugin {
  constructor() {
    super(PLUGIN\_NAME);
  }
  /\*\*
   \* This code is run when your plugin is being started
   \* Use this to modify any UI components or attach to the actions framework
   \*
   \* @param flex { typeof Flex }
   \* @param manager { Flex.Manager }
   \*/
  async init(flex: typeof Flex, manager: Flex.Manager): Promise<void> {
    this.registerReducers(manager);
    this.loadCIF();
    flex.Actions.addListener('afterAcceptTask', (payload) => {
      const callStartedEvent : CallStartedEvent = {
        callId: payload.task.\_task.attributes.call\_sid,
        startTime: new Date(),
        isIncomingCall: true,
        contactName: payload.task.\_task.attributes.caller,
        contactNumber: payload.task.\_task.attributes.caller
      };
      // @ts-ignore
      Microsoft.CIFramework.raiseEvent('WIDGET\_CALL\_STARTED', callStartedEvent);
    });

    flex.Actions.addListener('afterCompleteTask', (payload) => {
      // @ts-ignore
      Microsoft.CIFramework.raiseEvent('WIDGET\_CALL\_ENDED', {
        callId: payload.task.\_task.attributes.call\_sid,
        callTerminationReason: 'success',
        callEndTime: new Date(),
        isCallStarted: true
      });
      const callEndedEvent : CallEndedEvent = {
        callId: payload.task.\_task.attributes.call\_sid,
        callEndTime: new Date(),
        callTerminationReason: 'success',
        isCallStarted: true
      };
 

      // @ts-ignore
      Microsoft.CIFramework.raiseEvent('WIDGET\_CALL\_ENDED', callEndedEvent);
    });

    const options: Flex.ContentFragmentProps = { sortOrder: -1 };
    flex.AgentDesktopView.Panel1.Content.add(<div key="SamplePlugin-component" >Hello Partner!</div>, options);
  }

  loadCIF = () => {
    const script = document.createElement("script");
    script.src = \`${window.location.ancestorOrigins\[0\]}/webresources/Widget/msdyn\_ciLibrary.js\`;
    script.setAttribute('data-crmurl', window.location.ancestorOrigins\[0\]);
    script.setAttribute('data-cifid', 'CIFMainLibrary');
    document.body.appendChild(script);
  }

  /\*\*

   \* Registers the plugin reducers
   \*
   \* @param manager { Flex.Manager }
   \*/
  private registerReducers(manager: Flex.Manager) {
    if (!manager.store.addReducer) {
      // eslint-disable-next-line
      console.error(\`You need FlexUI > 1.9.0 to use built-in redux; you are currently on ${Flex.VERSION}\`);
      return;
    }
    manager.store.addReducer(namespace, reducers);
  }
}

Опубликуйте подключаемый модуль.
Теперь у нас есть подключаемый модуль Flex, который можно протестировать!

Шаг 7. Тестирование аналитики разговоров Dynamics 365 и интеграции Flex

Войдите в приложение "Центр продаж" и выберите значок Позвонить. Вы увидите Twilio Flex, встроенный в правую панель.

Снимок экрана встроенного средства набора номера Twilio в приложении «Центра продаж».

Убедитесь, что вы установили свой статус как Доступен в Twilio, и позвоните на номер телефона Twilio, который вы настроили на Шаг 4. Настройка номера телефона Twilio.

Снимок экрана уведомления о звонке на встроенном средстве набора номера

Ответив на звонок и начав запись, перейдите на вкладку Расшифровка, чтобы просмотреть расшифровку в реальном времени, а затем просмотрите аналитику звонков на странице Сводка звонка после окончания звонка.

Просмотр и понимание страницы сводки звонка