FreePBX

Матеріал з Planfix
Перейти до: навігація, пошук

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

{"event": "callInfoRespNum", "uniqueId": "унікальний_id_дзвінка", "intNum": "короткий_номер_АТС", "extNum": "зовнішній_номер_абонента"}

У відповідь ви отримаєте:

{"responsibleNumbers":["короткий_номер_відповідального","короткий_номер_другого_відповідального(якщо є)"]}

АБО

Якщо у контакта:

  • немає відповідальних
  • не призначені короткі номери
  • відповідальним є співробітник, на номер якого дзвонили ("короткий_номер_АТС")

Тоді відповідь міститиме:

{"error":"no persons responsible"}

Повідомлення про пропущений виклик

  • Для роботи методу в налаштуваннях інтеграції оберіть пункт — «Фіксувати пропущені дзвінки тільки окремим спеціальним запитом»:

jne6d7.png

Ви можете надіслати 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)

Перейти