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

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

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

JUQwJUEwJUQwJUIwJUQxJTgxJUQxJTgxJUQwJUJDJUQwJUJFJUQxJTgyJUQxJTgwJUQwJUI4JUQwJUJDJTIwJUQwJUJBJUQwJUIwJUQwJUJBJTIwJUQwJUJEJUQwJUIwJUQxJTgxJUQxJTgyJUQxJTgwJUQwJUJFJUQwJUI4JUQxJTgyJUQxJThDJTIwJUQwJUIyJUQwJUI3JUQwJUIwJUQwJUI4JUQwJUJDJUQwJUJFJUQwJUI0JUQwJUI1JUQwJUI5JUQxJTgxJUQxJTgyJUQwJUIyJUQwJUI4JUQwJUI1JTIwYXN0ZXJpc2slMjAlRDElODElQzIlQTAlRDAlQkElRDAlQkIlRDAlQjAlRDElODElRDElODElRDAlQkUlRDAlQkMlQzIlQTBwaHBhZ2klMkMlMjAlRDAlQkYlRDAlQkUlRDElODElRDElODAlRDAlQjUlRDAlQjQlRDElODElRDElODIlRDAlQjIlRDAlQkUlRDAlQkMlMjAlRDAlQjglRDAlQkQlRDElODIlRDAlQjUlRDElODAlRDElODQlRDAlQjUlRDAlQjklRDElODElRDAlQjAlMjBBR0klMjAoQXN0ZXJpc2slMjBHYXRld2F5JTIwSW50ZXJmYWNlKS4=

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

Настройка Asterisk

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

/etc/asterisk/manager.conf
JTVCZ2VuZXJhbCU1RA==
ZW5hYmxlZCUyMCUzRCUyMHllcw==
cG9ydCUyMCUzRCUyMDUwMzg=
YmluZGFkZHIlMjAlM0QlMjAwLjAuMC4w
webenabled = no

JTVCYXN0cGhwJTVE
secret = password
ZGVueSUzRDAuMC4wLjAlMkYwLjAuMC4w
permit=0.0.0.0/0.0.0.0
ZGlzcGxheWNvbm5lY3RzJTIwJTNEJTIweWVz
cmVhZCUyMCUzRCUyMHN5c3RlbSUyQ2NhbGwlMkNsb2clMkN2ZXJib3NlJTJDY29tbWFuZCUyQ2FnZW50JTJDdXNlciUyQ29yaWdpbmF0ZQ==
write = system,call,log,verbose,command,agent,user,originate

JUQwJTk0JUQwJUJCJUQxJThGJTIwJUQwJUIxJUQwJUI1JUQwJUI3JUQwJUJFJUQwJUJGJUQwJUIwJUQxJTgxJUQwJUJEJUQwJUJFJUQxJTgxJUQxJTgyJUQwJUI4JTIwJUQwJUIyJTIwJUQxJTgxJUQwJUI1JUQwJUJBJUQxJTg2JUQwJUI4JUQwJUI4JTIwJTVCZ2VuZXJhbCU1RCUyQyUyMCVEMCVCMiUyMCVEMCVCRiVEMCVCMCVEMSU4MCVEMCVCMCVEMCVCQyVEMCVCNSVEMSU4MiVEMSU4MCVEMCVCNSUyMGJpbmRhZGRyJTJDJTIwJUQwJUJDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUI3JUQwJUIwJUQwJUI0JUQwJUIwJUQxJTgyJUQxJThDJTIwSVAtJUQwJUIwJUQwJUI0JUQxJTgwJUQwJUI1JUQxJTgxJTIwJUQxJTgxJTIwJUQwJUJBJUQwJUJFJUQxJTgyJUQwJUJFJUQxJTgwJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUIxJUQxJTgzJUQwJUI0JUQwJUI1JUQxJTgyJTIwJUQxJTgwJUQwJUIwJUQwJUI3JUQxJTgwJUQwJUI1JUQxJTg4JUQwJUI1JUQwJUJEJUQwJUJFJTIwJUQwJUJGJUQwJUJFJUQwJUI0JUQwJUJBJUQwJUJCJUQxJThFJUQxJTg3JUQwJUIwJUQxJTgyJUQxJTgxJUQxJThGJTIwJUQwJUJBJTIwJUQwJUI4JUQwJUJEJUQxJTgyJUQwJUI1JUQxJTgwJUQxJTg0JUQwJUI1JUQwJUI5JUQxJTgxJUQxJTgzJTIwQUdJLiUyMCVEMCU5MiUyMCVEMSU4MSVEMCVCNSVEMCVCQSVEMSU4NiVEMCVCOCVEMCVCOCUyMCVEMCVCRiVEMSU4MCVEMCVCRSVEMSU4NCVEMCVCOCVEMCVCQiVEMSU4RiUyMCVEMCVCRiVEMCVCRSVEMCVCNCVEMCVCQSVEMCVCQiVEMSU4RSVEMSU4NyVEMCVCNSVEMCVCRCVEMCVCOCVEMSU4RiUyMCU1QmFzdHBocCU1RCUyQyUyMCVEMCVCQyVEMCVCRSVEMCVCNiVEMCVCRCVEMCVCRSUyMCVEMSU4MiVEMCVCMCVEMCVCQSUyMCVEMCVCNiVEMCVCNSUyMCVEMSU4MyVEMCVCQSVEMCVCMCVEMCVCNyVEMCVCMCVEMSU4MiVEMSU4QyUyMGRlbnklNUNwZXJtaXQlMjAlRDAlQjAlRDAlQjQlRDElODAlRDAlQjUlRDElODElRDAlQjAlMjAlRDAlQjQlRDAlQkIlRDElOEYlMjAlRDAlQkYlRDAlQkUlRDAlQjQlRDAlQkElRDAlQkIlRDElOEUlRDElODclRDAlQjUlRDAlQkQlRDAlQjglRDElOEYlMjAlRDAlQkElMjAlRDAlQkYlRDElODAlRDAlQkUlRDElODQlRDAlQjglRDAlQkIlRDElOEUu

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

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

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

