Вы можете настроить интеграцию с провайдерами IP-телефонии, чтобы сотрудники могли совершать и принимать звонки от клиентов. Для этого используйте:
- готовые модули из каталога ELMA365 Store: Гравител, SIPNET, Zadarma, MANGO OFFICE, Sipuni, Билайн, Asterisk (доступен только для ELMA365 On-Premises);
- пользовательский модуль. Чтобы принимать и инициировать вызовы, нужно соединить модуль с провайдером.
Начало внимание
Функциональные возможности телефонии доступны при активации лицензии решения ELMA365 CRM или ELMA365 Omni.
Конец внимание
Чтобы настроить интеграцию с помощью пользовательского модуля:
- Выполните предварительные настройки, например, проверьте доступ к аккаунту телефонии, установите SIP-софтфон и т. д.
- Создайте модуль и в его скриптах пропишите методы Web API, чтобы получить сгенерированный Webhook и токен для обмена данными с провайдером телефонии.
- Соедините модуль с провайдером — в настройках на стороне провайдера укажите токен и Webhook, а в модуль скопируйте ключ авторизации и URL телефонной станции.
Чтобы пользователи могли обработать звонок в его карточке, например принять или переназначить вызов и т. д., добавьте в скрипты модуля соответствующие методы Web API.
В статье рассмотрен пример интеграции с телефонией Гравител.
Подробнее о настройке интеграции при помощи пользовательского модуля читайте в справке ELMA365 TS SDK.
Предварительные настройки для интеграции с телефонией
Перед началом настройки:
- Проверьте, что ваш аккаунт у выбранного провайдера телефонии активен.
- Ознакомьтесь с условиями и сроком хранения записи звонка на сервере провайдера. В течение этого срока в интерфейсе ELMA365 пользователь может прослушать и загрузить запись себе на компьютер. Если запись удалена, появится сообщение об ошибке.
- Убедитесь, что в настройках провайдера можно указать Webhook системы. С его помощью будут обрабатываться HTTP-запросы о событиях телефонии. Если такой возможности нет, создайте промежуточный сервис, который преобразует данные провайдера в запрос на сервер ELMA365. Подробнее читайте в статье «Переносимые сервисы в модулях».
- Для совершения и приёма звонков на рабочих местах сотрудников убедитесь, что провайдер предоставляет SIP-софтфон. В противном случае установите облачную или локальную программу, которая поддерживает SIP-протокол и обеспечивает голосовую связь, например, MicroSip.
- Чтобы использовать телефонию для работы с продажами, активируйте одно из системных решений CRM. Без лицензии функциональные возможности CRM недоступны.
Создать пользовательский модуль интеграции с телефонией
- Перейдите в раздел Администрирование > Модули и в правом верхнем углу нажмите кнопку + Модуль.
- В открывшемся окне выберите опцию Создать, введите название и описание модуля. Нажмите кнопку Создать.
- На странице управления модулем перейдите на вкладку Методы API и нажмите кнопку Редактировать. На открывшейся странице перейдите на вкладку Скрипты.
- Вставьте код-заготовку для методов, которые реализуют интеграцию и обмен данными с телефонией.
// Проверить соединение с телефонией |
- Сохраните и опубликуйте изменения.
На странице модуля отобразятся разделы:
- Настройки телефонии, где указаны автоматически сгенерированные токен и Webhook;
- Настройки обработки входящего звонка, где по умолчанию выбрано приложение для хранения контактных данных клиентов.

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

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

Подробнее о настройке интеграции в личном кабинете Гравител читайте в статье «Телефония Гравител».
- Сохраните настройки в панели управления Гравител и на странице модуля.
- Перейдите на страницу управления модулем и откройте вкладку Методы API > Скрипты. Нажмите кнопку Редактировать и добавьте в начало скрипта следующий код:
// Загрузить значение поля Ключ для авторизации в облачной АТС из настроек модуля |
- Добавьте или замените метод
VoipTestConnection, который позволяет проверить соединение с телефонией. В данном примере тестируется команда для получения списка пользователей. Вы можете указать другую команду.
Команда для получения списка пользователей
// Проверить соединение к телефонии |
- Сохраните и опубликуйте скрипты, после чего перейдите на страницу модуля и нажмите кнопку Проверить соединение. Появится сообщение об успешном подключении к телефонии.
Если вы видите ошибку при проверке соединения:
- убедитесь, что поля на странице модуля и в панели управления Гравител заполнены корректно. Например, ошибка «Invalid token» означает, что неверно заполнено поле Токен;
- проверьте, что скрипты составлены без ошибок, а также успешно сохранены и опубликованы;
- убедитесь, что ваш аккаунт Гравител активен.
- После этого добавьте или замените следующие методы для интеграции с Гравител:
- метод
VoipParseWebhookRequest— позволяет модулю обработать данные из HTTP-запроса от провайдера и передать их в ELMA365;
Метод для обработки данных из HTTP-запроса
// Обработать запрос от провайдера IP-телефонии |
- метод
VoipGetMembers— позволяет получить данные о пользователях телефонии. Эти данные отображаются на странице модуля при сопоставлении пользователей провайдера и пользователей ELMA365;
Метод для получения данных о пользователях телефонии
// Получить список пользователей от провайдера IP-телефонии |
- метод
VoipGenerateCall— позволяет инициировать звонок из интерфейса ELMA365;
Метод для инициирования звонка из системы
// Сгенерировать звонок |
- метод
VoipGetCallLink— позволяет сохранить запись разговора. В качестве аргумента передаются данные из поля call параметраVoipCallRecord(заполняется в методеVoipParseWebhookRequest).
Метод для сохранения записи разговора
// Получить ссылку на запись разговора |
- Чтобы реализовать функциональность кнопок для обработки звонка в его карточке, добавьте методы, перечисленные в справке ELMA365 TS SDK.
- Сохраните и опубликуйте скрипты.
- На странице модуля нажмите на появившуюся кнопку Настроить и сопоставьте номера пользователей из настроек провайдера с пользователями ELMA365. Подробнее читайте в статье «Телефония Гравител».

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