Як підключити Asterisk і FreePBX до Elbuz: AMI, діалплан і журнал дзвінків

9 хв

Звʼязка Asterisk CRM з Elbuz працює на вашому сервері: Elbuz ставить дзвінки з картки клієнта через AMI, а готовий фрагмент діалплану сам передає в Elbuz кожен дзвінок. Підходить для Asterisk, FreePBX та Issabel.

Коли це знадобиться:

  • Менеджер не знає, хто дзвонить — діалплан бере імʼя клієнта з Elbuz і показує його на телефоні.
  • Номер доводиться набирати вручну — кнопка «Подзвонити» в картці: Asterisk зʼєднує спершу менеджера, потім клієнта.
  • Пропущені дзвінки губляться — пропущений стає задачею «Перетелефонувати» в «Пульсі».
  • Менеджери зайняті — адміністратор спрямовує номер на голосового AI-співробітника.

З чого почати: попросіть адміністратора сервера завести користувача AMI (що саме).

Що вміє Elbuz з Asterisk

  • Імʼя клієнта на телефоні — діалплан питає його в Elbuz за номером (що приходить).
  • Дзвінок з картки клієнта одною кнопкою — через AMI, з вибраного номера (як іде дзвінок).
  • Журнал дзвінків — вхідні й вихідні з діалплану, з менеджером, який справді говорив (як визначається менеджер).
  • Картка вхідного і пропущеного дзвінка — місто клієнта, останні замовлення, задача «Перетелефонувати» (картка дзвінка).
  • AI-співробітник на номері — переадресацію налаштовує адміністратор сервера (голосовий AI).

Де це і хто має доступ

Підключення Asterisk живе серед інших інтеграцій, а не в журналі дзвінків. Вікно з рядка оператора називається «Налаштування доступу до API зовнішніх сервісів».

Меню
Кабінет → Налаштування системи → «Інші налаштування» → «Зовнішні сервіси та інтеграції» → «Телефонія» → «Asterisk / FreePBX»
Інші входи
«Журнал дзвінків» → меню-бургер → «Підключення телефонії»
Право доступу
налаштування системи і вікно «Журнал дзвінків»; щоб дзвонити, права не потрібні
Підготувати
публічну адресу Asterisk, користувача AMI, доступ адміністратора до діалплану

Без права на «Журнал дзвінків» не працюють «Перевірити підключення» і файл налаштування.

Що потрібно від Asterisk

Користувача AMI заводить адміністратор сервера. За документацією Asterisk AMI налаштовується у файлі manager.conf:

  1. У секції [general] — enabled = yes; порт за замовчуванням 5038 (параметр port).
  2. Окрема секція користувача, наприклад [elbuz], з паролем secret.
  3. У write цього користувача має бути клас originate — без нього Asterisk не дасть поставити дзвінок.
  4. Перечитайте конфігурацію менеджера на сервері.

Доступ до AMI обмежують параметрами permit / deny; документація Asterisk радить не відкривати AMI в інтернет без захисту. Адрес серверів Elbuz для такого списку в документації Elbuz немає — уточніть їх у підтримки Elbuz.

У FreePBX користувачів AMI зазвичай заводять через веб-інтерфейс; точний пункт меню у вашій версії уточніть у документації FreePBX.

Сервер має бути доступний з інтернету: на адреси локальної мережі Elbuz не ходить, адресу AMI програма перевіряє й службові діапазони відкидає. А сам Asterisk має діставати до адреси Elbuz по HTTPS — інакше CURL() у діалплані повертатиме порожньо.

Джерела — офіційна документація Asterisk:

Як підключити Asterisk до Elbuz

Три кроки по черзі: ключі, внутрішні номери і фрагмент діалплану. Без внутрішніх номерів не працює кнопка «Подзвонити». Без фрагмента журнал лишиться порожнім: щогодинної звірки для Asterisk немає.

Крок перший: ключі Asterisk

Відкрийте рядок «Asterisk / FreePBX» у групі «Телефонія». Перемикач «Активність» уже ввімкнено. Поля, які вписуєте:

Поле у форміЩо вписати
«Адреса AMI (хост:порт)»публічна адреса сервера і порт, наприклад pbx.company.com:5038; без порту береться 5038
«Користувач і секрет AMI»через двокрапку: elbuz:секрет
«Номер лінії для вихідних»номер, який побачить клієнт (Caller ID); порожньо — як вирішить діалплан
«Канал співробітника»як набирати внутрішній номер; за замовчуванням Local/{ext}@from-internal, інші приклади з підказки — PJSIP/{ext}, SIP/{ext}
«Контекст діалплану»контекст, з якого дозволені вихідні; за замовчуванням from-internal, як у FreePBX
Картка «Підключення телефонії» у формі Asterisk / FreePBX
1Посилання на інструкцію
2Перемикач «Активність»
3Поле «Адреса AMI (хост:порт)»
4Поле «Користувач і секрет AMI»
5Поле «Канал співробітника»
6Поле «Контекст діалплану»
7Поле «Номер лінії для вихідних»
8Кнопка «Перевірити підключення»
  1. Посилання «Де саме — покроково в інструкції для вашого оператора» — веде на цю сторінку.
  2. Перемикач «Активність» — інтеграція ввімкнена.
  3. Поле «Адреса AMI (хост:порт)» — публічна адреса сервера; без порту береться 5038.
  4. Поле «Користувач і секрет AMI» — через двокрапку.
  5. Поле «Канал співробітника» — за замовчуванням Local/{ext}@from-internal.
  6. Поле «Контекст діалплану» — за замовчуванням from-internal.
  7. Поле «Номер лінії для вихідних» — стає Caller ID для клієнта.
  8. Кнопка «Перевірити підключення» — читальний запит до оператора, у кабінеті нічого не змінює.

Форма зберігається сама приблизно через секунду після правки: унизу видно «Збереження...», потім «Збережено». Кнопки «Зберегти» немає.

Наприкінці натисніть «Перевірити підключення». Elbuz лише входить у AMI, не виконуючи жодної дії. Список внутрішніх номерів з Asterisk не запитується, тож відповідь буде «Звʼязок з АТС встановлено. Співробітників в АТС: 0». Помилки порту й логіна — у розборі проблем.

Крок другий: внутрішні номери

Коли менеджер натискає «Подзвонити», Asterisk спершу телефонує на його внутрішній номер і лише після відповіді набирає клієнта. Той самий номер привʼязує дзвінки в журналі до менеджера.

Де: картка співробітника («Користувачі (співробітники)») → поле «Телефон внутрішній».

Номер Elbuz підставляє замість {ext} у «Канал співробітника». З каналом за замовчуванням номер 101 перетвориться на Local/101@from-internal. Під формою підключення картка «Внутрішні номери співробітників» показує, кому номер ще не вписали.

Крок третій: фрагмент діалплану на сервері

Замість адреси вебхука у формі картка «Файл налаштування для АТС» з кнопкою «Завантажити файл налаштування». Файл elbuz-asterisk.conf — готовий фрагмент діалплану з адресою Elbuz і секретним ключем усередині. Інструкція записана в ньому ж:

  1. Вставте блок у /etc/asterisk/extensions_custom.conf.
  2. У контексті вхідних перед Dial додайте same => n,Gosub(elbuz-lookup,s,1(${CALLERID(num)},in,<внутрішній номер, куди йде дзвінок>)), а в його h-розширенні — exten => h,1,Gosub(elbuz-report,s,1(${CALLERID(num)},in,)).
  3. У контексті вихідних перед Dial — same => n,Gosub(elbuz-lookup,s,1(${EXTEN},out,${CALLERID(num)})), у h-розширенні — exten => h,1,Gosub(elbuz-report,s,1(${CDR(dst)},out,${CALLERID(num)})).
  4. Перечитайте діалплан: asterisk -rx "dialplan reload".
Картка «Файл налаштування для АТС» у формі Asterisk / FreePBX
1Кнопка «Завантажити файл налаштування»
  1. Кнопка «Завантажити файл налаштування» — готовий файл з адресою й ключем усередині.

У файлі зашита адреса Elbuz із ключем і хост, з якого ви відкрили форму. Змінили домен або створили сервіс у списку заново — завантажте файл ще раз і замініть блок на сервері.

Якщо ви вставляли фрагмент раніше — замініть його новим із форми. У старому виклики були однакові для вхідних і вихідних: вхідні лягали без менеджера, вихідні — як вхідні, а час дзвінка був часом його завершення.

Щоб Asterisk запрацював з Elbuz

Що приходить у Elbuz

Усе нижче звірено з модулем інтеграції Asterisk в Elbuz, написаним за документацією AMI.

МожливістьЯк це працює з Asterisk
Дзвінок з картки й журналу («Подзвонити»)так, через AMI Originate: Asterisk дзвонить на канал менеджера, після відповіді набирає клієнта; чекає 30 секунд
Вхідні й вихідні в журналітак, лише з подій діалплану; кожен напрямок підключається своїми рядками з файла налаштування
Імʼя клієнта на екрані телефонутак: діалплан питає імʼя в Elbuz і ставить його в CALLERID(name)
Картка вхідного дзвінка в Elbuzтак: внутрішній номер співробітника передає третій аргумент виклику elbuz-lookup
Запис розмовині: запис лежить файлом на вашому сервері; AI-розбору теж немає
Щогодинна звірка журналуні: історії через API в Asterisk немає (журнал без звірки)
Номер для клієнтатак: «Номер лінії для вихідних» стає Caller ID
Голосовий AI-співробітникналаштовує адміністратор сервера (нижче)
Скинути дзвінок з картки вхідногоні: кнопки «Скинути» для Asterisk у картці немає

Фрагмент діалплану робить два виклики. Аргументи в них однакові: перший — номер клієнта, другий — напрямок (in чи out), третій — внутрішній номер співробітника.

  • elbuz-lookup перед Dial питає в Elbuz, хто телефонує: імʼя потрапляє в CALLERID(name) на телефон, а в Elbuz у співробітника спливає картка клієнта.
  • elbuz-report після завершення передає в журнал номер, напрямок, статус, тривалість розмови, час очікування (загальна тривалість мінус розмова), час початку дзвінка й ідентифікатор.

Фрагмент використовує функцію CURL() зі стандартної збірки Asterisk.

Особливості Asterisk

Журнал без звірки

У хмарних операторів пропущену подію добирає щогодинна звірка. В Asterisk історія дзвінків (CDR) лежить у базі на вашому сервері, і через API її не взяти, тому звірка до Asterisk не ходить. Якщо діалплан не викликав Elbuz — дзвінка в журналі не буде ніколи. Повтор того самого звіту дубля не створить: дзвінок розпізнається за його ідентифікатором.

Як визначається менеджер

Внутрішній номер співробітника фрагмент передає третім аргументом. У вхідному дзвінку перед Dial ви самі вказуєте, на який внутрішній номер іде дзвінок, — за ним у співробітника спливає картка. Після розмови, у h-розширенні, номер береться з каналу, який відповів: якщо дзвінок перевели, у журнал потрапить той, хто справді говорив.

У вихідному внутрішній номер — це ${CALLERID(num)} співробітника, а номер клієнта — ${EXTEN} до набору і ${CDR(dst)} після.

Результат дзвінка

Статус береться з DIALSTATUS Asterisk. Невідомий статус визначається за тривалістю розмови.

DIALSTATUS«Результат» у журналі Elbuz
ANSWER«Відбувся»
BUSY«Зайнято»
NOANSWER«Не відповіли»
CANCEL«Скасований»
CONGESTION, CHANUNAVAIL«Збій звʼязку»

Як іде дзвінок з кнопки

Elbuz відкриває коротку сесію AMI, віддає Originate з каналом співробітника, контекстом і номером клієнта та одразу виходить, не чекаючи відповіді. Якщо Asterisk відхилив команду, ви побачите його причину з поля Message.

Голосовий AI-співробітник на номері Asterisk

AI-співробітник Elbuz уміє сам відповідати на дзвінки і сам телефонувати клієнтам. Розмову веде не ваша АТС, а голосова платформа Elbuz, і номер треба на неї спрямувати. Налаштування розділу «Голос по телефону» — у статті Голосовий AI-співробітник.

Спрямувати номер на AI налаштовує адміністратор вашого Asterisk. У розділі «Голос по телефону» вкажіть номер, оберіть оператора «Інший оператор» і скопіюйте адресу виду <номер>@<SIP-домен>. Документація Asterisk дозволяє набрати довільну SIP-адресу через наявний PJSIP-ендпойнт: Dial(PJSIP/<ендпойнт>/sip:<номер>@<SIP-домен>). Готового фрагмента діалплану для голосу Elbuz не дає.

У поле «Адреси оператора» впишіть публічну IP-адресу або домен свого сервера — тоді Elbuz прийматиме дзвінки на SIP-адресу тільки з нього. Домен Elbuz перетворює на IP під час збереження розділу; якщо IP сервера зміниться, змініть будь-яке поле розділу «Голос», щоб він зберігся заново. Порожнє поле — з будь-якої адреси.

Для вихідних дзвінків AI у блоці «Вихідні дзвінки» потрібні «SIP-сервер» (адреса вашого Asterisk), «Логін лінії» і «Пароль лінії» — SIP-обліковий запис, на якому AI зареєструється як телефон. Його заводить адміністратор так само, як для звичайного SIP-телефона. Для «Іншого оператора» SIP-сервер обовʼязковий.