JUQwJUExJUQwJUJBJUQwJUIwJUQxJTg3JUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUJGJUQwJUJFJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQwJUJEJUQxJThFJUQxJThFJTIwJUQwJUIyJUQwJUI1JUQxJTgwJUQxJTgxJUQwJUI4JUQxJThFJTIwcGhwYWdpJTIwJUQxJTgxJTIwJUQwJUJFJUQxJTg0JUQwJUI4JUQxJTg2JUQwJUI4JUQwJUIwJUQwJUJCJUQxJThDJUQwJUJEJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQxJTgxJUQwJUIwJUQwJUI5JUQxJTgyJUQwJUIwJTJDJTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUJFJUQwJUIyJUQxJThCJUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI1JUQwJUI1JTIwJUQwJUI4JTIwJUQwJUJBJUQwJUJFJUQwJUJGJUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQwJUJDJTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUJFJUQwJUIyJUQwJUIwJUQwJUJEJUQwJUJEJUQxJThCJUQwJUI1JTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQxJThCJTIwcGhwYWdpJTIwJUQwJUIyJTIwJUQwJUJBJUQwJUIwJUQxJTgyJUQwJUIwJUQwJUJCJUQwJUJFJUQwJUIzJUQwJUI4JTIwYXN0ZXJpc2slM0E=

cd phpagi-2.20
cp /docs/phpagi.example.conf /etc/asterisk/phpagi.conf
Y3AlMjBwaHBhZ2ktYXNtYW5hZ2VyLnBocCUyMCUyRnZhciUyRmxpYiUyRmFzdGVyaXNrJTJGYXBpLWJpbiUyRnBocGFnaS1hc21hbmFnZXIucGhw
cp phpagi-fastagi.php /var/lib/asterisk/api-bin/phpagi-fastagi.php
Y3AlMjBwaHBhZ2kucGhwJTIwJTJGdmFyJTJGbGliJTJGYXN0ZXJpc2slMkZhcGktYmluJTJGcGhwYWdpLnBocA==

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

/etc/asterisk/phpagi.conf
JTVCYXNtYW5hZ2VyJTVE
server=localhost
port=5038
dXNlcm5hbWUlM0Rhc3RwaHA=
c2VjcmV0JTNEcGFzc3dvcmQ=

JUQwJTlEJUQwJUIwJTIwJUQxJThEJUQxJTgyJUQwJUJFJUQwJUJDJTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg0JUQwJUI4JUQwJUIzJUQxJTgzJUQxJTgwJUQwJUIwJUQxJTg2JUQwJUI4JUQxJThGJTIwJUQxJTgxJUQwJUIyJUQxJThGJUQwJUI3JUQwJUI4JTIwJUQwJUI3JUQwJUIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg3JUQwJUI1JUQwJUJEJUQwJUIwLiUyMCVEMCVBMiVEMCVCNSVEMCVCRiVEMCVCNSVEMSU4MCVEMSU4QyUyMCVEMCVCQyVEMCVCRSVEMCVCNiVEMCVCRCVEMCVCRSUyMCVEMCVCOCVEMSU4MSVEMCVCRiVEMCVCRSVEMCVCQiVEMSU4QyVEMCVCNyVEMCVCRSVEMCVCMiVEMCVCMCVEMSU4MiVEMSU4QyUyMFBIUC0lRDElODElRDAlQkElRDElODAlRDAlQjglRDAlQkYlRDElODIlRDElOEIlMjAlRDAlQjIlMjAlRDAlQjQlRDAlQjglRDAlQjAlRDAlQkIlRDAlQkYlRDAlQkIlRDAlQjAlRDAlQkQlRDAlQjUlMjBBc3Rlcmlzay4=

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

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

#!/usr/bin/php -q
<?php
require('phpagi.php');

$agi = new AGI();

...
Li4u

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

JUQwJTkyJUQxJThCJUQwJUI3JUQwJUJFJUQwJUIyJTIwUEhQLSVEMSU4MSVEMCVCQSVEMSU4MCVEMCVCOCVEMCVCRiVEMSU4MiVEMCVCMCUyMCVEMCVCOCVEMCVCNyUyMCVEMCVCNCVEMCVCOCVEMCVCMCVEMCVCQiVEMCVCRiVEMCVCQiVEMCVCMCVEMCVCRCVEMCVCMCUyMGFzdGVyaXNrJTIwKCVEMCVCRiVEMSU4MCVEMCVCOCVEMCVCQy4lMjAlRDElODElMjAlRDAlQjIlRDElOEIlRDAlQjclRDAlQkUlRDAlQjIlRDAlQkUlRDAlQkMlMjBQSFAtJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJUQwJUIwJTIwJUQwJUI4JTIwJUQwJUJGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUI0JUQwJUIwJUQxJTg3JUQwJUI4JTIwJUQwJUIyJTIwJUQwJUJEJUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQwJUJGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUJDJUQwJUI1JUQwJUJEJUQwJUJEJUQxJThCJUQxJTg1JTIwJUQwJUI4JUQwJUI3JTIwJUQwJUI0JUQwJUI4JUQwJUIwJUQwJUJCJUQwJUJGJUQwJUJCJUQwJUIwJUQwJUJEJUQwJUIwKSUzQQ==

exten => _XXXX,1,AGI(myphpscrypt.php,${EXTEN},${CALLERID(num)})
 

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

Обсуждение

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

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