اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

معرفی فنی در مورد AGI و مقایسه ان با DialPlan و AMI در Asterisk

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    معرفی فنی در مورد AGI و مقایسه ان با DialPlan و AMI در Asterisk

    Asterisk Gateway Interface که به AGI معروف است در حقیقت یک زبان مستقل برای API نویسی و به منظور پردازش تماس ها میباشد. AGI این امکان را به برنامه نویس ها میدهد تا برنامه های ساده برای مدیریت و route کردن تماس ها در سرورهای استریسک به ساده ترین شیوه ممکن بنویسند.
    برای بزرگتر شدن عکس روی آن کلیک کنید

نام:	gate-sketch.png
نمایش ها:	1
اندازه:	150.5 KB
شناسه:	19467


    در این پست معرفی فنی روی AGI توضیح چگونگی کار کردن آن، چگونگی استفاده از آن، جایی که میتوانیم داکیومنت API نویسی را پیدا کنیم و حتی یکسری نمونه هایی از کدهای اولیه که چگونگی استفاده از AGI را نمایش میدهد فراهم آورده است. مخاطبان خاص آن در حقیقت برنامه نویسان، علاقه مندان سیستم های تلفنی یا مدیراین IT که میخواهند درباره اضافه کردن Functionality به سیستم Asterisk PBX شان یاد بگیرند هستند. این پست یک مرجع کاملی از برنامه نویسی AGI نیست و تنها به شما آموزش میدهد که AGI چه چیزهایی را فراهم میآورد و چگونه آن را در Level بالا میتوانیم استفاده کنیم.


    چرا استفاده از AGI ؟
    سوالی که در میان افراد مربوطه رایج است در حقیقت این است که چه نیازی است که از AGI استفاده کنم؟
    این یک سوال عالی میباشد و ارزش بحث کردن دارد.
    استریسک چندین راه برای اجرا کردن منطقی تماس ها فراهم آورده : dial plan , AMI , AGI

    Dialplan :
    دایل پلن در حقیقت زبان اسکریپتینگ Native (اصلی) استریسک میباشد که توسط استریسک تجزیه میشود و برای استفاده به منظور اجرا کردن تماس در memory ذخیره میشود. dialplan سریع، موثر و آسان برای یادگیری میباشد.البته باید به جنبه های منفی آن نیز اشاره کنیم. از آنجایی که این برنامه بسیار پایه و مقدماتی و در اصطلاح ساده میباشد. نمی تواند ساختارهای زبان عملیاتی استاندارد را پشتیبانی کند. (مانند loops)
    این بدان معنیست که در اغلب کدها باید از عبارت های GoTo و ساختارهای ساده استفاده کنیم که این امر نوشتن نرم افزارهای بزرگ را خسته کننده و سخت میسازد.

    AMI :
    AMI یا Asterisk Manager Interface یک زبان مستقل و پیچیده و در سطح بالا برای API نویسی و به منظور کنترل asterisk از طریق سوکت های TCP میباشد. AMI در حقیقت یک راهکار عالی برای نرم افزاری میباشد که باید روی سرورهای ریموت که قرار است در بستر شبکه با استریسک تعامل داشته باشند اجرا شود. بسیاری از برنامه های Click To Call با استفاده از AMI نوشته میشوند. همانطور که همه برنامه های مدیریتی استریسک مانند HUD , FOP و Asterisk Assistant با استفاده از آن نوشته شده اند. AMI ابزاری بی نظیر میباشد زیرا به نرم افزارهای ریموت اجازه میدهد تا سیستم استریسک را به صورت کامل کنترل کنند :
    آپدیت های status را دریافت کنند، call ایجاد کنند، call دریافت کنند، call ها را route کنند و غیره...
    جنبه منفی استفاده از AMI این است که در حقیقت هیچ داکیومنت خوبی برای آن موجود نیست و در میان کاربران به عنوان سیستم باگ دار و پرخطایی گزارش شده و در حقیقت فشار قابل توجهی را روی PBX ایجاد میکند.

    AGI :
    AGI در حقیقت وسط این دو قرار میگیرد. و بعضی جاها با توجه به قابلیت و کارایی بین dialplan و AMI قرار میگیرد. AGI نمیتواند به صورت کامل از PBX مستقل باشد (در حالی که AMI کاملا مستقل است) و در حقیقت نیاز دارد که در بعضی جاها dialplan نیز اجرا گردد (برخلاف AMI)، و به یک زبان برنامه نویسی خاص محدود نیست (همانند AMI) و میتواند هم به صورت Local و هم از طریق بستر شبکه مورد استفاده قرار گیرد (همانند AMI).
    AGI تنها در حقیقت برای تماس های ورودی مفید میباشد و برای توسعه سیستم تلفنی روی تماس های خروجی گزینه خوبی نمیباشد. AGI در مقایسه با AMI از overhead بسیار کمی استفاده میکند و در حقیقت یک راهکار خوب برای برنامه نویسان و توسعه دهندگانی میباشد که میخواهند یک ماژول یا پلاگین برای استریسک بنویسند که روی هر PBX استفاده شود و سریع و ساده بدون فشار روی سرور اجرا گردد. همچنین AGI یک راه کار بی نظیر برای برنامه نویسان و توسعه دهندگانی که میخواهند برنامه های تلفنی را بدون یاد گرفتن dialplan استریسک ایجاد کنند.
    AGI به شما اجازه میدهد تا Aplication ها را با هر زبان برنامه نویسی که شما با ان راحت هستید بسازید که این مورد شدیدا زمان توسعه را کاهش میدهد و نیاز نیست که شما زبان خاصی را یاد بگیرید.


    4 نوع از AGI :
    AGI در حقیقت به 4 شیوه میتواند استفاده شود که هر کدام با دیگری متفاوت است :
    standard AGI , dead AGI , fast AGI , enhanced AGI

    standard AGI :
    standard AGI ساده ترین آنهاست و اغلب از این فورم AGI استفاده میکنند. برنامه های standard agi روی pbx لوکا (local) اجرا میشوند و با استریسک از طریق socket descriptors (به نام های STDIN و STDOUT)
    ارتباط برقرار میکنند. standard agi امکان استفاده از تمامی دستورات agi را فراهم میآورد.

    dead AGI :
    dead AGI فرم ساده شده AGI میباشد که بعد از اینکه تماس hangup میشود در ادامه اجرا میگردد. در مواقعی که نیاز داریم که برنامه ای بعد از اینکه تماسی قطع شد اجرا شود این agi بسیار مفید میباشد از آنجایی که dead agi به برنامه نویسان اجازه میدهد تا روند را بعد از تماس کنترل کنند تمامی دستورات AGI نمیتواند مورد استفاده قرار گیرد. البته dead agi از استریسک 1.6 به بعد منسوخ شد و دیگر نباید مورد استفاده قرار گیرد.

    fast AGI :
    fast agi در حقیقت agi از طریق پروتکل TCP میباشد در حقیقت شما در سیستم خودتان میتوانید با استفاده از socket tcp و شبکه agi موجود روی یک سیستم دیگر را اجرا کنید. fast agi به شما اجازه میدهد تا تمام قابلیت های agi به غیر از eagi را داشته باشید و به عنوان راهکاری میباشد برای برنامه نویسانی که نیاز دارند برنامه های agi را با منابع سریع اجرا کنند. با اجرا کردن بخش عمده ای از منطق AGI روی سرور دیگر در حقیقت سرور asterisk خودش تماس ها را پردازش میکند و نگران کنترل محاسبات پیچیده برای سرویس های دیگر نیست. این یک پروتکل توصیه شده برای نرم افزارهای بزرگ میباشد.

    EAGI :
    آخرین مورد EAGI میباشد.ارتباطات eagi از طریق file descriptors روی ماشین local با استفاده از STDIN و STDOUT میباشد. eagi برای برنامه نویسان راهی فراهم میکند که مستقیما به audio channel برای تماس هایی که پردازش شده اند دسترسی داشته باشند. البته این agi به ندرت استفاده میشود اما راهی برای تجزیه و تحلیل داده های صوتی خام در اختیار برنامه نویسان قرار میدهد.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-30-2016, 10:58 AM.
    Instagram : https://www.instagram.com/iranlinuxforum

    Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X