FreePBX
FreePBX — це безкоштовна програмна телефонна система, яка дозволяє керувати викликами в компанії.
Можливості
- Телефонні дзвінки через інтернет: використовує технологію VoIP, що дозволяє здійснювати дзвінки через інтернет замість звичайної телефонної мережі.
- Автоматичне розподілення дзвінків: допомагає автоматично спрямовувати вхідні дзвінки на потрібні номери або відділи всередині компанії.
- Голосові меню: Можна налаштувати інтерактивні голосові меню, щоб абонент міг обрати потрібний відділ, натискаючи цифри на телефоні.
- Голосова пошта: Якщо ніхто не може відповісти на дзвінок, FreePBX може записати повідомлення голосової пошти, яке потім можна прослухати.
- Конференц-звʼязок: Можна організовувати конференц-дзвінки, щоб кілька людей могли одночасно брати участь у розмові.
- Запис дзвінків: Можна записувати телефонні розмови для подальшого прослуховування або аналізу.
- Інтеграція з іншими системами: FreePBX можна інтегрувати з різними CRM-системами, зокрема з Planfix.
Підключення
FreePBX до Planfix можна підключити 2 способами:
Зверніть увагу, команда Planfix не займається налаштуванням Asterisk на стороні клієнта і не консультує з таких питань.
API ПланФикса для телефоний
- Цим способом у Planfix можна отримувати лише події про дзвінки, тобто при дзвінку в активній вкладці Planfix зʼявиться картка дзвінка.
- Дзвонити з Planfix не можна.
- Для того, щоб отримати записи дзвінків, необхідно додатково налаштувати 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) Planfix
Крок 4
- Перейдіть у Planfix: Керування акаунтом — Інтеграції — Віртуальні АТС — API ПланФикса для телефоний.
- Заповніть адресу АТС, щоб Planfix розумів, що потрібно приймати події, які приходять з цього сайту або адреси.
Крок 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
(FreePBX 16+ / Asterisk 18+)
Перед початком у файл кастомних налаштувань extensions_override_freepbx.conf вставте наступне:
[macro-dialout-trunk-predial-hook]
exten => s,1,Gosub(planfix-mark-outbound,s,1)
same => n,MacroExit()
[planfix-mark-outbound]
exten => s,1,NoOp(Outgoing call from ${CALLERID(all)} to ${EXTEN})
same => n,Set(__CRM_DIRECTION=OUTBOUND)
same => n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
same => n,Return()
[macro-dialout-one-predial-hook]
exten => s,1,Gosub(planfix-mark-inbound,s,1)
same => n,MacroExit()
[macro-dial-ringall-predial-hook]
exten => s,1,Gosub(planfix-mark-inbound,s,1)
same => n,MacroExit()
[planfix-mark-inbound]
exten => s,1,NoOp(Incoming call to ${EXTEN} from ${CALLERID(all)})
same => n,Set(__CRM_DIRECTION=INBOUND)
same => n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
same => n,Return()
Крок 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
Перейдіть у Planfix: Керування акаунтом — Інтеграції — Віртуальні АТС — FreePBX.
Заповніть дані:
- PBX address: URL-адреса вашої АТС (разом з протоколом і портом, по якому доступний ARI)
- 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
Робота з Asterisk старіших версій
Для Asterisk версії 13+ потрібно прописати в конфігураційних файлах додаткові властивості.
Для /etc/asterisk/cdr.conf
[general] enable = yes batch = no unanswered = yes
Для /etc/asterisk/cdr_manager.conf
[general] enable = yes unanswered = yes
При цьому отримання записів дзвінків працюватиме лише для Asterisk 14+
Додаткові методи
Виклик цих методів ви можете реалізувати самостійно за допомогою 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-reloadsudo systemctl restart crm-asterisk-listener
- Якщо потрібно відключити інтеграцію, виконайте команди:
sudo systemctl stop crm-asterisk-listenersudo systemctl disable crm-asterisk-listener
- У всіх способах підключення у вас повинні бути налаштовані:
- внутрішні номери (Extensions)
- вхідна та вихідна маршрутизація (Inbound/Outbound Routes)