🟦 مقدمه
در سیستم تلفنی Asterisk، آنچه که تماسها را هدایت میکند و رفتار آنها را مشخص میکند، چیزی است بهنام Dialplan. به زبان ساده، دیالپلن مغز متفکر سیستم تلفنی شماست. اگر بخواهی تعیین کنی چه شمارههایی قابل شمارهگیری باشند، چه منویی به کاربر پخش شود یا تماس به کدام داخلی یا مقصد هدایت شود، همه اینها در Dialplan انجام میشود.
در این مقاله از وبسایت Voipiran.io، مرجع تخصصی آموزشهای Asterisk و Issabel در ایران، قصد داریم مفهوم Dialplan را از پایه برایت باز کنیم؛ مخصوصاً با تمرکز بر نسخه Asterisk 18 و Issabel 5.
🧭 Dialplan چیست؟
Dialplan مجموعهای از دستورات است که در فایلهای متنی داخل استریسک نوشته میشود تا تعیین کند تماسهای ورودی یا خروجی چه مراحلی را طی کنند.
Dialplan از سه عنصر اصلی تشکیل شده است:
-
Context: بخشی مجزا از منطق تماس، مثل گروهی از تماسها یا داخلیها
-
Extension: شماره یا الگویی که تماس به آن میرسد
-
Priority: مرحله اجرای دستور برای آن Extension
هر مرحله معمولاً یک Application را فراخوانی میکند؛ مانند پخش فایل صوتی، انتقال تماس، دریافت ورودی کاربر و…
📁 محل نوشتن Dialplan در ایزابل ۵
در Issabel 5، برای اینکه تغییراتمان توسط واسط گرافیکی (GUI) بازنویسی نشوند، همیشه باید Dialplan را در فایل زیر بنویسیم:
/etc/asterisk/extensions_custom.conf
نکته بسیار مهم:
برای اینکه Context اختصاصی ما در تماسهای داخلی فعال شود، باید به انتهای کانتکست from-internal-custom
این خط را اضافه کنیم:
[from-internal-custom]
include => voipiran
در اینجا voipiran
نام کانتکست اختصاصی ماست که در ادامه آن را تعریف میکنیم.
🧪 نمونه کد ساده Dialplan
در مثال زیر، ما یک شماره داخلی ۳۰۰۰ را تعریف میکنیم که وقتی تماس گرفتیم، ابتدا پاسخ داده شود، سپس یک پیام خوشآمد پخش شود و در نهایت تماس به داخلی ۱۰۰۰ هدایت شود.
[voipiran]
exten => 3000,1,Answer()
exten => 3000,2,Playback(welcome)
exten => 3000,3,Dial(SIP/1000)
exten => 3000,4,Hangup()
توضیح خطوط:
-
خط ۱: تماس پاسخ داده میشود
-
خط ۲: فایل صوتی welcome از مسیر صوتی استریسک پخش میشود
-
خط ۳: تماس به داخلی SIP شماره ۱۰۰۰ منتقل میشود
-
خط ۴: تماس پایان داده میشود
🔍 درک بهتر Context و Extension
فرض کن شما میخواهید گروهی از شمارهها (مثلاً داخلیهای شرکت) فقط به یکسری عملکرد خاص دسترسی داشته باشند، یا تماسهای ورودی از ترانک خاصی مسیر جداگانهای داشته باشند؛ در این حالت با تعریف Contextهای مختلف و include کردن آنها در جای مناسب، کنترل کامل تماسها را در اختیار خواهید داشت.
💡 کاربردهای Dialplan در دنیای واقعی
در دورههای تخصصی ویپ که توسط تیم Voipiran.io برگزار میشود، یکی از مهمترین مباحث آموزش، طراحی سناریوهای واقعی و پیچیده با استفاده از Dialplan است. از منوهای صوتی حرفهای گرفته تا سیستمهای انتقال تماس خودکار یا ضبط مکالمات، همگی با همین ساختار پیادهسازی میشوند.
📌 نکات مهم برای استفاده در ایزابل
-
همیشه از فایل
extensions_custom.conf
استفاده کن. -
کانتکست خودت رو داخل
from-internal-custom
include کن. -
از نامهای اختصاصی برای Context استفاده کن تا با کانتکستهای خود ایزابل تداخل نداشته باشه.
-
اگر از Playback استفاده میکنی، مطمئن شو فایل صوتی مورد نظر داخل
/var/lib/asterisk/sounds/
باشه. -
به جای ساختار
same => n,
از نوشتن کاملexten =>
در هر خط استفاده کن تا خوانایی بیشتر باشه.
✅ جمعبندی
در این مقاله یاد گرفتیم که Dialplan چیست، از چه اجزایی ساخته شده و چطور میتوان یک نمونه ساده از آن را در Asterisk 18 و Issabel 5 پیادهسازی کرد. این فقط شروع راهه؛ در مقالات بعدی، وارد جزئیات کاربردیتر مثل آموزش دستورات پرکاربرد (Applicationها) خواهیم شد.