این یک نگارش قدیمی از این مطلب است!


AGI Programming

  • مخفف Asterisk Gateway Interface

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

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

* Prototype و طریقه فراخوانی در Dial plan *

The AGI execution flow

EAGI, DeadAGI and FastAGI

  • EAGI—Enhanced Asterisk Gateway Interface
  • DeadAGI—execution on hangup
  • FastAGI—AGI execution via a TCP socket

AGI script Notes

  • مسیر فایل های AGI در /var/lib/asterisk/agi-bin میباشد
  • تمامی فایل ها می بایست مجوز اجرا داشته باشند (chmod:7777)
  • حد الامکان از زبان های برنامه نویسی مناسب جهت اجرا سریع برنامه استفاده نمایید.

همانند php –python

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

AGI scripting frameworks

PHP-AGI

  • PHPAGI شامل دو Class از زبان php برای برنامه نویسی AGI میباشد
  • phpagi.php به عنوان اینترفیس در Asterisk Gateway interface
  • phpagi-asmanager.php به عنوان اینترفیس در Asterisk Manager interface
  • تحت لایسنس GNU می باشد و از لینک زیر قابل دسترس است.

http://sourceforge.net/projects/phpagi/

AGI Command

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

چاپ/برون‌بری