FreePBX: различия между версиями
Artem (обсуждение | вклад) |
Artem (обсуждение | вклад) |
||
(не показано 68 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
'''FreePBX''' — это бесплатная программная телефонная система, которая позволяет управлять звонками в компании. | {{#seo: | ||
|title=Интеграция с FreePBX | |||
|titlemode=append | |||
|keywords=планфикс, Виртуальные АТС, ватс, телефония, FreePBX, интеграция с FreePBX | |||
|description=Интеграция ПланФикса с FreePBX | |||
}} | |||
'''FreePBX''' — это бесплатная программная [[Виртуальные АТС |телефонная система]], которая позволяет управлять звонками в компании. | |||
== Возможности == | == Возможности == | ||
Строка 12: | Строка 18: | ||
== Подключение == | == Подключение == | ||
FreePBX к ПланФиксу можно подключить 2 способами: | FreePBX к ПланФиксу можно подключить 2 способами: | ||
* | *[[#API ПланФикса для телефоний |API ПланФикса для телефоний]] | ||
*Интеграция FreePBX | *[[#Интеграция FreePBX |Интеграция FreePBX]] | ||
== | == API ПланФикса для телефоний == | ||
*Этим способом можно получать в ПланФикс только события о звонках, т.е. при звонке в активной вкладке ПланФикса появится карточка звонка. | *Этим способом можно получать в ПланФикс только события о звонках, т.е. при звонке в активной вкладке ПланФикса появится карточка звонка. | ||
*Звонить из ПланФикса нельзя. | *Звонить из ПланФикса нельзя. | ||
*Для того, чтобы получить записи звонков необходимо дополнительно настроить apache/nginx (шаг 5). | *Для того, чтобы получить записи звонков необходимо дополнительно настроить apache/nginx (шаг 5). | ||
'''Шаг 1''' | '''Шаг 1''' | ||
На сервере отредактируйте файл /etc/asterisk/extensions_override_freepbx.conf ([https://p.pfx.so/pf/1Q/nAVvO1.txt пример файла]) таким образом, чтобы он обязательно содержал 3 контекста: | На сервере отредактируйте файл /etc/asterisk/extensions_override_freepbx.conf ([https://p.pfx.so/pf/1Q/nAVvO1.txt пример файла]) таким образом, чтобы он обязательно содержал 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 все контексты из [https://p.pfx.so/pf/ZA/wjntV1.txt примера]. Это можно сделать в том числе с помощью интерфейса FreePBX. | |||
'''Шаг 3''' | |||
Добавьте в файл globals_custom.conf 3 строки и замените {…} на соответствующие данные: | |||
*PBX_URL = {…} — URL-адрес вашей АТС | |||
*PF_URL = {…} — адрес для принятия запросов | |||
*PF_KEY = {…} — ключ авторизации (token) ПланФикса | |||
'''Шаг 4''' | |||
*Перейдите в ПланФиксе в Управление аккаунтом — Интеграции — Виртуальные АТС — API ПланФикса для телефоний. | |||
*Заполните адрес АТС, чтобы ПланФикс понимал, что нужно принимать события приходящие с этого сайта или адреса. | |||
'''Шаг 5''' | |||
Для получения записей необходимо настроить доступ к ним извне через веб-сервер. Чтобы сделать это, используя Apache, входящий в FreePBX, добавьте ссылку на папку с записями. У папки должен быть нужный владелец, группа и права — 775. | |||
*Создаем ссылку | |||
:<code>ln -s /var/spool/asterisk/monitor /var/www/html/monitor</code> | |||
*Редактируем права и владельца: | |||
:<code>chmod -R 775 /var/www/html/monitor/</code> | |||
:<code>chown -R asterisk:asterisk /var/www/html/monitor/</code> | |||
Если используется сборка без Apache — сделайте подобную конфигурацию для используемого веб-сервера. | |||
== Интеграция FreePBX == | |||
'''Шаг 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 (в той же папке). Команда: | |||
:<code>ln –s /var/spool/asterisk/monitor /var/spool/asterisk/recording</code> | |||
'''Шаг 6''' | |||
*Перейдите в папку /etc/asterisk/ | |||
*Создайте папку scripts, если еще не создавали | |||
*В папке scripts создайте файл ami_listener.py | |||
'''Шаг 7''' | |||
Заполните файл ami_listener.py по [https://p.pfx.so/pf/Hh/5xElUG.txt примеру], заменяя: | |||
*'''Your_user_name''': на Name из шага 2 | |||
*'''Your_user_password''': на Secret из шага 2 | |||
*'''Your_planfix_endpoint_url''': на URL принимающего скрипта из шага 4 | |||
'''Шаг 8''' | |||
Сделайте файл исполняемым с помощью команды: | |||
<code>chmod +x /etc/asterisk/scripts/ami_listener.py</code> | |||
'''Шаг 9''' | |||
*Перейдите в папку /lib/systemd/system/ | |||
*Создайте файл crm-asterisk-listener.service | |||
*Заполните файл crm-asterisk-listener.service по [https://p.pfx.so/pf/D5/5qESf3.txt примеру] | |||
'''Шаг 10''' | |||
Добавьте файл в автозагрузку и запустите сервис с помощью последовательных команд: | |||
<code>sudo systemctl enable crm-asterisk-listener</code> | |||
<code>sudo systemctl start crm-asterisk-listener</code> | |||
== Дополнительные методы == | |||
Вызов данных методов вы можете реализовать самостоятельно с помощью dialplan. | |||
'''Получение информации об ответственных''' | |||
Вы можете отправить POST-запрос на адрес, указанный в интеграции, который содержит: | |||
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;"> | |||
Content-type: application/json<br> | |||
{"event": "callInfoRespNum", "uniqueId": "уникальный_id_звонка", "intNum": "короткий_номер_АТС", "extNum": "внешний_номер_абонента"}</div> | |||
В ответ получите: | |||
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;"> | |||
{"responsibleNumbers":["короткий_номер_ответственного","короткий_номер_второго_ответственного(если есть)"]}</div> | |||
ИЛИ | |||
Если у контакта: | |||
:*нет ответственных | |||
:*не назначены короткие номера | |||
:*ответственным является сотрудник, на номер которого звонили ("короткий_номер_АТС") | |||
Тогда ответ будет содержать: | |||
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;">{"error":"no persons responsible"}</div> | |||
'''Оповещение о пропущенном вызове''' | |||
*Для работы метода в настройках интеграции выберите пункт — «Фиксировать пропущенные звонки только отдельным специальным запросом»: | |||
https://p.pfx.so/pf/C4/jne6d7.png | |||
Вы можете отправить POST-запрос на адрес, указанный в интеграции, который содержит: | |||
<div style="display: block; padding: 1em; margin: 0 0 10px; font-size: 13px; line-height: 1.65; color: black; word-wrap: break-word; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px;"> | |||
Content-type: application/json<br> | |||
{"event": "callMissedNotify", "uniqueId": "уникальный_id_звонка", "intNum": "короткий_номер_АТС_на_который_будет_отправлено_сообщение_о_пропущенном_вызове", "extNum": "внешний_номер_абонента"} | |||
</div> | |||
Если сотрудник с данным коротким номером существует, ему отправится уведомление о пропущенном вызове. | |||
Ответ на POST-запрос будет пустым. | |||
== Особенности работы == | |||
*Для корректной работы скрипта убедитесь, что у вас установлена библиотека "panoramisk". Она устанавливается командой 'pip install panoramisk'. | |||
*Если скрипт сразу не заработал или после выполнения команд вы внесли изменения в ami_listener, могут помочь такие команды: | |||
:<code>sudo systemctl daemon-reload</code> | |||
:<code>sudo systemctl restart crm-asterisk-listener</code> | |||
*Если необходимо отключить интеграцию, выполните команды: | |||
:<code>sudo systemctl stop crm-asterisk-listener</code> | |||
:<code>sudo systemctl disable crm-asterisk-listener</code> | |||
*Во всех способах подключения у вас должны быть настроены: | |||
**внутренние номера (Extensions) | |||
**входящая и исходящая маршрутизация (Inbound/Outbound Routes) | |||
== Перейти == | |||
*[[Виртуальные АТС]] | |||
*[[Интеграции]] |
Текущая версия от 09:17, 20 сентября 2024
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
Шаг 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)