В порядке рабочей необходимости поставилась задача по реализации динамических конференций на FreePBX. Из функционала должна быть возможность перевода активного разговора в конференцию, возможность приглашать новых участников в созданную динамическую конференцию находясь в ней, а так же возможность самостоятельному подключения к активной динамической конференции.
В интернете есть несколько примеров реализации подобного рода задачи, но я решил реализовать по своему и так как мне нужно. Итак все ниже описанные действия производились на Asterisk 16 + FreePBX 14 + phpAGI.
- В активном разговоре нажать *7 — создание и перевод участников разговора в конференцию.
- В конференции нажать *7 — после гудка набрать номер кого хотим пригласить в конференцию и нажимаем #.
- Набрать внутренний номер с префиксом *7 (прим. *71100) — если конференция с набранным номером (прим. 1100) существует, то будет присоединение к ней, в противном случае будет создана новая конференция.
Выдаем права на чтение и запуск для asterisk:
Прописываем динамическую функцию запуска скрипта, по нажатию комбинации *7 из активного разговора. В файл /etc/asterisk/features_applicationmap_custom.conf добавляем:
Объявляем прописанную динамическую функцию в глобальные переменные. В файл /etc/asterisk/globals_custom.conf добавляем:
Модифицируем параметры конференции, добавим возможность приглашать новых участников, по нажатию комбинации *7 в активной конференции. В файл /etc/asterisk/confbridge_custom.conf добавляем:
Описываем работу динамических конференций в диалплане. В файл /etc/asterisk/extensions_custom.conf добавляем:
Перечитываем диалплан и можно проверять работу динамических конференций: