Подключение класса phpagi к AGI интерфейсу Asterisk (FreePBX)
Используя в работе голый Asterisk, рано или поздно становится недостаточно стандартных инструментов, для решения нужных задач. В этом случае нам поможет интерфейс AGI, который позволяет Asterisk взаимодействовать со сторонними приложениями, к примеру с приложением написанным на PHP.
Рассмотрим как настроить взаимодействие asterisk с классом phpagi
, посредством интерфейса AGI (Asterisk Gateway Interface).
Настройка Asterisk
Для подключения класса phpagi
, в конфигурационный файл /etc/asterisk/manager.conf
, добавляем параметры подключения его (прим. astphp
):
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
webenabled = no
[astphp]
secret = password
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
displayconnects = yes
read = system,call,log,verbose,command,agent,user,originate
write = system,call,log,verbose,command,agent,user,originate
Для безопасности в секции [general]
, в параметре bindaddr
, можно задать IP-адрес с которого будет разрешено подключатся к интерфейсу AGI. В секции профиля подключения [astphp]
, можно так же указать deny\permit
адреса для подключения к профилю.
[astphp]
необходимо указывать в файле конфигурации /etc/asterisk/manager_custom.conf
Настройка класса phpagi
Скачиваем последнюю версию phpagi с официального сайта, распаковываем ее и копируем распакованные файлы phpagi в каталоги asterisk:
cd phpagi-2.20
cp /docs/phpagi.example.conf /etc/asterisk/phpagi.conf
cp phpagi-asmanager.php /var/lib/asterisk/api-bin/phpagi-asmanager.php
cp phpagi-fastagi.php /var/lib/asterisk/api-bin/phpagi-fastagi.php
cp phpagi.php /var/lib/asterisk/api-bin/phpagi.php
В файле конфигурации /etc/asterisk/phpagi.conf
, в секции [asmanager]
указываем данные для соединения с asterisk:
[asmanager]
server=localhost
port=5038
username=astphp
secret=password
На этом конфигурация связи закончена. Теперь можно использовать PHP-скрипты в диалплане Asterisk.
Подключение класса phpagi в PHP-скрипт
Каждый PHP-скрипт должен начинаться со строк объявления использования класса phpagi:
#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI();
...
...
?>
/var/lib/asterisk/agi-bin
.Вызов PHP-скрипта из диалплана asterisk (прим. с вызовом PHP-скрипта и передачи в него переменных из диалплана):
exten => _XXXX,1,AGI(myphpscrypt.php,${EXTEN},${CALLERID(num)})
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.