Телефония Asterisk

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

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

Модуль доступен только для ELMA365 On‑Premises. Интеграцию можно настроить с телефонией Asterisk версии 12 и выше.

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

Шаг 1. Активировать решение «ELMA365 CRM» или «ELMA365 Omni»

Чтобы получить доступ ко всем предусмотренным в ELMA365 возможностям телефонии, перед подключением интеграции приобретите лицензию решения ELMA365 CRM или ELMA365 Omni.

Это позволит применять расширенные настройки карточек звонков и карточек сводной информации по звонкам — формам с дополнительными данными о клиенте, которые можно просматривать во время звонка. Кроме того, пользователи смогут использовать раздел Телефония, где предусмотрена отдельная страница для фиксирования звонков и работы с ними.

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

Шаг 2. Задать настройки на стороне Asterisk

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

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

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

  1. На стороне Asterisk включите интерфейсы ARI и AMI. Они требуются для корректной работы модуля.

Включение интерфейса ARI

Включение интерфейса AMI

  1. На рабочих местах сотрудников настройте софтфон — специальную программу для совершения звонков, например MicroSip. Её необходимо подключить к вашему серверу Asterisk.

Шаг 3. Подключить модуль Asterisk в ELMA365

  1. Перейдите в раздел Администрирование > Модули.
  2. Нажмите + Модуль, а затем Скачать. В каталоге ELMA365 Store выберите модуль Asterisk и установите его.
  3. Нажмите Перейти в модуль. На открывшейся странице выполните действия:

Настроить подключение к серверу Asterisk

Чтобы получать данные из Asterisk, укажите в модуле параметры подключения. Их можно найти в настройках сервера Asterisk в файлах ari.conf и manager.conf.

  1. Откройте страницу подключения модуля и на вкладке Настройки заполните поля:

asterisk_1

  • Адрес Облачной АТС* — укажите полный URL или API‑адрес сервера, на котором находится Asterisk;
  • Пользователь* — введите логин пользователя, указанный в файле ari.conf;
  • Порт ARI* — введите порт, заданный в настройках интерфейса ARI. Он указан в файле ari.conf. Обычно используется порт 8088;
  • Пароль* — введите пароль пользователя, указанный в файле ari.conf;
  • Приложение Облачной АТС* — добавьте произвольное название приложения, например, elma365. Приложение будет использоваться в качестве контекста, который объединит все настройки, каналы и события для работы в рамках одного подключения;
  • Тип канала* — укажите протокол, по которому работает канал: SIPPJSIPDAHDI или IAX2. Тип канала определяется при настройке Asterisk;
  • Пользователь AMI* — введите логин пользователя, указанный в файле manager.conf;
  • Пароль AMI* — введите пароль пользователя, указанный в файле manager.conf;
  • Порт AMI* — введите порт, указанный в файле manager.conf. Обычно используется порт 5038;
  • Контекст исходящих вызовов — укажите название контекста, т. е. набора расширений, которые определяют правила совершения исходящих вызовов. Контекст настраивается на сервере Asterisk;
  • Ссылка на запись звонка — введите шаблон прямой ссылки для получения файлов с записью разговора из базы Asterisk. URL‑адрес указан в настройках сервера провайдера IP‑телефонии. Чтобы составить шаблон, под полем Ссылка на запись звонка нажмите Переменные для подстановки и используйте параметры канала, которые создаются при звонке. Шаблон может выглядеть следующим образом: https://record_{Id}_{Name}_{Creationtime}_{Creationtime.DayOfWeek}.wav;
  • Идентификатор звонка — при поступлении звонка выполняется поиск элемента в приложении, указанном в настройках обработки входящего звонка. По умолчанию используется номер телефона: при совпадении карточка элемента открывается автоматически, а затем в ней фиксируются данные о звонке.

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

Под полем Идентификатор звонка нажмите Переменные для подстановки и выберите переменную из Asterisk, например {Id} или {Caller.Name}. Затем перейдите к настройкам обработки входящего звонка, укажите приложение и заполните Поле для связи, выбрав свойство с типом Строка.

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

  1. После заполнения полей нажмите Установить настройки сервиса, чтобы звонки отображались в интерфейсе ELMA365, и над блоком Настройки телефонии нажмите кнопку Сохранить.
  2. Перейдите на вкладку Продвинутые настройки и задайте следующие параметры:

asterisk-5

  • Заполнять ссылку на вебхук автоматически — по умолчанию в поле Ссылка на вебхук* указано значение поля Webhook URL.

Чтобы ввести другой адрес, куда будут отправляться данные о событиях Asterisk, в поле Заполнять ссылку на вебхук автоматически выберите Нет;

  • Переменная для хранения номера расширения оператора — заполняется, если в вашей конфигурации Asterisk нельзя автоматически определять номер оператора при звонке. Например, в настройках конфигурации в скрипте для обработки звонков вы указали специальную переменную, в которую во время вызова записывается номер оператора:

same => n,Set(OPERATOR_EXT=${…}) 
// В переменную записывается внутренний номер, на который пришёл звонок

Для корректной передачи и хранения данных об операторе в ELMA365 укажите эту переменную в поле;

  • Подключаться к ARI через защищенное соединение — выберите Да, если нужно шифровать передачу данных между ELMA365 и Asterisk ARI через протоколы HTTPS и WSS. Затем нажмите Настройка Asterisk для поддержки защищенного соединения ARI и выполните шаги в открывшейся инструкции;
  • Подключаться к AMI через защищенное соединение — выберите Да, если нужно шифровать передачу данных между ELMA365 и Asterisk AMI через протокол TLS. Затем нажмите Настройка Asterisk для поддержки защищенного соединения AMI и выполните шаги в открывшейся инструкции;
  • Игнорировать ошибки проверки TLS-сертификатов — выберите Да, чтобы подключать сервисы независимо от наличия ошибок, которые могут возникнуть при проверке сертификатов;
  • Корневые сертификаты — укажите сертификаты в формате .pem для корректной проверки соединения.
  1. Нажмите Установить настройки сервиса и сохраните настройки.
  2. В блоке Настройки телефонии:
  • поля Токен и Webhook URL заполняются автоматически. Это служебные данные, которые используются для корректной работы модуля;
  • нажмите Проверить соединение. Если связь между Asterisk и ELMA365 установлена, вы увидите уведомление об этом.

asterisk-2

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

Сопоставить пользователей

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

  1. В блоке Настройки телефонии нажмите Настроить.
  2. В появившемся окне укажите пользователей ELMA365 для каждого внутреннего номера провайдера.
     
    Обратите внимание, пользователи Asterisk или внутренние номера провайдера IP-телефонии загружаются автоматически. Если эти данные не отобразились в окне Настройка пользователей, убедитесь, что пользователи на стороне провайдера созданы.
    asterisk_2
  3. Нажмите OK.

Настроить обработку входящего звонка

После подключения провайдера телефонии настройте обработку входящих звонков:

  1. Если в компании активирована лицензия решения ELMA365 CRM или ELMA365 Omni, вам доступен раздел Администрирование > Настройка звонка. Здесь вы можете задать расширенные настройки карточек входящего, исходящего и пропущенного звонков, а также карточек сводной информации по звонкам. Эти настройки можно применить для всех подключённых модулей телефонии.

Подробнее читайте в статье «Настроить карточку звонка».

  1. Если вы не используете расширенные настройки телефонии и хотите задать индивидуальные параметры обработки звонков в модуле Asterisk, откройте его страницу управления. На вкладке Настройки внизу страницы перейдите к блоку Настройки обработки входящего звонка и заполните поля:
    asterisk-3
  • Связать с приложением* — укажите приложение, в котором будут создаваться и храниться элементы с информацией о клиенте и звонке. Обратите внимание, на форме выбранного приложения должно находиться поле типа Номер телефона;
  • Контактный телефон* — выберите поле типа Номер телефона из контекста указанного приложения, в которое запишется телефон клиента. По умолчанию по этому полю происходит поиск элемента, связанного со звонком. Если входящий номер совпал со значением в поле, откроется нужная карточка;
  • Поле для связи — если требуется выполнять поиск элемента не по номеру телефона, а по другому параметру, который Asterisk передаёт вместе со звонком, заполните это поле. Укажите свойство с типом Строка из контекста приложения, выбранного выше.

