مخفف 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 استفاده کنید.