Dialplan چیست؟
سیستم تلفنی استریسک (Asterisk) یکی از محبوبترین و پرکاربردترین سیستمهای تلفنی متنباز است که برای پیادهسازی راهکارهای تلفنی مبتنی بر VoIP و PSTN به کار میرود. استریسک بهعنوان یک پلتفرم ارتباطی قوی، به شما این امکان را میدهد که انواع تماسهای ورودی و خروجی را مدیریت کنید، سیستمهای IVR ایجاد کنید، کنفرانسهای صوتی برگزار کنید، و بسیاری از ویژگیهای تلفنی دیگر را پیادهسازی کنید. یکی از مهمترین ویژگیهای استریسک، قابلیت برنامهنویسی و سفارشیسازی تماسها از طریق “Dial Plan” یا همان برنامه تماس است.
در استریسک، “Dialplan” بهعنوان مغز متفکر سیستم عمل میکند. Dialplan مجموعهای از دستورات و برنامههای کاربردی است که تعیین میکند یک تماس ورودی یا خروجی چگونه پردازش شود. درواقع، Dialplan نویسی یعنی کدنویسی برای نحوه مدیریت تماسها در استریسک. هر تماس ورودی یا خروجی از طریق Dialplan پردازش میشود و با توجه به سناریوی تعریفشده، عملیات مختلفی مانند پاسخدهی، انتقال تماس، پخش پیام، ضبط صدا، و غیره روی تماس انجام میشود.
قابلیتهای Dialplan
یکی از مزایای بزرگ سیستم تلفنی استریسک این است که تقریباً هر سناریوی تلفنی را میتوان بهراحتی با استفاده از Dialplan نویسی پیادهسازی کرد. برای مثال:
- ایجاد سیستمهای IVR (Interactive Voice Response) که کاربر با وارد کردن عددهای مختلف، به بخشهای مختلف هدایت میشود.
- تنظیم تماسهای ورودی و خروجی به شمارههای داخلی یا خارجی.
- برقراری تماسهای خودکار برای یادآوری، اعلام هشدار، یا ارسال پیامهای صوتی.
- ضبط تماسها برای اهداف امنیتی یا آموزشی.
- انتقال تماسها به داخلیهای مختلف یا دستگاههای خارجی.
- و بسیاری از موارد دیگر.
چگونه Dialplan نوشته میشود؟
Dialplan شامل چندین Context (زمینه) است که هر کدام از آنها مجموعهای از Extensions (شمارههای داخلی) و Priorities (اولویتها) دارند. هر Extension در Dialplan نشاندهنده یک سناریو خاص است که میتواند شامل مجموعهای از دستورات و برنامههای کاربردی باشد. در هر Extension، شما میتوانید از انواع برنامههای کاربردی مانند Answer
، Hangup
، Dial
و دیگر موارد استفاده کنید تا عملیات مختلفی روی تماس انجام دهید.
مثلاً فرض کنید میخواهید یک تماس ورودی را پاسخ دهید، پیام خوشامدگویی پخش کنید و سپس آن را به یک داخلی خاص هدایت کنید. این سناریو را میتوان بهراحتی در یک Dialplan ساده نوشت:
[my-context]
exten => ۱۰۰,۱,Answer()
exten => ۱۰۰,۲,Playback(custom/salaam)
exten => ۱۰۰,۳,Dial(SIP/۱۰۰)
exten => ۱۰۰,۴,Hangup
()
در این مثال:
- ابتدا تماس پاسخ داده میشود.
- سپس پیام خوشامدگویی پخش میشود.
- بعد از آن، تماس به داخلی ۱۰۰ هدایت میشود.
- در پایان، تماس قطع میشود.
انعطافپذیری Dialplan
از آنجایی که Dialplan کاملاً قابل برنامهنویسی است، میتوان سناریوهای بسیار پیچیدهتری را نیز پیادهسازی کرد. بهعنوان مثال، میتوان سناریوهایی تعریف کرد که بر اساس شرایط خاص مانند زمان، روز هفته، یا شماره تماسگیرنده، تماس به بخشهای مختلف هدایت شود. همچنین امکان تعریف توابع، متغیرها و شرطها در Dialplan وجود دارد که به شما اجازه میدهد هر نوع منطق سفارشی را پیادهسازی کنید.
در مجموع، Dialplan نویسی در استریسک به شما این امکان را میدهد که کنترل کامل و دقیقی بر روی تماسهای تلفنی خود داشته باشید و سناریوهای تلفنی موردنیاز کسبوکارتان را بهراحتی و با انعطافپذیری بالا پیادهسازی کنید. اگر به دنبال یادگیری و تسلط بر Dialplan نویسی و توسعه سیستمهای هوشمند بر پایه استریسک و ایزابل هستید، شرکت در دورههای پیشرفته استریسک که در سایت voipiran.io ارائه میشود، میتواند گزینه مناسبی برای شما باشد.
در سیستم تلفنی استریسک، بخش اصلی هر برنامه تماس (Dial Plan) شامل دستوراتی است که در بخشهای مختلف یک زمینه (Context) تعریف میشوند. هر دستور از یک برنامه کاربردی (Application) در استریسک استفاده میکند که عملی مشخص را در فرایند تماس انجام میدهد. در ادامه به معرفی ۱۰ برنامه کاربردی که بیشتر در استریسک استفاده میشوند، همراه با توضیحات بیشتر درباره موارد استفاده آنها میپردازیم.
۱. Answer (پاسخگویی به تماس)
این برنامه به کانال تماس پاسخ میدهد. اگر کانال از قبل پاسخ داده شده باشد، هیچ عملی انجام نمیشود. برنامه Answer بهطور معمول در ابتدای سناریوهایی استفاده میشود که لازم است پس از برقراری تماس، اقدام خاصی مانند پخش پیغام یا ضبط تماس انجام شود. مثلاً در سناریوهای IVR (پاسخگوی خودکار) ابتدا تماس پاسخ داده میشود، سپس پیام خوشامدگویی پخش میشود.
نحوه استفاده:
exten => ۱۰۰,۱,Answer
()
سناریوهای استفاده:
- تماسهای ورودی به یک سیستم IVR
- شروع ضبط تماسها
۲. Hangup (قطع تماس)
این برنامه تماس را قطع میکند و کانال تماس را پایان میدهد. استفاده از Hangup معمولاً در پایان یک سناریو بهکار میرود، جایی که تماس بهطور کامل پردازش شده و نیاز به قطع آن وجود دارد. به عنوان مثال، پس از پخش پیام پایانی، تماس قطع میشود.
نحوه استفاده:
exten => ۱۰۰,۲,Hangup
()
سناریوهای استفاده:
- پایان تماسهای ورودی پس از پخش پیام یا سرویسهای دیگر
- قطع تماس در مواقع خاص، مثلاً پس از چند بار تکرار درخواست ورودی نامعتبر از کاربر
۳. Congestion (اعلام شلوغی شبکه)
این برنامه صدای شلوغی یا ترافیک شبکه را پخش میکند. مقدار ورودی این برنامه تعداد ثانیههایی است که این صدا پخش میشود. این برنامه در سناریوهایی استفاده میشود که سیستم قادر به پردازش تماس یا برقراری تماس با شماره مقصد نیست و لازم است پیغامی به کاربر پخش شود تا بداند تماس او با مشکل مواجه شده است.
نکته: اگر زمان مشخص شود، پس از اتمام زمان تماس بهطور خودکار قطع میشود، بنابراین همیشه بهتر است با مقدار زمانی استفاده شود.
نحوه استفاده:
exten => ۱۰۰,۳,Congestion(۵
)
سناریوهای استفاده:
- اعلام شلوغی شبکه در هنگام تلاش برای تماس با یک شماره که در دسترس نیست
- پخش پیغام خطا در هنگام عدم امکان برقراری تماس
۴. Playback (پخش فایل صوتی)
این برنامه یک فایل صوتی را بهطور مداوم پخش میکند. معمولاً از Playback برای پخش پیامهای ثابت مانند خوشامدگویی یا اعلام اطلاعات استفاده میشود. این برنامه در سیستمهای IVR و اطلاعرسانی به مشتریان بسیار کاربردی است.
نحوه استفاده:
exten => ۱۰۰,۴,Playback
(welcome)
سناریوهای استفاده:
- پخش پیام خوشامدگویی برای تماسهای ورودی
- اطلاعرسانی به مشتریان در مورد تغییرات در سرویسها یا وضعیت سیستم
۵. Background (پخش فایل صوتی در پسزمینه)
این برنامه یک فایل صوتی را پخش میکند، در حالی که منتظر وارد شدن شمارهها از طرف کاربر است تا به مقصد جدید هدایت شود. برنامه Background معمولاً در سیستمهای IVR استفاده میشود که در آن کاربر پس از شنیدن پیامی باید یک شماره یا گزینه را انتخاب کند. مزیت Background این است که در حین پخش پیام، کاربر میتواند گزینهای را انتخاب کند و نیازی به منتظر ماندن تا پایان پخش فایل صوتی نیست.
نحوه استفاده:
exten => ۱۰۰,۵,Background(menu
)
سناریوهای استفاده:
- سیستمهای IVR که کاربر باید با وارد کردن شماره، به بخش مورد نظر هدایت شود.
- پخش منوهای صوتی در هنگام انتظار کاربر برای انتخاب گزینهها
۶. Verbose (چاپ پیام در خط فرمان)
برای اهداف بررسی و دیباگینگ، این برنامه پیامهایی را به خط فرمان استریسک با توجه به سطح verbosity مشخص شده چاپ میکند. این برنامه بیشتر در زمان توسعه و پشتیبانی سیستم برای بررسی جریان تماسها و خطاهای احتمالی استفاده میشود. برنامه Verbose به مدیران سیستم کمک میکند تا بهراحتی اطلاعات مربوط به اجرای برنامه تماس را مشاهده کنند.
نحوه استفاده:
exten => 100,6,Verbose(2, "Starting the call"
)
سناریوهای استفاده:
- مانیتورینگ جریان تماسها در زمان توسعه
- بررسی و رفع اشکالات در برنامه تماس (Dial Plan)
۷. GoTo (پرش در برنامه تماس)
این برنامه اجازه میدهد که به اولویت، شماره داخلی، یا زمینه دیگری در برنامه تماس پرش کنید. از GoTo برای ایجاد جریانهای پیچیدهتر در برنامه تماس استفاده میشود، مانند پرش به بخشهای مختلف بر اساس ورودیهای کاربر یا شرایط خاص.
نحوه استفاده:
- پرش به اولویت ۲ در همان شماره داخلی:
exten => ۱۰۰,۷,Goto(۲
)
- پرش به شماره داخلی ۳۳۰۱ در اولویت ۱:
exten => ۱۰۰,۷,Goto(۳۳۰۱,۱
)
- پرش به زمینه users، شماره داخلی ۲۲۰۱ در اولویت ۱:
exten => ۱۰۰,۷,Goto(users,۲۲۰۱,۱
)
سناریوهای استفاده:
- مدیریت جریان تماس در سیستمهای IVR
- هدایت تماس به بخشهای مختلف بر اساس نیازهای تماسگیرنده
۸. Set (تنظیم مقدار متغیر)
این برنامه به شما اجازه میدهد مقدار یک متغیر کانال یا یک تابع استریسک را تنظیم کنید. از Set برای ذخیره اطلاعاتی مانند شناسه تماسگیرنده، تنظیم مقادیر متغیرهای محیطی یا کانال استفاده میشود. این برنامه در سناریوهایی که نیاز به پردازش اطلاعات ورودی و استفاده از آن در بخشهای مختلف برنامه تماس دارید، کاربرد دارد.
نحوه استفاده:
exten => ۱۰۰,۸,Set
(CALLERID(name)=Hamed)
سناریوهای استفاده:
- تنظیم شناسه تماسگیرنده برای تماسهای خروجی
- تنظیم متغیرهای مختلف برای پردازش تماس
۹. SayDigits و SayNumber (پخش اعداد)
این برنامهها مقدار عددی وارد شده را میخوانند. SayDigits
اعداد را یکبهیک تلفظ میکند، در حالی که SayNumber
عدد کامل را تلفظ میکند. این برنامهها در سناریوهایی استفاده میشوند که سیستم نیاز دارد اطلاعات عددی مانند شمارهها یا مقادیر را به تماسگیرنده اعلام کند.
نحوه استفاده:
- پخش اعداد بهصورت جداگانه:
exten => ۱۰۰,۹,SayDigits(۱۹۱۰
)
- پخش عدد کامل:
exten => ۱۰۰,۹,SayNumber(۱۹۱۰
)
سناریوهای استفاده:
- اعلام شماره تلفن یا شناسه تماسگیرنده به تماسگیرنده
- اعلام کدهای امنیتی یا شناسههای عددی به کاربر
۱۰. Dial (برقراری تماس)
این برنامه اصلیترین برنامه در استریسک است که تلاش میکند به یک دستگاه یا نقطه انتهایی (Endpoint) متصل شود و تماس برقرار کند. از Dial برای برقراری تماس با دستگاههای مختلف مانند تلفنهای SIP، تلفنهای داخلی یا حتی شمارههای خارجی استفاده میشود. این برنامه در تمامی سناریوهای تماس خروجی کاربرد دارد.
نحوه استفاده:
exten => ۱۰۰,۱۰,Dial(SIP/۱۰۰
)
سناریوهای استفاده:
- برقراری تماسهای خروجی به شمارههای داخلی یا خارجی
- اتصال تماسها به دستگاههای مختلف در شبکه VoIP
نمونه برنامه با استفاده از این برنامهها:
[my-context]
exten => ۱۰۰,۱,Answer()
exten => ۱۰۰,۲,Playback(welcome)
exten => ۱۰۰,۳,Dial(SIP/۱۰۰)
exten => ۱۰۰,۴,Hangup
()
نکات:
برای دریافت اطلاعات درباره برنامههای کاربردی استریسک، میتوانید از دستورات زیر در خط فرمان استریسک استفاده کنید:
- نمایش لیست برنامههای کاربردی:
core show
applications
- نمایش اطلاعات دقیق درباره یک برنامه خاص:
core show
application xxxx
اگر به دنبال برنامهنویسی و توسعه ماژولهای هوشمند روی ایزابل و استریسک هستید، میتوانید در دورههای پیشرفته استریسک که در سایت voipiran.io ارائه میشود شرکت کنید.