SCROLL
Среднее время на прочтение: 1 мин.

Подключение класса phpagi к AGI интерфейсу Asterisk (FreePBX)

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

Рассмотрим как настроить взаимодействие asterisk с классом phpagi, посредством интерфейса AGI (Asterisk Gateway Interface).

Все ниже действия будут производится на Debian 8 Jessie, Asterisk 13 и версией PHP — 5.6. Хочу обратить внимание что ниже описанное так же будет применимо к FreePBX

Настройка Asterisk

Для подключения класса phpagi, в конфигурационный файл /etc/asterisk/manager.conf, добавляем параметры подключения его (прим. astphp):

/etc/asterisk/manager.conf
[general]
ZW5hYmxlZCUyMCUzRCUyMHllcw==
port = 5038
bindaddr = 0.0.0.0
d2ViZW5hYmxlZCUyMCUzRCUyMG5v

[astphp]
c2VjcmV0JTIwJTNEJTIwcGFzc3dvcmQ=
ZGVueSUzRDAuMC4wLjAlMkYwLjAuMC4w
cGVybWl0JTNEMC4wLjAuMCUyRjAuMC4wLjA=
ZGlzcGxheWNvbm5lY3RzJTIwJTNEJTIweWVz
read = system,call,log,verbose,command,agent,user,originate
write = system,call,log,verbose,command,agent,user,originate

JUQwJTk0JUQwJUJCJUQxJThGJTIwJUQwJUIxJUQwJUI1JUQwJUI3JUQwJUJFJUQwJUJGJUQwJUIwJUQxJTgxJUQwJUJEJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI4JTIwJUQwJUIyJTIwJUQxJTgxJUQwJUI1JUQwJUJBJUQxJTg2JUQwJUI4JUQwJUI4JTIwJTVCZ2VuZXJhbCU1RCUyQyUyMCVEMCVCMiUyMCVEMCVCRiVEMCVCMCVEMSU4MCVEMCVCMCVEMCVCQyVEMCVCNSVEMSU4MiVEMSU4MCVEMCVCNSUyMGJpbmRhZGRyJTJDJTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUI3JUQwJUIwJUQwJUI0JUQwJUIwJUQxJTgyJUQxJThDJTIwSVAtJUQwJUIwJUQwJUI0JUQxJTgwJUQwJUI1JUQxJTgxJTIwJUQxJTgxJTIwJUQwJUJBJUQwJUJFJUQxJTgyJUQwJUJFJUQxJTgwJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUIxJUQxJTgzJUQwJUI0JUQwJUI1JUQxJTgyJTIwJUQxJTgwJUQwJUIwJUQwJUI3JUQxJTgwJUQwJUI1JUQxJTg4JUQwJUI1JUQwJUJEJUQwJUJFJTIwJUQwJUJGJUQwJUJFJUQwJUI0JUQwJUJBJUQwJUJCJUQxJThFJUQxJTg3JUQwJUIwJUQxJTgyJUQxJTgxJUQxJThGJTIwJUQwJUJBJTIwJUQwJUI4JUQwJUJEJUQxJTgyJUQwJUI1JUQxJTgwJUQxJTg0JUQwJUI1JUQwJUI5JUQxJTgxJUQxJTgzJTIwQUdJLiUyMCVEMCU5MiUyMCVEMSU4MSVEMCVCNSVEMCVCQSVEMSU4NiVEMCVCOCVEMCVCOCUyMCVEMCVCRiVEMSU4MCVEMCVCRSVEMSU4NCVEMCVCOCVEMCVCQiVEMSU4RiUyMCVEMCVCRiVEMCVCRSVEMCVCNCVEMCVCQSVEMCVCQiVEMSU4RSVEMSU4NyVEMCVCNSVEMCVCRCVEMCVCOCVEMSU4RiUyMCU1QmFzdHBocCU1RCUyQyUyMCVEMCVCQyVEMCVCRSVEMCVCNiVEMCVCRCVEMCVCRSUyMCVEMSU4MiVEMCVCMCVEMCVCQSUyMCVEMCVCNiVEMCVCNSUyMCVEMSU4MyVEMCVCQSVEMCVCMCVEMCVCNyVEMCVCMCVEMSU4MiVEMSU4QyUyMGRlbnklNUNwZXJtaXQlMjAlRDAlQjAlRDAlQjQlRDElODAlRDAlQjUlRDElODElRDAlQjAlMjAlRDAlQjQlRDAlQkIlRDElOEYlMjAlRDAlQkYlRDAlQkUlRDAlQjQlRDAlQkElRDAlQkIlRDElOEUlRDElODclRDAlQjUlRDAlQkQlRDAlQjglRDElOEYlMjAlRDAlQkElMjAlRDAlQkYlRDElODAlRDAlQkUlRDElODQlRDAlQjglRDAlQkIlRDElOEUu

В случае настройки на FreePBX, то секцию [astphp] необходимо указывать в файле конфигурации /etc/asterisk/manager_custom.conf

Настройка класса phpagi

В случае если выполняется настройка для FreePBX, то необходимости скачивать и копировать модули phpagi нет необходимости, т.к. они входят в поставку FreePBX. Переходим сразу к настройке соединения.

Скачиваем последнюю версию phpagi с официального сайта, распаковываем ее и копируем распакованные файлы phpagi в каталоги asterisk:

Y2QlMjBwaHBhZ2ktMi4yMA==
Y3AlMjAlMkZkb2NzJTJGcGhwYWdpLmV4YW1wbGUuY29uZiUyMCUyRmV0YyUyRmFzdGVyaXNrJTJGcGhwYWdpLmNvbmY=
Y3AlMjBwaHBhZ2ktYXNtYW5hZ2VyLnBocCUyMCUyRnZhciUyRmxpYiUyRmFzdGVyaXNrJTJGYXBpLWJpbiUyRnBocGFnaS1hc21hbmFnZXIucGhw
Y3AlMjBwaHBhZ2ktZmFzdGFnaS5waHAlMjAlMkZ2YXIlMkZsaWIlMkZhc3RlcmlzayUyRmFwaS1iaW4lMkZwaHBhZ2ktZmFzdGFnaS5waHA=
Y3AlMjBwaHBhZ2kucGhwJTIwJTJGdmFyJTJGbGliJTJGYXN0ZXJpc2slMkZhcGktYmluJTJGcGhwYWdpLnBocA==

В файле конфигурации /etc/asterisk/phpagi.conf, в секции [asmanager] указываем данные для соединения с asterisk:

/etc/asterisk/phpagi.conf
[asmanager]
c2VydmVyJTNEbG9jYWxob3N0
port=5038
dXNlcm5hbWUlM0Rhc3RwaHA=
secret=password

На этом конфигурация связи закончена. Теперь можно использовать PHP-скрипты в диалплане Asterisk.

Подключение класса phpagi в PHP-скрипт

Каждый PHP-скрипт должен начинаться со строк объявления использования класса phpagi:

JTIzISUyRnVzciUyRmJpbiUyRnBocCUyMC1x
JTNDJTNGcGhw
require('phpagi.php');

JTI0YWdpJTIwJTNEJTIwbmV3JTIwQUdJKCklM0I=

...
...

JTNGJTNF
PHP скрипты необходимо размещать в папку /var/lib/asterisk/agi-bin.

Вызов PHP-скрипта из диалплана asterisk (прим. с вызовом PHP-скрипта и передачи в него переменных из диалплана):

ZXh0ZW4lMjAlM0QlM0UlMjBfWFhYWCUyQzElMkNBR0kobXlwaHBzY3J5cHQucGhwJTJDJTI0JTdCRVhURU4lN0QlMkMlMjQlN0JDQUxMRVJJRChudW0pJTdEKQ==
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.