تعریف شیفت کاری

ایجاد شیفت کاری در استریسک
به عنوان مثال ایجاد تایم روز و شب چه برای تماس ورودی و چه تماس خروجی ، یکی از قابلیت های سیستم های تلفنی قدیم (سانترال) ایجاد شیفت کاری به صورت تایم بندی شده است
به عنوان مثال با فشردن کد *12 سیستم به وارد شیفت عصر شده و تماس ها به الگو مربوطه هدایت می گردد
در ادامه قصد آموزش این حالت را در مرکز تلفنی سیموتل را دارم

استریسک دیتابیس داخلی بنام AstDB(Asterisk Database) وجود دارد که به صورت SQLite بوده و داده به صورت Key/Value ذخیره می گردد .
همچنین داده ها به صورت گروهی تقیسم بندی می گردند به صورت زیر
(value) (key) (family)

گام اول

خب حالا برای تعریف فیچرکد دلخواه در کامپوننت OutgoingRoute روت دلخواه را تعریف و به کامپوننت CustomPlan متصل می نماییم
به عنوان مثال کد 87 وارد شیفت ظهر و کد 88 وارد شیفت شب می شویم و برای خارج شدن از این حالت کد 89 در نظر می گیریم

سپس در تنظیمات CustomPlan برنامه مد نظر را طراحی می کنیم
به عنوان مثال

[ShiftWork]
exten => _XX,1,Answer()
same  => n,Noop("Shiftwork-noon")
same  => n,Set(DB(type/ShiftWork)=${EXTEN})
same  => n,playBack(yourvoice)
same  => n,hangup()
exten => _XX,1,Answer()
exten => n,1,Noop("Shiftwork-night")
same  => n,Set(DB(type/ShiftWork)=${EXTEN})
same  => n,playBack(yourvoice)
same  => n,hangup()
exten => n,1,Noop("Shiftwork-normaly")
same  => n,Set(DB(type/ShiftWork)=${EXTEN})
same  => n,playBack(yoursound)
same  => n,hangup()

در خط اول سیستم صرفا نمایش لاگ است مثلا شیفت ظهر تعریف گردید
در خط دوم مقدار مقدار 87 را از کاربر گرفته و در دیتابیس استریسک ذخیره می نماید
در خط سوم آوایی پخش خواهد شد ( آوای مدنظر ما )
خطوط بعدی مشابه با خطوط قبل عمل می نماید و داده را در دیتابیس ذخیره می نماید تا در گام بعدی از این مقدار استفاده نماییم .
سپس تنظیمات را ذخیره نمایید !

گام دوم

در این قسمت با استفاده از دو کامپوننت IncomingRoute با کانتکس های مختلف استفاده می نماییم
تماس های ورودی می بایست با کانتکس کامپوننت اول برابر باشد تا شرط لازم چک گردد سپس در تنظیمات کامپوننت CustomPlan جریان تماس را به کامپوننت بعدی منتقل می نماییم


[WorkShift]
exten => _.!,1,NoOp()
same => n,GotoIf($["${DB(type/ShiftWork)}"="87"]?WorkShift,87,1)
same => n,GotoIf($["${DB(type/ShiftWork)}"="88"]?WorkShift,88,1)
same => n,Goto(IncomingRoute2,${EXTEN},1)
exten => 87,1,Answer()
same => n,playBack(yourvoice)
same => n,Hangup()
exten => 88,1,Answer()
same => n,playBack(yourvoice)
same => n,Hangup()

در خط اول مقدار را گرفته و صرفا نمایش داده می گردد
در خط دوم شرط برابری مقدار چک می گردد به این صورت که اگر مقدار 87 در دیتابیس ذخیره بود و حالت مد نظر اجرا خواهد شد
خط سوم مشابه خط دوم می باشد
خط چهارم اگر مقادیر ذخیره شده در دیتابیس برابر با دو مقدار 87و 88 نباشد حالت بعدی در نظر گرفته می شود و تماس وارد کانتکس IncomingRoute2 می گردد که همان کامپوننت دوم می باشد

1 پسندیده