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

Вы можете настроить интеграцию с провайдерами IP-телефонии, чтобы сотрудники могли совершать и принимать звонки от клиентов. Для этого используйте:

Начало внимание

Функциональные возможности телефонии доступны при активации лицензии решения ELMA365 CRM или ELMA365 Omni.

Конец внимание

Чтобы настроить интеграцию с помощью пользовательского модуля:

  1. Выполните предварительные настройки, например, проверьте доступ к аккаунту телефонии, установите SIP-софтфон и т. д.
  2. Создайте модуль и в его скриптах пропишите методы Web API, чтобы получить сгенерированный Webhook и токен для обмена данными с провайдером телефонии.
  3. Соедините модуль с провайдером — в настройках на стороне провайдера укажите токен и Webhook, а в модуль скопируйте ключ авторизации и URL телефонной станции.

Чтобы пользователи могли обработать звонок в его карточке, например принять или переназначить вызов и т. д., добавьте в скрипты модуля соответствующие методы Web API.

В статье рассмотрен пример интеграции с телефонией Гравител.

Подробнее о настройке интеграции при помощи пользовательского модуля читайте в справке ELMA365 TS SDK.

Предварительные настройки для интеграции с телефонией

Перед началом настройки:

  1. Проверьте, что ваш аккаунт у выбранного провайдера телефонии активен.
  2. Ознакомьтесь с условиями и сроком хранения записи звонка на сервере провайдера. В течение этого срока в интерфейсе ELMA365 пользователь может прослушать и загрузить запись себе на компьютер. Если запись удалена, появится сообщение об ошибке.
  3. Убедитесь, что в настройках провайдера можно указать Webhook системы. С его помощью будут обрабатываться HTTP-запросы о событиях телефонии. Если такой возможности нет, создайте промежуточный сервис, который преобразует данные провайдера в запрос на сервер ELMA365. Подробнее читайте в статье «Переносимые сервисы в модулях».
  4. Для совершения и приёма звонков на рабочих местах сотрудников убедитесь, что провайдер предоставляет SIP-софтфон. В противном случае установите облачную или локальную программу, которая поддерживает SIP-протокол и обеспечивает голосовую связь, например, MicroSip.
  5. Чтобы использовать телефонию для работы с продажами, активируйте одно из системных решений CRM. Без лицензии функциональные возможности CRM недоступны.

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

  1. Перейдите в раздел Администрирование > Модули и в правом верхнем углу нажмите кнопку + Модуль.
  2. В открывшемся окне выберите опцию Создать, введите название и описание модуля. Нажмите кнопку Создать.
  3. На странице управления модулем перейдите на вкладку Методы API и нажмите кнопку Редактировать. На открывшейся странице перейдите на вкладку Скрипты.
  4. Вставьте код-заготовку для методов, которые реализуют интеграцию и обмен данными с телефонией.

Код-заготовка для методов

  1. Сохраните и опубликуйте изменения.

На странице модуля отобразятся разделы:

  • Настройки телефонии, где указаны автоматически сгенерированные токен и Webhook;
  • Настройки обработки входящего звонка, где по умолчанию выбрано приложение для хранения контактных данных клиентов.

IP-Tel-integration-1

Соединить модуль с провайдером телефонии

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

  1. На странице модуля перейдите на вкладку Настройки и добавьте два строковых поля Ключ для авторизации в облачной АТС (apiKey) и Адрес облачной АТС (endpoint). В эти поля позднее вы запишете данные из настроек провайдера для подключения к Гравител.

IP-Tel-integration-3

  1. Вернитесь на страницу модуля — на ней появятся добавленные в предыдущем пункте поля. Cкопируйте значения полей Webhook URL и Токен.
  2. Перейдите в панель управления Гравител. Интеграция настраивается по Web API Гравител предыдущего поколения. В зависимости от версии личного кабинета, которую вы используете, выполните следующие шаги:
  • для актуальной версии — перейдите в Интеграции и выберите блок API Гравител. Нажмите Установить;
  • для предыдущей версии — перейдите в Интеграция с CRM и на открывшейся странице в правом нижнем углу выберите Интеграции с вашей CRM.
  1. На открывшейся странице заполните поля Название интеграции, Ваша CRM, Адрес вашей CRM и Ключ для авторизации в вашей CRM значениями из настроек модуля.

Затем скопируйте значения полей Ключ для авторизации в Облачной АТС и Адрес Облачной АТС. Перейдите в ELMA365 и вставьте их в соответствующие поля на странице модуля.

IP-Tel-integration-6

Подробнее о настройке интеграции в личном кабинете Гравител читайте в статье «Телефония Гравител».

  1. Сохраните настройки в панели управления Гравител и на странице модуля.
  2. Перейдите на страницу управления модулем и откройте вкладку Методы API > Скрипты. Нажмите кнопку Редактировать и добавьте в начало скрипта следующий код:

Код

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

Команда для получения списка пользователей

  1. Сохраните и опубликуйте скрипты, после чего перейдите на страницу модуля и нажмите кнопку Проверить соединение. Появится сообщение об успешном подключении к телефонии.

Если вы видите ошибку при проверке соединения:

  • убедитесь, что поля на странице модуля и в панели управления Гравител заполнены корректно. Например, ошибка «Invalid token» означает, что неверно заполнено поле Токен;
  • проверьте, что скрипты составлены без ошибок, а также успешно сохранены и опубликованы;
  • убедитесь, что ваш аккаунт Гравител активен.
  1. После этого добавьте или замените следующие методы для интеграции с Гравител:
  • метод VoipParseWebhookRequest — позволяет модулю обработать данные из HTTP-запроса от провайдера и передать их в ELMA365;

Метод для обработки данных из HTTP-запроса

  • метод VoipGetMembers — позволяет получить данные о пользователях телефонии. Эти данные отображаются на странице модуля при сопоставлении пользователей провайдера и пользователей ELMA365;

Метод для получения данных о пользователях телефонии

  • метод VoipGenerateCall — позволяет инициировать звонок из интерфейса ELMA365;

Метод для инициирования звонка из системы

  • метод VoipGetCallLink — позволяет сохранить запись разговора. В качестве аргумента передаются данные из поля call параметра VoipCallRecord (заполняется в методе VoipParseWebhookRequest).

Метод для сохранения записи разговора

  1. Чтобы реализовать функциональность кнопок для обработки звонка в его карточке, добавьте методы, перечисленные в справке ELMA365 TS SDK.
  2. Сохраните и опубликуйте скрипты.
  3. На странице модуля нажмите на появившуюся кнопку Настроить и сопоставьте номера пользователей из настроек провайдера с пользователями ELMA365. Подробнее читайте в статье «Телефония Гравител».

IP-Tel-integration-7

  1. При необходимости настройте обработку входящего звонка. По умолчанию для связи звонка с клиентом используется приложение Контакты. Когда поступает звонок, в этом приложении выполняется поиск элемента по номеру телефона. Если входящий номер совпадает со значением в поле типа Номер телефона, откроется нужная карточка.

Вы также можете настроить поиск элемента по другому строковому полю приложения. Подробнее об этом читайте ниже.

  1. Сохраните настройки.

Теперь интеграция с Гравител полностью функционирует.

Настроить поиск элемента по строковому полю

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

В пользовательском модуле телефонии можно настроить поиск элемента по другому параметру, который передаёт провайдер, например, по идентификатору звонка или имени звонящего. Для этого в настройках переменная провайдера сопоставляется со строковым свойством приложения.

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

  1. После того как соединение с провайдером установится, на странице управления модулем перейдите на вкладку Настройки и добавьте переменную Идентификатор звонка (link_call_id) с типом Строка. При входящем звонке в это свойство запишется значение, переданное от провайдера IP‑телефонии, с нужной информацией о звонке.
  2. Перейдите на страницу модуля. Здесь отобразится свойство, добавленное на предыдущем шаге. Также в блоке Настройки обработки входящего звонка появится Поле для связи.
  3. В Поле для связи укажите свойство с типом Строка из контекста приложения, выбранного в поле Связать с приложением*.
  4. Чтобы поиск выполнялся корректно, свяжите строковое свойство приложения с переменной, которую передаёт провайдер. Для этого вверху страницы модуля в поле Идентификатор звонка укажите переменную провайдера в фигурных скобках, например {Id} или {Caller.Name}.
  5. Сохраните настройки.

Когда поступит звонок, значение переменной из поля Идентификатор звонка сравнится со значением выбранного свойства в Поле для связи во всех элементах приложения. При совпадении откроется нужный элемент.