Asterisk gateway Interface (AGI)

Asterisk gateway Interface (AGI)

В поисках полезной автоматизации и кастомизации своего Asterisk продвинутые администраторы прибегают к использованию различных скриптов. Это может быть PHP, Perl C, Pascal или Shell. Для использования скриптов, написанных на одном из перечисленных языков программирования в диалплане Asterisk используется AGI (Asterisk Gateway Interface) – о нем и поговорим.

Как это работает?

AGI – это прослойка между скриптом и диалпланом (планом набора) в Asterisk. В скрипт мы можем передавать различные переменные, а можем получать какие – то значения из скрипта. Когда Asterisk инициирует запуск скрипта через AGI, он передает в него набор переменных. Все переменные обладают префиксом agi_:

Переменная Описание Пример
agi_request Имя файла исполняемого скрипта trunk.php
agi_channel Канал, инициирующий звонок Local/89123456789@from-internal-00000002;2
agi_language Языковой код en
agi_type Тип канала, инициирующий вызов Local
agi_uniqueid Уникальный идентификатор звонка 1497364935.15
agi_version Версия Asterisk 13.10.0
agi_callerid Номер звонящего (CID Number) 89123456789
agi_calleridname Имя звонящего (CID Name) 89123456789
agi_dnid Набранный номер unknown
agi_context Контекст обработки вызова macro-dialout-trunk

Как вызвать AGI в Dialplan?

Вызвать AGI скрипт очень просто: предварительно, загрузите скрипт в директорию /var/lib/asterisk/agi-bin/. После этого, скрипту необходимо дать права и собственника. Предположим, наш скрипт называется trunk.php:
chmod 755 /var/lib/asterisk/agi-bin/trunk.php
chown asterisk:asterisk /var/lib/asterisk/agi-bin/trunk.php
Теперь, чтобы скрипт был вызван в диалплане, просто добавьте следующую конструкцию:
exten => 1333,n,AGI(trunk.php)
Просто, не правда ли? А если мы хотим передать переменную в скрипт? Просто добавьте ее после запятой:
exten => 1333,n,AGI(trunk.php, ${CALLERID(number)})
Asterisk gateway Interface (AGI)
Как написать скрипт?

Теперь к самому скрипту – напишем его на PHP. Пусть нам нужно отправлять письмо с номером звонящего. Выглядеть скрипт будет так:
Вот и все. Нам будет приходить на почту письмо с номером звонящего – прокачав данный функционал можно отслеживать пропущенные вызовы, например.