FreePBX
FreePBX — это бесплатная программная телефонная система, которая позволяет управлять звонками в компании.
Возможности
- Телефонные звонки через интернет: использует технологию VoIP, что позволяет совершать звонки через интернет вместо обычной телефонной сети.
- Автоматическое распределение звонков: помогает автоматически направлять входящие звонки на нужные номера или отделы внутри компании.
- Голосовые меню: Можно настроить интерактивные голосовые меню, чтобы звонящий мог выбрать нужный отдел, нажимая цифры на телефоне.
- Голосовая почта: Если никто не может ответить на звонок, FreePBX может записать сообщение голосовой почты, которое потом можно прослушать.
- Конференц-связь: Можно организовывать конференц-звонки, чтобы несколько человек могли одновременно участвовать в разговоре.
- Запись звонков: Можно записывать телефонные разговоры для последующего прослушивания или анализа.
- Интеграция с другими системами: FreePBX можно интегрировать с различными CRM-системами, в том числе с ПланФиксом.
Подключение
FreePBX к ПланФиксу можно подключить 2 способами:
API ПланФикса для телефоний
- Этим способом можно получать в ПланФикс только события о звонках, т.е. при звонке в активной вкладке ПланФикса появится карточка звонка.
- Звонить из ПланФикса нельзя.
- Для того, чтобы получить записи звонков необходимо дополнительно настроить apache/nginx (шаг 5).
Шаг 1
На сервере отредактируйте файл /etc/asterisk/extensions_override_freepbx.conf (пример файла) таким образом, чтобы он обязательно содержал 3 контекста:
- [macro-dialout-one-predial-hook]
- [macro-dialout-trunk-predial-hook]
- [macro-hangupcall]
Для [macro-hangupcall] необязателен вид, как в примере.
Найдите в файле extensions_additional.conf контекст [macro-hangupcall] — скопируйте его — в самое начало добавьте строку:
exten => s,1,Macro(hangupcall-send-post)
Шаг 2
Скопируйте в файл extension_custom.conf все контексты из примера. Это можно сделать в том числе с помощью интерфейса FreePBX.
Шаг 3
Добавьте в файл globals_custom.conf 3 строки и замените {…} на соответствующие данные:
- PBX_URL = {…} — URL-адрес вашей АТС
- PF_URL = {…} — адрес для принятия запросов
- PF_KEY = {…} — ключ авторизации (token) ПланФикса
Шаг 4
- Перейдите в ПланФиксе в Управление аккаунтом — Интеграции — Виртуальные АТС — API ПланФикса для телефоний.
- Заполните адрес АТС, чтобы ПланФикс понимал, что нужно принимать события приходящие с этого сайта или адреса.
Шаг 5
Для получения записей необходимо настроить доступ к ним извне через веб-сервер. Чтобы сделать это, используя Apache, входящий в FreePBX, добавьте ссылку на папку с записями. У папки должен быть нужный владелец, группа и права — 775.
- Создаем ссылку
ln -s /var/spool/asterisk/monitor /var/www/html/monitor
- Редактируем права и владельца:
chmod -R 775 /var/www/html/monitor/
chown -R asterisk:asterisk /var/www/html/monitor/
Если используется сборка без Apache — сделайте подобную конфигурацию для используемого веб-сервера.
Интеграция FreePBX
Перед началом в файл кастомных настроек extensions_custom.conf вставьте следующее:
[from-internal-custom] exten => _X.,1,NoOp(Outgoing call from ${CALLERID(all)} to ${EXTEN}) exten => _X.,n,Set(__CRM_DIRECTION=OUTBOUND) exten => _X.,n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION}) [from-pstn-custom] exten => _X.,1,NoOp(Incoming call to ${EXTEN} from ${CALLERID(all)}) exten => _X.,n,Set(__CRM_DIRECTION=INBOUND) exten => _X.,n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
Шаг 1
Откройте FreePBX и добавьте пользователя: Settings — Asterisk REST Interface Users — Add User.
Заполните следующие поля:
- REST Interface User Name: Имя пользователя
- REST Interface User Password: Пароль
- Password Type: Plain Text
- Read Only: No
Скопируйте (понадобится в шаге 4) и сохраните.
Шаг 2
Добавьте менеджера: Settings — Asterisk Manager Users — Add Manager:
- Name: Имя
- Secret: Оставьте по умолчанию или добавьте свой
- Остальные пункты лучше не трогать.
Скопируйте (понадобится в шаге 4 и 6) и сохраните.
Шаг 3
Сохраните настройки, нажав Apply Config в правом верхнем углу.
Шаг 4
Перейдите в ПланФиксе в Управление аккаунтом — Интеграции — Виртуальные АТС — FreePBX.
Заполните данные:
- AMI Name: Name из шага 2
- AMI Secret: Secret из шага 2
- PBX address: URL-адрес вашей АТС
- ARI User Name: Name из шага 1
- ARI User Password: Password из шага 1
Скопируйте URL принимающего скрипта и сохраните интеграцию.
Шаг 5
На сервере:
- В папке /var/spool/asterisk/ создайте ссылку с названием recording на папку с названием monitor (в той же папке). Команда:
ln –s /var/spool/asterisk/monitor /var/spool/asterisk/recording
Шаг 6
- Перейдите в папку /etc/asterisk/
- Создайте папку scripts, если еще не создавали
- В папке scripts создайте файл ami_listener.py
Шаг 7
Заполните файл ami_listener.py по примеру, заменяя:
- Your_user_name: на Name из шага 2
- Your_user_password: на Secret из шага 2
- Your_planfix_endpoint_url: на URL принимающего скрипта из шага 4
Шаг 8
Сделайте файл исполняемым с помощью команды:
chmod +x /etc/asterisk/scripts/ami_listener.py
Шаг 9
- Перейдите в папку /lib/systemd/system/
- Создайте файл crm-asterisk-listener.service
- Заполните файл crm-asterisk-listener.service по примеру
Шаг 10
Добавьте файл в автозагрузку и запустите сервис с помощью последовательных команд:
sudo systemctl enable crm-asterisk-listener
sudo systemctl start crm-asterisk-listener
Дополнительные методы
Вызов данных методов вы можете реализовать самостоятельно с помощью dialplan.
Получение информации об ответственных
Вы можете отправить POST-запрос на адрес, указанный в интеграции, который содержит:
Content-type: application/json
В ответ получите:
ИЛИ
Если у контакта:
- нет ответственных
- не назначены короткие номера
- ответственным является сотрудник, на номер которого звонили ("короткий_номер_АТС")
Тогда ответ будет содержать:
Оповещение о пропущенном вызове
- Для работы метода в настройках интеграции выберите пункт — «Фиксировать пропущенные звонки только отдельным специальным запросом»:
Вы можете отправить POST-запрос на адрес, указанный в интеграции, который содержит:
Content-type: application/json
{"event": "callMissedNotify", "uniqueId": "уникальный_id_звонка", "intNum": "короткий_номер_АТС_на_который_будет_отправлено_сообщение_о_пропущенном_вызове", "extNum": "внешний_номер_абонента"}
Если сотрудник с данным коротким номером существует, ему отправится уведомление о пропущенном вызове.
Ответ на POST-запрос будет пустым.
Особенности работы
- Для корректной работы скрипта убедитесь, что у вас установлена библиотека "panoramisk". Она устанавливается командой 'pip install panoramisk'.
- Если скрипт сразу не заработал или после выполнения команд вы внесли изменения в ami_listener, могут помочь такие команды:
sudo systemctl daemon-reload
sudo systemctl restart crm-asterisk-listener
- Если необходимо отключить интеграцию, выполните команды:
sudo systemctl stop crm-asterisk-listener
sudo systemctl disable crm-asterisk-listener
- Во всех способах подключения у вас должны быть настроены:
- внутренние номера (Extensions)
- входящая и исходящая маршрутизация (Inbound/Outbound Routes)