Чтобы поиск выполнялся корректно, строковое свойство приложения нужно сопоставить с переменной из Asterisk. Для этого при настройке подключения к провайдеру в поле Идентификатор звонка укажите переменную от Asterisk, например {Id} или {Caller.Name}.

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

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

telephony-gravitel_3

После настройки всех параметров интеграции нажмите Сохранить.

Настроить CTI-панель

Чтобы работать с телефонией в интерфейсе ELMA365 без использования стороннего софтфона, настройте CTI-панель.

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

Действия на вкладке CTI-панель доступны после включения фича‑флага exp_crm_enable_browserVoipClient. Подробнее об этом читайте в статьях «Изменение параметров ELMA365 Enterprise» и «Изменение параметров ELMA365 Standard».

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

Если включён фича‑флаг, выполните следующие шаги:

  1. Предварительно настройте WebRTC на стороне Asterisk и получите URL‑адрес для подключения к телефонии из браузера.
  2. Вернитесь в ELMA365. На странице настроек модуля перейдите на вкладку CTI-панель и заполните поля:

asterisk-CTI

  • SIP Over WebSocket URL — введите ссылку, полученную на предыдущем шаге;
  • Уровень логирования* — выберите, какие сообщения о работе телефонии в браузере показывать в консоли разработчика: Отключено, Ошибки, Предупреждения, Информация или Отладка.

Чтобы обеспечить стабильное подключение к телефонии при любых сетевых условиях, задайте настройку на стороне STUN‑ или TURN‑сервера. После этого в ELMA365 заполните следующие поля:

  • Политика транспорта ICE* — выберите, какой тип сетевых кандидатов будет использоваться для установки соединения:
    • Любые кандидаты (all) — разрешены прямые подключения, кандидаты от STUN‑сервера и ретранслируемые через TURN‑сервер. Можно выбрать этот вариант, если в сети нет ограничений, блокирующих трафик;
    • Только ретранслируемые через TURN (relay) — разрешены только кандидаты от TURN‑сервера. Выберите этот вариант, если весь трафик должен проходить через промежуточный сервер, например при строгих сетевых ограничениях;
  • ICE-сервера — добавьте в таблицу данные серверов, которые могут использоваться ICE‑агентом для установки подключения между VoIP‑устройствами:
    • Тип сервера* — выберите нужное значение: STUN — если требуется определить внешний IP‑адрес клиента для установки прямого соединения, или TURN — если прямое соединение между устройствами недоступно. В этом случае голосовой трафик будет проходить через TURN‑сервер;
    • Хост* — укажите доменное имя или IP-адрес STUN‑ или TURN‑сервера;
    • Порт* — введите порт, заданный в настройках STUN‑ или TURN‑сервера;
    • Логин, Пароль — поля заполняются, если в поле Тип сервера* выбрано значение TURN. Данные используются для авторизации на TURN сервере;
    • Добавить в таблицу публичный STUN‑сервер Google — кнопка располагается под таблицей. Нажмите на неё, чтобы добавить в таблицу STUN‑сервер Google. С его помощью будет определяться публичный IP‑адрес пользователя для отправки голосового трафика.
  1. Нажмите Установить настройки сервиса, чтобы применить изменения.

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

Использовать инструменты диагностики

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

Для этого откройте страницу настроек модуля и перейдите на вкладку Диагностика:

