مفهوم و کاربرد h extension درسیستم تلفنی asterisk در ابتدای آشنایی من با این سیستم تلفنی کمی گیچ کننده بود ولی در نوشتن یک dialplan حرفه ای استفاده از این extension معمولا الزامی است . h extension در واقع زمانی فراخوانی می شود که تماس قطع یا به اصطلاح hang up میشود . خوب با استفاده از این extension پرقدرت می توانیم بعد از قطع تماس عملیات خاص مربوط به آن کانال را ادامه بدهیم . معمولا این عملیات شامل نوشتن جزئیات تماس در فایل های csv مربوط ، که در حالت پیش فرض asterisk برای این کار استفاده می کند یا در پایگاه داده های مختلفی از جمله MYSQL ، Postgresql یا Oracle است .یا مثلا ما در یک برنامه تلفنی با استفاده از AGI از این extension برای فعال کردن event ای برای مطلع کردن برنامه CRM از اتمام تماس بهره بردیم . اگرچه این عملیات با استفاده از AMI هم به سادگی امکان پذیر است .
شاید مثال زیر مطلب را روشن تر کنه ... من اینجا یک context به نام localcalls تعریف کردم که تماس های ورودی من را کنترل می کند .
[localcalls]
exten => _3XXX,1,Verbose( - - - Call to Local Extensions - - - )
exten => _3XXX,n,Dial(IAX2/${EXTEN},70)
exten => h,1,Verbose( - - Run h extension in localcalls - - )
exten => h,n,AGI(CDR.php)
exten => h,n,Hangup
در اینجا بعد از hang up شدن تماس h extension مربوط به localcalls ابتدا با استفاده از دستور verbose یک پیام را در کنسول سیستم تلفنی نمایش دادم تا کار خطایابی ساده تر باشه و سپس یک اسکریپت AGI را اجرا می شود که با استفاده از زبان پی اچ پی اطلاعات تماس را به فرمتی که مورد نیاز ماست در پایگاه داده Postgresl ذخیره می کند .

امید مهاجرانی
omid dot mohajerani at gmail dot com
htto://linux-notes.blogfa.com




موضوعات مشابه: