مخفف Asterisk Gateway Interface

* اسکریپت AGI به همراه زبان های برنامه نویسی همانند BASH,PERL,PHP,C,C++, Python, Ruby نوشته می شود.

* دو استاندارد STDIN،STDOUT جهت ارتباط اسکریپت ها با استریسک استفاده می شود.

* مسیر فایل های AGI در /var/lib/asterisk/agi-bin میباشد

* تمامی فایل ها می بایست مجوز اجرا داشته باشند (chmod:7777)

* حد الامکان از زبان های برنامه نویسی مناسب جهت اجرا سریع برنامه استفاده نمایید.
همانند php –python

* در صورت استفاده از زبان هایی همانند C,java بهتر است از Fastagi استفاده شود.

AGI scripting framework:
PHP-AGI
PHPAGI شامل دو Class از زبان php برای برنامه نویسی AGI میباشد
phpagi.php به عنوان اینترفیس در Asterisk Gateway interface
phpagi-asmanager.php به عنوان اینترفیس در Asterisk Manager interface
تحت لایسنس GNU می باشد و از لینک زیر قابل دسترس است.
http://sourceforge.net/projects/phpagi/

Simple AGI

#!/usr/bin/php –q
<?php
require('phpagi.php');
$agi = new AGI();
$agi->stream_file('demo-congrats');
?>
[myagi]
exten => 333,1,Answer()
exten => 333,2,AGI(test.php)
exten => 333,3,Hangup

AGI debugging:

*agi show debug on جهت نمایش لیست متغیرها و دیباگ در هنگام اجرا کاربرد دارد.

* از کامند Verborse,NOOP برای مشاهده لاگ و نشانه گذاری می توان استفاده کرد.

AGI Variables:

* در هنگام اجرا اسکریپت حدود 20 متغیر به فایل agi پاس داده می شود.

* هر کدام از متغیرها را می توان در agi فراخوانی نمود.

#!/usr/bin/php -q
<?
require('include/phpagi.php
$agi = new AGI();
$()agi->answer;
$agi->stream_file("demo-congrats","#");
do {
$agi->stream_file("enter-some-digits","#");
$result = $agi->get_data('beep', 3000, 20);
$keys = $result['result'];
$agi->stream_file("you-entered","#");
$agi->say_digits($keys);
} while($keys != '111');
$()agi->hangup;
?>

Commands vs. Apps Application ها می توانند در استریسک توسط Dialplan ویا در AGI توسط کامند EXEC اجرا شوند. agi→exec(«DIAL DAHDI/g0/09372693697»)

Command ها صرفا قابل اجرا در AGI می باشند.

Passing Variables

با استفاده از Channel variables و سپس فراخوانی متغیر در AGI

exten ⇒ 1000,n,Set(myvar=1) $var = execute(“get variable myvar”)

به کمک Command line variables و سپس فراخوانی $argv در AGI

exten ⇒ 1000,n,AGI(test.php,${EXTEN}) $agi→request[agi_arg_1]

جهت پاس دادن متغیر از AGI به Dialplan از کامند $ag→set_variable(«accountcode»,«123») در AGI استفاده کنید.