Asterisk

Возможности интеграции с программной АТС “Asterisk

  • Совершение вызова из CRM с функцией Callback (АТС перезванивает сначала вам, а потом вызываемому абоненту)
  • Запись в историю активностей Организации или Персоны о совершенном вызове (в случае успешного соединения)
  • Определение звонящего из Базы данных CRM – получение CallerID
  • Всплытие уведомления о входящем звоке с идентификацией номера телефона в базе данных CRM
  • Запись входящих/исходящих звонков в карточку Клиента/Контакта с возможностью прослушивания разговора

Кнопки действий в окне разговоров

  1. Разговор с контактом, который есть в базе CRM - доступна кнопка добавления Обращения, если модуль активен
  2. Разговор с контактом, от которого пришла заявка в Сборщик заявок - доступна кнопка, вызывающая форму обработки Заявки
  3. Разговор с неизвестным контактом - доступна кнопка вызова Экспрессс-формы и формы добавления Обращения, если модуль активен

Важно!

С версии 2020.3 все скрипты перенесены из папки /api/asterisk/ в папку /content/pbx/asterisk/

Настройка CRM

Все настройки подключения к серверу Asterisk проводятся в Панели управления CRM:

Проверка соединения

Вы можете проверить правильность параметров и возможность соединения с сервером Asterisk прямо из панели. При этом данные для проверки берутся непосредственно из формы, т.е. проверить соединение можно до сохранения параметров.

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

Общие настройки:

  1. Переименуйте файл «simple.settings.json» (находится в папке /api/asterisk/ *) в «settings.json» - здесь будут храниться настройки подключения к БД, в которую Asterisk записывает историю звонков - CDR и режим работы Asterisk ( * - с версии 2020.3 в папке /content/pbx/asterisk/ )
  2. В файле «settings.json» настройте:
    • параметр "mode":
      • simple - для обычного режима и версии ниже 12
      • a12 - для Asterisk v.12, (есть прецендент нормальной работы в версии 13)
      • device - для FreePBX в режиме "device and users"
    • параметр "timeOut" - интервал, через который будем делать новый запрос к Астериску, в противном случае берем ответ из БД - актуально, если в CRM работает несколько пользователей для снижения нагрузки на Астериск

Трекинг звонков

  1. MySQL. В траблицу cdr добавить поле did varchar(50)
  2. В диалплан входящего вызова дописать строку диалплана
    ...
    exten => _X.,n,Set(CDR(did)=${EXTEN})
    ..

п.п. 1 и 2 во FreePBX уже есть из коробки

Определение имени звонящего

Функция определения имени звонящего (FreePBX CallerID Lookup) позволяет отображать на экранах софтфонов или sip-аппаратов не только номера звонящего, но и его имени, если оно имеется в базе данных системы CRM.

Настройка производится на стороне Asterisk.

Подключение.

  1. В соответствующем разделе создайте новый источник поиска и укажите Ваши данные сервера Asterisk
  2. Укажите параметры подключения к скрипту. Скрипт для поиска имени звонящего находится в папке адрес_crm/api/asterisk/callerid.php*
    В качестве запроса укажите: phone=[NUMBER]&apkey=ваш_ключ
  3. По-умолчанию Имя абонента отображается в транслите. Начиная с версии 8.10 можно добавить доп.параметр для отключения транслита. Тогда запрос будет выглядеть так: phone=[NUMBER]&apkey=ваш_ключ&t=no
  4. apkey можно получить в Панели управления / Общие настройки / блок "Настройки безопасности" (см. Общие настройки)

Определение ответственного за Клиента по номеру

Для того, чтобы узнать Ответственного сотрудника по номеру входящего звонка нужно обратиться к скрипту 

адрес_crm/api/asterisk/sipusers.php?phone=[NUMBER]&apikey=ваш_ключ*

Скрипт выдаст внутренний номер телефона сотрудника, Ответственного за Клиента или контакт, которому принадлежит входящий номер.

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

Звонок по клику из CRM

  1. В панели Администрирования перейдите в раздел «Интеграция» / «Сервер ip-телефонии»
  2. Активируйте функцию телефонии выбором меню «Использовать» и Asterisk в меню «Тип SIP»
  3. Введите данные для подключения в поля и сохраните
  4. Далее необходимо настроить внутренний номер каждого сотрудника. Это делается в разделе Администрирование / Сотрудники / Редактировать сотрудника:

Теперь все номера телефонов в системе будут преобразованы в ссылки. При клике на любой номер система будет отправлять запросы на сервер Asterisk для совершения звонка методом Callback – т.е. сервер Asterisk будет сначала набирать номер оператора, отправившего запрос, а затем на номер абонента.

Настройка сервера Asterisk

Во-первых, необходимо создать пользователя для управления asterisk. Для этого достаточно внести соответствующую запись в /etc/asterisk/manager.conf, в примере ниже добавлен пользователь 1cami с паролем PASSWORD1cami. Важно также в секцию general добавить опции указанные в примере.

manager.conf
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
allowmultiplelogin = yes
webenabled = yes
httptimeout = 60

[1cami]
secret = PASSWORD1cami
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
read = call,cdr,user,config
write = call,originate,reporting,command,system

Окончательная проверка соединения

Можно воспользоваться опцией проверки соединения из настроек:

Настройка для чтения статистики CDR.

Для возможности чтения статистики звонков необходимо настроить запись CDR в базу данных MySQL, а также необходимые пути в Настройках интеграции с Asterisk.

В случае, если сервер CRM и Asterisk находятся на разных серверах:

  1. Разместите файл «cdr2crm.php» (находится в папке api/asterisk/) на сервере Asterisk. Скрипт должен быть доступен для запросов из CRM. Или можете скачать его:
     Скачать
  2. Измените в скрипте «cdr2crm.php» параметры подключения к базе данных MySQL:
    1. $config['secret'] – параметр проверки легальности запроса. Используется API key из Общих настроек системы.
    2. @mysql_connect('localhost', 'freepbxuser', 'eJjsKGdfgfj0MhfnXi') – параметры подключения к Базе данных
    3. @mysql_select_db('asteriskcdrdb') – имя базы данных, куда ведется запись статистики
  3. В настройках укажите путь подключения к скрипту «cdr2crm.php»
  4. Важно: убедитесь, что скрипт доступен из браузера любого оператора без авторизации. Возможно необходимо создать виртуальный хост для обеспечения доступа к скрипту

В случае, если сервер CRM и Asterisk находятся на одном сервере:

  1. Переименуйте файл «cdr.combine.php» (находится в папке api/asterisk/*) в «cdr.php» с заменой существующего
  2. Переименуйте файл «simple.settings.json» (находится в папке api/asterisk/*) в «settings.json» - здесь будут храниться настройки подключения к БД, в которую Asterisk записывает историю звонков - CDR
  3. Откройте файл «settings.json» и пропишите параметры подключения к БД CDR
  4. Адрес размещения файла «cdr2crm.php», в данном случае, можно оставить пустым

Примечание:

  1. Для возможности прослушивания записи разговоров необходимо включить эту функцию в Asterisk. Запись файлов должна происходить в формате WAV.
  2. Настройте путь поиска записей разговоров в настройках
  3. Для ручной загрузки истории звонков в CRM перейдите в раздел "Календарь" / "История звонков" / Загрузить вручную. Будет загружена история звонков за 24 часа
  4. Для синхронизации по расписанию (например, с помощью утилиты CRON) следует запускать скрипт адрес_crm/api/asterisk/cdr.php?hours=1*, где hours - синхронизируемый период в часах

Важно:

В разных сборках Asterisk по-разному записывает параметры uniquid и filename. Вы можете переименовать соответствующие переменные в скрипте cdr2crm.php

Прослушивание разговоров

Прослушать записанные разговоры можно либо из раздела "Календарь" / "История звонков", либо непосредственно из карточки Клиента или Контакта.

Для возможности прослушивания необходимо:

  1. в настройках указать путь до папки, в которой находятся файлы записей. Убедитесь, что по url они доступны для чтения.
  2. убедиться, что файл синхронизации истории звонков передает имя записанного файла (cdr2crm.php)
  3. убедиться, что записи распределяются по папкам: путь_до_папки/год/месяц/день. Если у вас это не так, то надо будет внести изменения в файл api/asterisk/play.php*

Отладка интеграции

Asterisk постоянно развивается и на текущий момент существует в нескольких версиях. SalesMan CRM поставляется с настроенной интеграцией с FreePBX, которая поддерживает всплытие карточки при звонке.

Если у вас установлена другая версия Астериска, то необходимо провести отладку - настроить фильтрацию ответов сервера телефонии и сопоставить их со звонками.

Отладка проводится в файле /api/asterisk*/newpeers.php, поставляемом с открытым кодом и снабженным комментариями.
 

Дополнительно:

  • параметр $timeOut - задает интервал обращения к серверу Астериск.

При отладке также полезно видеть ответы от сервера Астериск. Для этого достаточно раскомментировать строку:

$peersa['debager'] = $debager;

После этого вы сможете видеть ответы сервера в окне телефонии:

Оптимизация нагрузки

Чем больше у вас сотрудников, тем больше запросов на сервер Астериск будет отправляться с заданным интервалом ( $timeOut ). Это приведет к нарушению стабильности работы сервера - ведь каждый пользватель CRM будет постоянно отправлять запросы на сервер Астериск, чтобы узнать о имеющихся звонках. Чтобы этого не происходило, все ответы сервера кэшируются в базу данных, и при запросе от компьютера оператора сначала проверяется "актуальность" кэша.

Поэтому, если в CRM работают одновременно 10 - 20 человек, то на сервер Астериска идет только один запрос о имеющихся в настоящий момент звонках и период проверки можно задать побольше.

Если в CRM одновременно работает 1-3 человека, то имеет смысл этот интервал уменьшить.

Кастомизация окна телефонии

В коробочной версии SalesMan CRM есть возможность внести какие-либо изменения в окно телефонии с помощью javascript. Данные в этом окне формируются с помощью скрипта /js/wokers/asterisk.js


  * - с версии 2020.3 в папке /content/pbx/asterisk/

Видео-пример работы

Видео демонстрирует инициацию звонка из SalesMan CRM через Asterisk PBX.

Видео демонстрирует инициацию звонка из SalesMan CRM через Asterisk PBX.


Что-то не понятно? Задай вопрос: