تعاریف مقدماتی dialplan
Dialplan ، قلب هر استریسک است .در dialplan مشخص می شود استریسک چگونه تماس های ورودی و تماس های ارسالی را اداره کند.
Dialplan استریسک در فایل extensions.conf قرار دارد (extensions.conf معمولاً در مسیر /etc/asterisk قرار دارد.
مسیر های معمول دیگر این فایل در /usr/local/asterisk/etc/ و /opt/asterisk/etc/ است.)
Dialplan از چهار مفهوم اصلی تشکیل شده : context ها، extension ها، priority ها و application ها.
:Contexts
Dialplan ها به بخش هایی که contexts نامیده می شود، تقسیم شدند.
Contexts گروهیextensions را نام گذاری می کند و قسمت های مختلف dialplan را از ارتباط متقابل با یکدیگر متمایز می کند. extension ی که در یک context مشخص شده، از extension های context دیگر ، کاملاً مجزا است، مگر اینکه ارتباط متقابل اجازه داده شود.
یک مثال ساده زمانی است که بخواهیم دو کمپانی از یک سرور استریسک استفاده کنند. اگر منوی صوتی هر کمپانی را در context مربوط به خودش قرار بدهیم، در واقع آنها را از هم جدا کردیم.ما می توانیم مشخص کنیم، اگر extension صفر شماره گذاری شود چه اتفاقی رخ دهد: تماس گیرندگانی که عدد صفر را در منوی صوتی کمپانی A شماره گیری کنند،پاسخ کمپانی A را دریافت کنند و تماس گیرندگانی که عدد صفر را در منوی صوتی کمپانی B وارد می کنند ، پاسخ کمپانی B را دریافت کنند. این مثال نشان می دهد، ما به استریسک می گوییم، وقتی تماس گیرندگان عدد صفر را شماره گیری می کنند تماس را به سمت اپراتور بفرست.
Context ها با قرار گرفتن در براکت ([]) از هم تفکیک می شوند. نام آنها می تواند از حروف A تا Z (حروف کوچک و بزرگ) –اعداد بین ۰ تا ۹ و hyphen و underscore ، تشکیل بشود.(نام context ماکزیمم ۷۹ کاراکتر می تواند داشته باشد)
مثلاً Context برای تماس های ورودی می تواند شبیه این باشد :
تمام دستورالعمل بعد از context قرار می گیرد. در ابتدای dialplan دو context خاص به نام های [general] و [globals] قرار دارد. [general] شامل لیست تنظیمات کلی dialplan است و [globals] درباره ی متعییر هایی است که آنها را تعریف می کنید و در dialplan از آن متغییر ها استفاده می کنید، مانند زیر :
به غیر از این دو context خاص، شما context هاتون را هر چیزی که دوست دارید نام گذاری می کنید.
وقتی شما channel ها را مشخص می کنید( channel، مشخص می کند چگونه ارتباط ها را به سیستم اتصال دهید)،
یکی از پارامترهایی که باید در channel مشخص کنید، context است.در واقع context نقطه ی شروع در dialplan ، برای اتصالی که از آن channel آغاز می شود، است .
:Extensions
در دنیای ارتباط از راه دور، کلمه extension معمولاً به شناسه عددی داده شده به خطی که به تلفن خاصی زنگ می زند، ارجاء داده می شود. در استریسک، extension سری مراحل منحصر بفردی را مشخص می کند.در داخل هر context می توانیم چندین extension بنا به نیازمان تعریف کنیم، زمانیکه یک extension خاص از طریق تماس وارد شده یا رقمی که در channel شماره گیری شده، صدا زده می شود، استریسک مراحل تعیین شده در آن extension را طی می کند.
دستورالعمل برای تعریف extension ، کلمه exten است . بعد از کلمه exten ، فاصله و بعد مساوی ، علامت بزرگ تر قرار می گیرد، مانند زیر :
و به دنیال آن شماره extension قرار می گیرد. نام یک extension می تواند از ترکیب عدد و حروف باشد، ولی برای ارتباط با سیستم های قدیمی تلفنی بهتر است از اعداد برای نام گذاری extension استفاده شود.
یک extension کامل از ۳ قسمت تشکیل شده:
۱- نام یا شماره extension
2- اولویت (هر extension می تواند شامل چند مرحله باشد، شماره مرحله “priority” نام دارد.
۳- Application ، یا دستور که عملی را برای آن تماس انجام می دهد.
این ۳ قسمت توسط ویرگول از هم جدا می شوند.
یک مثال ساده از تعریف یک extension واقعی در زیر آمده است:
در مثال بالا، نام extension ، ۱۲۳ است و اولویت آن ۱ و عمل تعریف شده برای آن Answer است .
riorities
هر extension می تواند چندین مرحله داشته باشد، این مراحل Priorities نام دارند.هر Priorities به ترتیب با شروع از ۱ و اجرای یک application ، نام گذاری می شود.به عنوان مثال اجرای خط زیر با Priority یک، باعث جوابگویی به تلفن می شود و در Priorities دو ، تماس را قطع می کند.
اینکه Answer و Hangup چه هستند در قسمت بعد توضیح داده می شوند، نکته مهم این است که برای extension خاص، استریسک به ترتیب اولویت عمل می کند.
اولویت های شماره گذاری نشده:
در نسخه قدیمی تر استریسک شماره گذاری اولویت باعث برخی مشکلات شد. مثلاً اگر extension ی پانزده Priority داشت، ونیاز به اضافه کردن چیزی در مرحله دو بود، تمام اولویت های بعدی باید به صورت دستی دوباره شماره گذاری می شدند.
در ورژن ۱٫۲، استریسک با طرح، استفاده از اولویت n که مخفف next می باشد، این مشکل را بر طرف کرد. وقتی استریسک با اولویت n برخورد می کند، به شماره اولویت قبلی یکی اضافه می کند. این روش تغییرات در dialplan را ساده تر می کند و دیگر نیازی نیست تمام مراحل دوباره شماره گذاری بشود، به عنوان مثال dialplan شما چیزی شبیه زیر می شود.
استریسک هربار با n مواجه می شود شماره اولویت بعدی را ، برآورد می کند.
فراموش نکنید، همیشه به اولویت با شماره یک نیاز دارید، اگر به اشتباه به جای اولین اولویت، n بگذارید با این پیغام مواجه می شوید(extension دردسترس نیست)
قرار دادن lable در Priority:
قرار دادن lable در اولویت ها، از استریسک ورژن ۱٫۲ به بعد معمول شد. برای مطمئن ساختن اینکه به اولویت خاصی ، ارجاء داده شود، برای قرار دادن lable در Priority، به سادگی labale را بعد از n داخل پرانتز قرار دهید، مانند زیر:
توجه داشته باشید بین n و پرانتز ویرگول قرار نمی گیرد. این اشتباه باعث می شود با این پیغام روبرو شوید(application یافت نمی شود)
در قسمت بعد پرش بین اولویت ها در dialplan را بررسی می کنیم.
Applications:
application ها در dialplan بسیار موثر هستند. هر application عمل خاصی را در channel جاری انجام می دهد، مانند پخش صدا، تماس به channel، قطع تماس و امثال اینها. در قسمت قبل دو application ساده Ansewr() و Hangup()را مشاهده کردید . برخی application ها مانند Answer() , Hangup() به دستورالعملی برای کارشان نیاز ندارند. Application های دیگر به اطلاعات اضافی نیاز دارند، این اطلاعات اضافی argument نام دارند که برای مشخص کردن اینکه چگونه عمل خود را انجام دهند، در داخل application قرار می گیرند.
برای ارسال argument داخل application آنها را بعد از نام application داخل پرانتز قرار می دهند.