toluesoft

استریسک به عنوان سیستم سلسله مراتبی صوتی - Asterisk As IVR Server

استریسک به عنوان سیستم سلسله مراتبی صوتی - Asterisk As IVR Server


IVRیا interactive voice response  یکی از قابلیت های پرکاربرد سیستم های تلفنی است که تاحالا حتما شما هم یک بار به اون برخوردید .  منوهای صوتی که شرکت های مختلف برای معرفی بخش های مختلف و ارتباط با اپراتور و ... استفاده می کنند . یا مرکز های اطلاع رسانی تلفنی که به صورت خودکار پیام های خاص منظوره را پخش می کنند . امکان برقراری ارتباط با پایگاه داده ها  قابلیت های مفیدی را در اختیار کاربر قرار می دهد که مراکز چک کردن حساب های بانکی به صورت تلفنی یا مراکز مشاوره ای و... نمونه ای از این نوع سیستم ها هستند .

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

امکان برقراری با پایگاه داده های مختلف از جمله MYSQL ، Oracle ، MSSQL و ...

امکان بهره گیری از واسط های مختلف ارتباطی با خطوط PSTN  ، GSM و ...  و عدم وابستگی به برند خاص

امکان پیاده سازی High Redundancy  در راه حل های حرفه ای و در نتیجه قابلیت اطمینان بالا

امکان بهره گیری از امکانات یک IP PBX و Call Center در کنار قابلیت IVR

پشتیبانی از فرمت های مختلف صوتی

را بتوان مهمترین علت های برشمردن Asterisk در زمره پرقدرترین های ارائه دهنده سرویس IVR دانست .  در این  پست با نحوه تعریف یک IVR  نسبتا حرفه ای دز سیستم تلفنی Asterisk آشنا میشیم.

 

 

[AutomaticAttendantDemo]

exten => _X.,1,Answer

exten => _X.,n,Wait(2) ; Perform a simple 2 seconds delay

exten => _X.,n,Playback(welcome)

exten => _X.,n,Set(Loop=0)

exten => _X.,n,While($[${Loop} < 3])

exten => _X.,n,Background(menu)

exten => _X.,n,WaitExten(5) ; Wait 5 seconds for user to enter input

exten => _X.,n,Set(Loop=$[${Loop}+1])

exten => _X.,n(LoopEnd),EndWhile()

exten => _X.,n,Hangup() ; No input from user, so hangup

 

exten => 1,1,Playback(msg1)

exten => 1,n,Dial(SIP/301,60,rg)

exten => 1,n,Hangup()

 

exten => 2,1,Playback(msg2)

exten => 2,n,Dial(SIP/302,60,rg)

exten => 2,n,Hangup()

 

exten => 9,n,Hangup()

 

exten => i,1,Set(Loop=$[${Loop}+1])

exten => i,n,Goto(LoopEnd)

exten => t,1,Set(Loop=$[${Loop}+1])

exten => t,n,Goto(LoopEnd)

 

 

بخش اصلی منوی صوتی ما با context ای به نام AutomaticAttendantDemo  آغاز میشه که

exten => _X.,1,Answer

که شماره های دو شماره ای را پاسخ می دهد .

exten => _X.,n,Wait(2)

دو دقیقه منتظر منتظر می ماند تا اگر در ارتباطات ترانک تاخیری وجود دارد پخش پیام خوش آمد گویی با مشکل مواجه نشود و به صورت کامل پخش شود .

exten => _X.,n,Playback(welcome)

پیام خوش آمد گویی را پخش می کند .

و با استفاده از ساختار While  امکان پخش پیام منوی شرکت را در صورتی که کاربر بعد از شنیدن منو در مدت 5 ثانیه عددی را شماره گیری ننماید، برای 3 بار فراهم می کند . 

exten => _X.,n,Set(Loop=0)

exten => _X.,n,While($[${Loop} < 3])

exten => _X.,n,Background(menu)

exten => _X.,n,WaitExten(5) ; 5 ثانیه منتظر میماند تا کاربر شماره گیری نماید

exten => _X.,n,Set(Loop=$[${Loop}+1])

exten => _X.,n(LoopEnd),EndWhile()

و همچنین اگر کاربر در مدت زمان time out  ( که با متغیر t  مشخص می شود ) عددی را شماره گیری ننماید یا شماره ای نا معتبر ( i = invalid )  را شماره گیری نمیاد نیز سه بار به کاربر امکان انتخاب مجدد در بین منوی صوتی داده خواهد شد .

 

exten => i,1,Set(Loop=$[${Loop}+1])

exten => i,n,Goto(LoopEnd)

exten => t,1,Set(Loop=$[${Loop}+1])

exten => t,n,Goto(LoopEnd)

 

در صورتی که کاربر عدد 1 را شماره گیری نماید به داخلی آی پی ( از نوع SIP ) به شماره 301 متصل شده و  با شماره گیری عدد 2 به داخلی شماره 302 متصل می شود .

exten => 1,1,Playback(msg1)

exten => 1,n,Dial(SIP/301,60,rg)

exten => 1,n,Hangup()

 

exten => 2,1,Playback(msg2)

exten => 2,n,Dial(SIP/302,60,rg)

exten => 2,n,Hangup()
 

امید مهاجرانی

 

تعداد بازدید : 4923
اشتراک گذاری:
هنوز دیدگاهی ثبت نشده‌است.شما هم می‌توانید در مورد این مطلب نظر دهید

یک نظر اضافه کنید

شماره موبایل شما منتشر نخواهد شد.زمینه های مورد نیاز هستند علامت گذاری شده *

امتیاز شما