...

اجرای شرطی دستورات با برنامه ExecIfTime در استریسک

فهرست مطالب

زمان مطالعه: 2 دقیقه

مقدمه

در بسیاری از پروژه‌های VoIP و سیستم‌های تلفنی مبتنی بر استریسک، نیاز است برخی برنامه‌ها یا عملیات فقط در زمان‌ها و روزهای خاص اجرا شوند. برای مثال، امکان دارد بخواهید تماس‌ها فقط در ساعات کاری به بخش فروش منتقل شوند یا خارج از ساعات کاری به پیغام صوتی هدایت شوند.

برنامه ExecIfTime در استریسک این امکان را به شما می‌دهد که دستورات مختلف Dialplan را بر اساس زمان، روزهای هفته، تاریخ و ساعت به صورت شرطی اجرا کنید.


برنامه ExecIfTime چیست؟

ExecIfTime یک برنامه کاربردی است که بر اساس بازه زمانی مشخص، یک دستور (Application) را اجرا می‌کند. این برنامه به شما امکان می‌دهد Dialplan هوشمندتری داشته باشید و سناریوهای پیچیده زمانی را پیاده‌سازی کنید.


ساختار کلی برنامه ExecIfTime

ExecIfTime(timespan,days_of_week,days_of_month,months,application(args))
  • timespan: بازه زمانی به فرمت HHMM-HHMM (ساعت شروع – ساعت پایان)

  • days_of_week: روزهای هفته به صورت اعداد ۰ تا ۶ (یکشنبه تا شنبه) یا حروف

  • days_of_month: روزهای ماه به صورت اعداد (۱ تا ۳۱) یا * برای همه روزها

  • months: ماه‌های سال به صورت اعداد (۱ تا ۱۲) یا *

  • application(args): برنامه استریسک به همراه پارامترهای آن که قرار است اجرا شود


مثال ساده

اجرا کردن دستور Dial فقط در ساعات ۹ صبح تا ۵ بعدازظهر از دوشنبه تا جمعه:

exten => 1000,1,Answer(
exten => 1000,n,ExecIfTime(0900-1700,mon-fri,*,*,Dial(SIP/1000))
exten => 1000,n,Hangup()

توضیح: اگر تماس در روزهای کاری و ساعات مشخص شده باشد، تماس به داخلی ۱۰۰۰ منتقل می‌شود، در غیر اینصورت تماس قطع می‌شود.


توضیح پارامترها با مثال‌های کاربردی

پارامتر توضیح مثال کاربردی
timespan بازه زمانی (ساعت شروع-پایان) ۰۹۰۰-۱۷۰۰ (۹ صبح تا ۵ عصر)
days_of_week روزهای هفته به صورت mon-fri یا ۰-۶ mon-fri (دوشنبه تا جمعه)
days_of_month روزهای ماه به صورت اعداد یا * ۱-۱۵ (۱۵ روز اول ماه)
months ماه‌های سال به صورت اعداد یا * ۱-۶ (شش ماه اول سال)
application(args) برنامه استریسک به همراه پارامترها Dial(SIP/1000)

نکات مهم

  • برنامه ExecIfTime فقط در صورت برقرار بودن شرط زمان، برنامه مورد نظر را اجرا می‌کند.

  • اگر شرط زمان برقرار نباشد، به دستور بعدی می‌رود یا می‌توانید در Dialplan وضعیت‌های دیگر را مدیریت کنید.

  • این برنامه به ویژه در کانتکست‌های پیش‌فرض ایزابل مانند [from-internal-additional] و کانتکست‌های اختصاصی مانند [voipiran] بسیار کاربرد دارد.

  • بهتر است در اجرای IVR یا مسیرهای تماس زمانی از این برنامه استفاده شود تا تماس‌ها بر اساس زمان به بخش‌های مناسب هدایت شوند.


مثال‌های کاربردی

مثال ۱: هدایت تماس به صف فروش در ساعات کاری

exten => 5000,1,Answer(
exten => 5000,n,ExecIfTime(0900-1700,mon-fri,*,*,Dial(Queue,sales_queue)
exten => 5000,n,Playback(out-of-hours
exten => 5000,n,Hangup()

توضیح: اگر تماس در ساعات کاری دوشنبه تا جمعه باشد، تماس به صف فروش منتقل می‌شود، در غیر اینصورت پیام “خارج از ساعات کاری” پخش و تماس قطع می‌شود.


مثال ۲: محدود کردن تماس در تعطیلات

exten => 6000,1,Answer()
exten => 6000,n,ExecIfTime(*,*,25-31,12,Playback(seasonal-message))
exten => 6000,n,ExecIfTime(*,*,1-24,12,Dial(SIP/6000))
exten => 6000,n,Hangup()

توضیح: اگر تماس در ۲۵ تا ۳۱ دسامبر باشد، پیام خاصی پخش می‌شود، در غیر اینصورت تماس به داخلی ۶۰۰۰ منتقل می‌شود.


مثال ۳: اجرای برنامه متفاوت در آخر هفته

exten => 7000,1,Answer()
exten => 7000,n,ExecIfTime(*,sat-sun,*,*,Playback(weekend-message))
exten => 7000,n,ExecIfTime(*,mon-fri,*,*,Dial(SIP/7000))
exten => 7000,n,Hangup()

توضیح: در آخر هفته پیام خاص پخش می‌شود و در روزهای کاری تماس به داخلی ۷۰۰۰ منتقل می‌شود.


جمع‌بندی

برنامه ExecIfTime در استریسک یکی از مهم‌ترین ابزارها برای کنترل زمان‌بندی اجرای برنامه‌ها و دستورها است که به کمک آن می‌توان سناریوهای تماس هوشمند و متناسب با نیاز کسب‌وکار پیاده کرد.


FAQ – سوالات متداول

س: آیا می‌توانم چند بازه زمانی را با ExecIfTime بررسی کنم؟
ج: خیر، برای بررسی چند بازه باید چند بار ExecIfTime با شروط مختلف تعریف کنید.

س: اگر شرط زمان برقرار نباشد، چه اتفاقی می‌افتد؟
ج: برنامه اجرا نمی‌شود و به دستور بعدی Dialplan می‌رود.


لینک‌های مرتبط

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از

0 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها