Динамические конференции на Asterisk 16 + FreePBX 14

 В порядке рабочей необходимости поставилась задача по реализации динамических конференций на FreePBX. Из функционала должна быть возможность перевода активного разговора в конференцию, возможность приглашать новых участников в созданную динамическую конференцию находясь в ней, а так же возможность самостоятельному подключения к активной динамической конференции.

 

В интернете есть несколько примеров реализации подобного рода задачи, но я решил реализовать по своему и так как мне нужно. Итак все ниже описанные действия производились на Asterisk 16 + FreePBX 14 + phpAGI.

— Техническое задание:
  • В активном разговоре нажать *7 — создание и перевод участников разговора в конференцию.
  • В конференции нажать *7 — после гудка набрать номер кого хотим пригласить в конференцию и нажимаем #.
  • Набрать внутренний номер с префиксом *7 (прим. *71100) — если конференция с набранным номером (прим. 1100) существует, то будет присоединение к ней, в противном случае будет создана новая конференция.
Создаем скрипт /var/lib/asterisk/agi-bin/conference.php со следующим содержанием:


Выдаем права на чтение и запуск для asterisk:


 

 

Прописываем динамическую функцию запуска скрипта, по нажатию комбинации *7 из активного разговора. В файл /etc/asterisk/features_applicationmap_custom.conf добавляем:

 

Объявляем прописанную динамическую функцию в глобальные переменные. В файл /etc/asterisk/globals_custom.conf добавляем:

 

Модифицируем параметры конференции, добавим возможность приглашать новых участников, по нажатию комбинации *7 в активной конференции. В файл /etc/asterisk/confbridge_custom.conf добавляем:

 

Описываем работу динамических конференций в диалплане. В файл /etc/asterisk/extensions_custom.conf добавляем:

ИНФОРМАЦИЯ. Номерной план само собой может отличаться от моего (4-х значного), поэтом строку _*7XXXX адаптируйте под свой номерной план.

 

Перечитываем диалплан и можно проверять работу динамических конференций: