تفاوت‌ها

تفاوت دو نسخهٔ متفاوت از صفحه را مشاهده می‌کنید.

پیوند به صفحه‌ی تفاوت‌ها

نگارش قبل در دو طرف نگارش قبل
نگارش بعد
نگارش قبل
استریسک_agi [2015/03/16 06:59]
مسعود حیدری [The AGI execution flow]
استریسک_agi [2015/03/16 07:58] (فعلی)
مسعود حیدری [EAGI, DeadAGI and FastAGI]
خط 41: خط 41:
    ​همانند php –python    ​همانند php –python
   * در صورت استفاده از زبان هایی همانند C,java بهتر است از Fastagi ​ استفاده شود.   * در صورت استفاده از زبان هایی همانند C,java بهتر است از Fastagi ​ استفاده شود.
 +
 +
 +**AGI scripting frameworks **
 +
 +{{ :​picture4.png|}}
 +
 +**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**
 +
 +{{:​picture5.png| }}
 +{{:​picture6.png|}}
 +
 +**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**
 +
 +{{:​picture7.png?​300 |}}
 +
 + * در هنگام اجرا اسکریپت حدود 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  استفاده کنید.
  
  
چاپ/برون‌بری