استریسک به عنوان سیستم سلسله مراتبی صوتی - Asterisk As IVR Server
IVR یا[B][I]i[/I][/B][I]nteractive [B]v[/B]oice [B]r[/B]esponse[/I] یکی از قابلیت های پرکاربرد سیستم های تلفنی است که تاحالا حتما شما هم یک بار به اون برخوردید . منوهای صوتی که شرکت های مختلف برای معرفی بخش های مختلف و ارتباط با اپراتور و ... استفاده می کنند . یا مرکز های اطلاع رسانی تلفنی که به صورت خودکار پیام های خاص منظوره را پخش می کنند . امکان برقراری ارتباط با پایگاه داده ها قابلیت های مفیدی را در اختیار کاربر قرار می دهد که مراکز چک کردن حساب های بانکی به صورت تلفنی یا مراکز مشاوره ای و... نمونه ای از این نوع سیستم ها هستند .
اگرچه مکانیزم ها و راه حال های مختلفی برای راه اندازی این نوع منوهای صوتی داریم ولی مطمئنا Asterisk یکی از پرقدرت مند ترین آنهاست . شاید
امکان برقراری با پایگاه داده های مختلف از جمله MYSQL ، Oracle ، MSSQL و ...
امکان بهره گیری از واسط های مختلف ارتباطی با خطوط PSTN ، GSM و ... و عدم وابستگی به برند خاص
امکان پیاده سازی High Redundancy در راه حل های حرفه ای و در نتیجه قابلیت اطمینان بالا
امکان بهره گیری از امکانات یک IP PBX و Call Center در کنار قابلیت IVR
پشتیبانی از فرمت های مختلف صوتی
را بتوان مهمترین علت های برشمردن Asterisk در زمره پرقدرترین های ارائه دهنده سرویس IVR دانست . در این پست با نحوه تعریف یک IVR نسبتا حرفه ای دز سیستم تلفنی Asterisk آشنا میشیم.
[CENTER][URL="http://linux-notes.persiangig.com/image/linux-notes_p71/Asterisk-IVR.png"][IMG]http://pic0.picsorlinks.com/ph_or_35947_f360460.png[/IMG][/URL][/CENTER]
[RIGHT]
[/RIGHT]
[LEFT][AutomaticAttendantDemo][/LEFT]
[LEFT]exten => _X.,1,Answer [/LEFT]
[LEFT]exten => _X.,n,Wait(2) ; Perform a simple 2 seconds delay[/LEFT]
[LEFT]exten => _X.,n,Playback(welcome)[/LEFT]
[LEFT]exten => _X.,n,Set(Loop=0)[/LEFT]
[LEFT]exten => _X.,n,While($[${Loop} < 3])[/LEFT]
[LEFT]exten => _X.,n,Background(menu)[/LEFT]
[LEFT]exten => _X.,n,WaitExten(5) ; Wait 5 seconds for user to enter input[/LEFT]
[LEFT]exten => _X.,n,Set(Loop=$[${Loop}+1])[/LEFT]
[LEFT]exten => _X.,n(LoopEnd),EndWhile()[/LEFT]
[LEFT]exten => _X.,n,Hangup() ; No input from user, so hangup[/LEFT]
[LEFT]exten => 1,1,Playback(msg1)[/LEFT]
[LEFT]exten => 1,n,Dial(SIP/301,60,rg)[/LEFT]
[LEFT]exten => 1,n,Hangup()[/LEFT]
[LEFT]exten => 2,1,Playback(msg2)[/LEFT]
[LEFT]exten => 2,n,Dial(SIP/302,60,rg)[/LEFT]
[LEFT]exten => 2,n,Hangup()[/LEFT]
[LEFT]exten => 9,n,Hangup()[/LEFT]
[LEFT]exten => i,1,Set(Loop=$[${Loop}+1])[/LEFT]
[LEFT]exten => i,n,Goto(LoopEnd)[/LEFT]
[LEFT]exten => t,1,Set(Loop=$[${Loop}+1])[/LEFT]
[LEFT]exten => t,n,Goto(LoopEnd)[/LEFT]
بخش اصلی منوی صوتی ما با context ای به نام AutomaticAttendantDemo آغاز میشه که
[LEFT]exten => _X.,1,Answer [/LEFT]
که شماره های دو شماره ای را پاسخ می دهد .
[LEFT][RIGHT]exten => _X.,n,Wait(2)[/RIGHT]
[/LEFT]
دو دقیقه منتظر منتظر می ماند تا اگر در ارتباطات ترانک تاخیری وجود دارد پخش پیام خوش آمد گویی با مشکل مواجه نشود و به صورت کامل پخش شود .
[LEFT]exten => _X.,n,Playback(welcome)[/LEFT]
پیام خوش آمد گویی را پخش می کند .
و با استفاده از ساختار While امکان پخش پیام منوی شرکت را در صورتی که کاربر بعد از شنیدن منو در مدت 5 ثانیه عددی را شماره گیری ننماید، برای 3 بار فراهم می کند .
[LEFT]exten => _X.,n,Set(Loop=0)[/LEFT]
[LEFT]exten => _X.,n,While($[${Loop} < 3])[/LEFT]
[LEFT]exten => _X.,n,Background(menu)[/LEFT]
[LEFT]exten => _X.,n,WaitExten(5) ; 5 ثانیه منتظر میماند تا کاربر شماره گیری نماید [/LEFT]
[LEFT]exten => _X.,n,Set(Loop=$[${Loop}+1])[/LEFT]
[LEFT]exten => _X.,n(LoopEnd),EndWhile()[/LEFT]
و همچنین اگر کاربر در مدت زمان time out ( که با متغیر t مشخص می شود ) عددی را شماره گیری ننماید یا شماره ای نا معتبر ( i = invalid ) را شماره گیری نمیاد نیز سه بار به کاربر امکان انتخاب مجدد در بین منوی صوتی داده خواهد شد .
[LEFT]exten => i,1,Set(Loop=$[${Loop}+1])[/LEFT]
[LEFT]exten => i,n,Goto(LoopEnd)[/LEFT]
[LEFT]exten => t,1,Set(Loop=$[${Loop}+1])[/LEFT]
[LEFT]exten => t,n,Goto(LoopEnd)[/LEFT]
در صورتی که کاربر عدد 1 را شماره گیری نماید به داخلی آی پی ( از نوع SIP ) به شماره 301 متصل شده و با شماره گیری عدد 2 به داخلی شماره 302 متصل می شود .
[LEFT]exten => 1,1,Playback(msg1)[/LEFT]
[LEFT]exten => 1,n,Dial(SIP/301,60,rg)[/LEFT]
[LEFT]exten => 1,n,Hangup()[/LEFT]
[LEFT]exten => 2,1,Playback(msg2)[/LEFT]
[LEFT]exten => 2,n,Dial(SIP/302,60,rg)[/LEFT]
[LEFT]exten => 2,n,Hangup()[/LEFT]
[CENTER]امید مهاجرانی
Omid dot Mohajerani at gmail dot com
linux-notes.blogfa.com
[/CENTER]
[RIGHT]
[/RIGHT]