FreePBX: различия между версиями
Artem (обсуждение | вклад) Нет описания правки |
Artem (обсуждение | вклад) |
||
(не показано 37 промежуточных версий 2 участников) | |||
Строка 5: | Строка 5: | ||
|description=Интеграция ПланФикса с FreePBX | |description=Интеграция ПланФикса с FreePBX | ||
}} | }} | ||
'''FreePBX''' — это бесплатная программная | '''FreePBX''' — это бесплатная программная [[Виртуальные АТС |телефонная система]], которая позволяет управлять звонками в компании. | ||
== Возможности == | == Возможности == | ||
Строка 18: | Строка 18: | ||
== Подключение == | == Подключение == | ||
FreePBX к ПланФиксу можно подключить 2 способами: | FreePBX к ПланФиксу можно подключить 2 способами: | ||
*[[# | *[[#API ПланФикса для телефоний |API ПланФикса для телефоний]] | ||
*Интеграция FreePBX | *[[#Интеграция FreePBX |Интеграция FreePBX]] | ||
== | == API ПланФикса для телефоний == | ||
*Этим способом можно получать в ПланФикс только события о звонках, т.е. при звонке в активной вкладке ПланФикса появится карточка звонка. | *Этим способом можно получать в ПланФикс только события о звонках, т.е. при звонке в активной вкладке ПланФикса появится карточка звонка. | ||
*Звонить из ПланФикса нельзя. | *Звонить из ПланФикса нельзя. | ||
Строка 62: | Строка 62: | ||
'''Шаг 5''' | '''Шаг 5''' | ||
Для получения записей необходимо настроить доступ к ним извне через веб-сервер. Чтобы сделать это, используя Apache, входящий в FreePBX, добавьте ссылку на папку с записями. У папки должен быть нужный владелец, группа и права — 775. | |||
*Создаем ссылку | *Создаем ссылку | ||
:<code>ln -s /var/spool/asterisk/monitor /var/www/html/monitor</code> | :<code>ln -s /var/spool/asterisk/monitor /var/www/html/monitor</code> | ||
Строка 70: | Строка 70: | ||
:<code>chmod -R 775 /var/www/html/monitor/</code> | :<code>chmod -R 775 /var/www/html/monitor/</code> | ||
:<code>chown -R asterisk:asterisk /var/www/html/monitor/</code> | :<code>chown -R asterisk:asterisk /var/www/html/monitor/</code> | ||
Если используется сборка без Apache — сделайте подобную конфигурацию для используемого веб-сервера. | |||
== Интеграция FreePBX == | == Интеграция FreePBX == | ||
'''Шаг 1''' | '''Шаг 1''' | ||
Откройте FreePBX и добавьте пользователя: Settings — Asterisk REST Interface Users — Add User. Заполните следующие поля: | Откройте FreePBX и добавьте пользователя: Settings — Asterisk REST Interface Users — Add User. | ||
Заполните следующие поля: | |||
*'''REST Interface User Name''': Имя пользователя | *'''REST Interface User Name''': Имя пользователя | ||
*'''REST Interface User Password''': Пароль | *'''REST Interface User Password''': Пароль | ||
Строка 88: | Строка 93: | ||
*'''Name''': Имя | *'''Name''': Имя | ||
*'''Secret''': Оставьте по умолчанию или добавьте свой | *'''Secret''': Оставьте по умолчанию или добавьте свой | ||
*Остальные пункты | *Остальные пункты лучше не трогать. | ||
Скопируйте (понадобится в шаге 4 и 6) и сохраните. | Скопируйте (понадобится в шаге 4 и 6) и сохраните. | ||
Строка 100: | Строка 105: | ||
'''Шаг 4''' | '''Шаг 4''' | ||
Перейдите в ПланФиксе в Управление аккаунтом — Интеграции — Виртуальные АТС — FreePBX. | Перейдите в ПланФиксе в Управление аккаунтом — Интеграции — Виртуальные АТС — FreePBX. | ||
Заполните данные: | |||
*'''AMI Name''': Name из шага 2 | *'''AMI Name''': Name из шага 2 | ||
*'''AMI Secret''': Secret из шага 2 | *'''AMI Secret''': Secret из шага 2 | ||
Строка 114: | Строка 120: | ||
На сервере: | На сервере: | ||
* | *В папке /var/spool/asterisk/ создайте ссылку с названием recording на папку с названием monitor (в той же папке). Команда: | ||
<code>ln –s | :<code>ln –s /var/spool/asterisk/monitor /var/spool/asterisk/recording</code> | ||
Строка 157: | Строка 162: | ||
<code>sudo systemctl start 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, могут помочь такие команды: | *Если скрипт сразу не заработал или после выполнения команд вы внесли изменения в ami_listener, могут помочь такие команды: | ||
:<code>sudo systemctl daemon-reload</code> | :<code>sudo systemctl daemon-reload</code> |
Текущая версия от 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)