Вихідні працюють тільки тоді, коли ввімкнено «Відповідати на дзвінки»: інакше пробний дзвінок відповість «Вихідні не налаштовані: вкажіть логін і пароль лінії та увімкніть відповідь на дзвінки». За замовчуванням AI дзвонить з 9 до 20 за часом акаунта — поле «Дзвонити в години».

Сценарії

Підключити FreePBX у типовій установці

  1. Адміністратор заводить користувача AMI з класом originate і відкриває порт 5038 ззовні (що потрібно).
  2. У формі — адреса, користувач:секрет; «Канал співробітника» і «Контекст діалплану» лишаються за замовчуванням.
  3. Фрагмент діалплану — в extensions_custom.conf, виклики Gosub — у контексти вхідних і вихідних (крок третій).
  4. Пробний дзвінок на номер компанії — і він у журналі.

Дзвінок перевели на колегу

Вхідний пішов на 101, менеджер перевів його на 102. Картка спливає у співробітника з номером 101, а в журнал дзвінок лягає з менеджером 102 — номер береться з каналу, який відповів (як визначається менеджер).

Пропущений дзвінок не губиться

Менеджер не взяв слухавку — спливає картка «Пропущений дзвінок», а в «Пульсі» зʼявляється задача «Перетелефонувати». У журналі такі дзвінки відбирає «Тільки пропущені». Детальніше: пропущені дзвінки.

Що робити, коли Asterisk не працює з Elbuz

Загальні проблеми телефонії — немає кнопки дзвінка, порожній журнал — розібрано в статті Телефонія в Elbuz. Тут — те, що стосується Asterisk.

Що програма каже і що з цим робити
Що ви бачитеЧому такЩо зробити
Кнопки «Подзвонити» немає ні в списку контактів, ні в картці Ключі не вписані або перемикач «Активність» вимкнено — кнопки дзвінка тоді не малюються зовсім Перевірте поля й перемикач у формі підключення (крок перший)
«У вашій картці співробітника не вказано внутрішній номер телефону» Порожнє поле «Телефон внутрішній» у вашій картці: АТС нікуди дзвонити першим кроком Впишіть номер у картку співробітника (крок другий)
«АТС відхилила запит: not an Asterisk AMI port» За вказаними хостом і портом відповідає не AMI Перевірте порт AMI (за замовчуванням 5038) і що він відкритий ззовні
«АТС відхилила запит: AMI login rejected (check user and secret)» Невірний користувач або секрет AMI, чи вони записані не через двокрапку Перевірте пару користувач:секрет у конфігурації AMI
«АТС відхилила запит: PBX address must be a public host» Адреса AMI веде в локальну мережу або не розвʼязується в публічну Вкажіть публічну адресу сервера
Журнал порожній, хоча дзвінки йдуть Фрагмент діалплану не вставлено, не додано виклики Gosub або діалплан не перечитано Пройдіть три кроки з файла налаштування й перевірте, що сервер дістає до адреси Elbuz по HTTPS

Часті запитання

З якими АТС на базі Asterisk працює інтеграція?

З Asterisk, FreePBX та Issabel: важливі лише доступ до AMI і можливість вставити фрагмент діалплану.

Що вписати в «Канал співробітника» і «Контекст діалплану»?

У більшості установок FreePBX — значення, що стоять у полях за замовчуванням. Для PJSIP чи SIP без FreePBX візьміть варіант PJSIP або SIP з підказки під полем «Канал співробітника» (крок перший).

Чому в журналі немає дзвінків за час, коли сервер був недоступний?

Для Asterisk немає щогодинної звірки: історія дзвінків лежить у базі вашого сервера, і через API її не взяти. Журнал наповнюють тільки події з діалплану.

Чи працює інтеграція, якщо Asterisk стоїть у закритій мережі офісу?

Ні. AMI має бути доступний з інтернету за публічною адресою, а сервер — діставати до Elbuz по HTTPS (що потрібно).

Чи можна прослухати запис розмови з Asterisk?

Ні. Запис лежить файлом на вашому сервері, і посилання на нього Elbuz зібрати не може. Кнопки прослуховування й AI-розбору для Asterisk немає.

Чи є готовий діалплан для голосового AI?

Ні. Переадресацію номера на SIP-адресу AI налаштовує адміністратор сервера (голосовий AI).

Суміжні теми

Чи була стаття корисною?