img

Рассказываем про 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 в диалплане?

Вызвать 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. Пусть нам нужно отправлять письмо с номером звонящего. Выглядеть скрипт будет так:

#!/usr/bin/php -q
<?php
require('phpagi.php'); 
$agi = new AGI(); //подключаем файл phpagi.php – 1 и 2 строки обязательны в любом скрипте
$cid = $agi->request['agi_callerid']; // берем из AGI номер звонящего
mail("info@merionet.ru", 'Привет!', 'Вот и номер звонящего:', $cid); //отправляем в письме

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

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Еще по теме:
img
Мы создали калькулятор инсталляции IP - АТС Asterisk. При планировании сервера и необходимого оборудования заполните соответствующие поля для расчета производительности, шлюзов и плат
img
Скачать руководство администратора Cisco UCM/CME на русском языке
img
Скачать руководство администратора FreePBX на русском языке
img
Рассказываем как рассчитать пропускную способность для IP-вызовов Cisco
img
Рассказываем как настроить отправку СМС сообщений из контакт-центра Октелл через Ростелеком СМС Реклама