asterisk-4

  1. Получатели уведомлений — укажите пользователей, которые получат уведомления при возникновении ошибок в работе модуля Asterisk.
  2. Уровень логирования — настройте получение сообщений о состоянии работы модуля:
  • в столбце Категория* перечислите категории микросервисов, по которым хотите отслеживать ошибки. Названия категорий отобразятся в списке ошибок в квадратных скобках;
  • в столбце Уровень логирования* для каждого микросервиса выберите тип сообщения об ошибках: Trace, Debug, Information, Warning, Error, Critical. Подробнее о типах читайте в официальной документации Microsoft.
     
    Если таблица не заполнена, вы будете получать сообщения об ошибках типа Warning, Critical, Error во всех микросервисах.
  1. Просмотреть логи — нажмите кнопку, чтобы открыть окно со списком последних 200 записей о состоянии работы модуля. Для каждого уровня логирования в списке используется своё цветовое обозначение:
  • Trace и Debug — серый цвет;
  • Information — синий цвет;
  • Warning — жёлтый цвет;
  • Error и Critical — красный цвет.
  1. Проверить настройки сервиса — нажмите кнопку, чтобы проверить, что настройки на стороне ELMA365 применены к сервису Asterisk. При обнаружении ошибок выводится уведомление в окне под кнопкой.
  2. Проверить статус подключения к Asterisk — нажмите кнопку, чтобы проверить установку связи с провайдером IP‑телефонии. Результат проверки выводится в окне под кнопкой.
     
    Если отображается ошибка соединения, проверьте:
  • корректность указанных значений для интерфейса ARI в общих настройках модуля;
  • доступность сервера Asterisk по ссылке, указанной в поле Адрес Облачной АТС*.

Возможные ошибки и решения

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

Возможные ошибки

Решения

  1. Ошибка Инициализация звонка не удалась при исходящем звонке через Asterisk.
    В devTools на вкладке NetWork запрос PUT https://some_domain/api/integrations/voip/system:ext_xxxx/call выполняется с ошибкой 502 (Bad Gateway).
    Входящий звонок не проходит.

Заново загрузите модуль Asterisk из ELMA365 Store и нажмите кнопку Установить настройки сервиса.

  1. Не проходит исходящий звонок на внешний номер.
  1. При входящем звонке с внешнего номера нет всплывающих карточек.
  1. Ошибка Response status code does not indicate success: 422 (Unprocessable Entity) при нажатии кнопки Установить настройки сервиса в настройках модуля. При этом проверка соединения с Asterisk и сопоставление пользователей выполняется без ошибок.

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

Тип канала определяется в конфигурации Asterisk или в freepbx в настройках.

  1. Ошибка Response status code does not indicate success: 401 (Unauthorized) при установке настроек в интеграции.

Проверьте логин и пароль в настройках модуля.

  1. Ошибка Response status code does not indicate success: 400 (Bad Request) при установке настроек сервиса.
    В логах сообщения: Ari connected, Error connection Response status code does not indicate success: 400 (Bad Request).

Проверьте настройки подключения в модуле. В особенности правильность заполнения полей Адрес Облачной АТС и Порт ARI.

  1. Не запускается переносимый сервис для отображения звонков в интерфейсе ELMA365.

С помощью ConfigMap установите лимиты для ресурсов, которые используются микросервисом. Подробнее об этом читайте в статье «Настройка параметров переносимых сервисов через ConfigMap».

  1. При использовании интерфейса FreePBX для управления телефонией возникают ошибки:
  • в разделе Телефония > Звонки не создаётся элемент приложения;
  • в карточке контакта не отображается запись исходящего звонка.

Выполните следующие действия:

  1. В настройках модуля Asterisk перейдите на вкладку Продвинутые настройки.
  2. В поле Переменная для хранения номера расширения оператора укажите значение AMPUSER.
  3. Сохраните настройки модуля.
  4. Нажмите Установить настройки сервиса, чтобы передать изменения в микросервис, который  взаимодействует с телефонией Asterisk.
  1. Не удаётся получить записи разговоров.

В настройках модуля в поле Ссылка на запись звонка укажите прямую ссылку на файлы записей звонков.

Допустим, на стороне Asterisk файлы с разговорами записываются в папку /var/log/asterisk/records/rec-${CHANNEL}.wav.
Тогда в ELMA365 в настройках модуля Asterisk в поле Ссылка на запись звонка нужно указать:

https://example.com/records/rec-{Name}.wav.

Также убедитесь, что:

  • папка /var/log/asterisk доступна по https и по домену example.com;
  • открыт доступ к папке records;
  • файлы записей звонков доступны по указанной ссылке.