نمایش نتایج: از شماره ۱ تا ۱ از مجموع ۱
-
پنجشنبه ۱۹ اردیبهشت ۱۳۹۸ ، ساعت ۱۲:۹ #۱
- تاریخ عضویت
- ۱۳۹۸/۲/۱۱
- ارسال ها
- ۸
- Thanks
- ۰
- تشکر شده
- ۰
معرفی رابط کاربری agi در استریسک و نحوه کار با آن
مخفف Asterisk Gateway Interface
* اسکریپت AGI به همراه زبان های برنامه نویسی همانند BASH,PERL,PHP,C,C++, Python, Ruby نوشته می شود.
* دو استاندارد STDIN،STDOUT جهت ارتباط اسکریپت ها با استریسک استفاده می شود.
* مسیر فایل های AGI در /var/lib/asterisk/agi-bin میباشد
* تمامی فایل ها می بایست مجوز اجرا داشته باشند (chmod:۷۷۷۷)
* حد الامکان از زبان های برنامه نویسی مناسب جهت اجرا سریع برنامه استفاده نمایید.
همانند 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 => ۳۳۳,۱,Answer()
exten => ۳۳۳,۲,AGI(test.php)
exten => ۳۳۳,۳,Hangup
AGI debugging:
*agi show debug on جهت نمایش لیست متغیرها و دیباگ در هنگام اجرا کاربرد دارد.
* از کامند Verborse,NOOP برای مشاهده لاگ و نشانه گذاری می توان استفاده کرد.
AGI Variables:
* در هنگام اجرا اسکریپت حدود ۲۰ متغیر به فایل 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', ۳۰۰۰, ۲۰);
$keys = $result['result'];
$agi->stream_file("you-entered","#");
$agi->say_digits($keys);
} while($keys != '۱۱۱');
$()agi->hangup;
?>
Commands vs. Apps Application ها می توانند در استریسک توسط Dialplan ویا در AGI توسط کامند EXEC اجرا شوند. agi→exec(«DIAL DAHDI/g۰/۰۹۳۷۲۶۹۳۶۹۷»)
Command ها صرفا قابل اجرا در AGI می باشند.
Passing Variables
با استفاده از Channel variables و سپس فراخوانی متغیر در AGI
exten ⇒ ۱۰۰۰,n,Set(myvar=۱) $var = execute(“get variable myvar”)
به کمک Command line variables و سپس فراخوانی $argv در AGI
exten ⇒ ۱۰۰۰,n,AGI(test.php,${EXTEN}) $agi→request[agi_arg_۱]
جهت پاس دادن متغیر از AGI به Dialplan از کامند $ag→set_variable(«accountcode»,«۱۲۳») در AGI استفاده کنید.
نمایش نتایج: از شماره ۱ تا ۱ از مجموع ۱