تغییر حالت سیستم تلفنی با استفاده از AstDB

معمولا ما IVR را طوری تنظیم می کنیم که بعد از ساعت اداری پیام دیگری پخش میشود و تماس ها به موبایل افراد منتقل میشود . این کار را با استفاده از GotoIfTime به صورت خودکار انجام میدهیم مگر اینکه مثل پروژه هفته اخیر ما برای یک صرافی مدیر سیستم اصلا اعتقادی به خودکار سازی کارها نداشته باشه و همه چیز را بخواد به تایید خودش و به صورت دستی انجام دهد . درخواست ایشان شماره گیری یک شماره تلفن در هر زمانی که صلاح دونستن و تغییر حالت سیستم و وارد کردن شماره تلفنی که باید خط ها روی ان دایورت شود بود . برای اینکار چون ما نیاز داریم که شماره را ذخیره کنیم ساده ترین راه استفاده از پایگاه داده داخلی خود استریسک به نام AstDB هستش . برخلاف متغیرهای استریسک که یا به صورت ثابت قابل مقداردهی هستند یا در طول برقراری یک کانال مقدار دارند با استفاده از AstDB میتوانیم متغیر ها را به راحتی به صورت همیشگی ثبت و استفاده کنیم .

برای مقدار دهی به یک متغیر در AstDB میتوانیم از دستور Set استفاده کنیم :

exten => 456,1,Set(${DB(test/count)=1})

و برای فراخوانی یک مقدار از متغیر در AstDB نیز از دستور Set استفاده می کنیم :

exten => 456,n,Set(COUNT=${DB(test/count)})

خوب حالا در سناریوی ما یک متغیر نیاز داریم که وضعیت سیستم را برای مشخص کنه . اسم این متغیر را ما daymode میگذاریم . فقط کافیه دو تا extension تعریف کنیم که مدیر سیستم با شماره گیری یکی از این دو شماره بتونه سیستم را به صورت دستی به حالت daymode  بیاره تا منوی صوتی ساعات کاری پخش بشه و تلفن های به داخلی ها متصل شوند یا اینکه با شماره گیری شماره دوم سیستم را به حالت nightmode ببره و یک شماره موبایل وارد کنه تا منوی صوتی ساعت غیر کاری پخش بشه و تماس ها به این شماره موبایل ورودی منتقل شوند .

exten => *1,1,Set(DB(sarafi/daymode)=1)

exten => *1,n,Playback(daymode)

;———————————————————-

exten => *2,1,Set(DB(sarafi/daymode)=0)

exten => *2,n,Playback(nightmode)

exten => *2,n,Read(Mobile_Number,enter_number,12,3)

exten => *2,n,Set(DB(sarafi/mobilenum)=${Mobile_Number})

exten => *2,n,Playback(beep)

exten => *2,n,Hangup()

در اینجا شماره گیری ستاره ۱ سیستم را به حالت روزانه و ستاره ۲ سیستم را به حالت شبانه خواهد بود و تماس های به شماره موبایل وارد شده منتقل خواهند شد . مشخصا ما در ورودی نیاز به چک کردن این متغییر و مسیر دهی به منوی صوتی مربوطه خواهیم بود .

exten => s,1,Answer()

exten => s,n,Set(day=${DB(sarafi/daymode)})

exten => s,n,GotoIf($[“${day}” = “1”]?day:night)

exten => s,n(day),Goto(DayModeIVR,s,1)

exten => s,n,Hangup()

exten => s,n(night),Goto(NightModeIVR,s,1)

exten => s,n,Hangup()

منابع :

http://www.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-CHP-6-SECT-6.html

pixelstats trackingpixel

نوشتن دیدگاه