آموزش Dial Plan

تعاریف مقدماتی 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  برای تماس های ورودی می تواند شبیه این باشد :

[incoming]

تمام دستورالعمل بعد از context  قرار می گیرد. در ابتدای dialplan  دو context  خاص به نام های  [general]  و [globals] قرار دارد.  [general]  شامل لیست تنظیمات کلی dialplan  است و [globals]  درباره ی متعییر هایی است که آنها را تعریف می کنید و در dialplan از  آن متغییر ها استفاده می کنید، مانند زیر :

[globals]
BAGHERI=ZAP/1

به غیر از این دو context  خاص، شما context هاتون را هر چیزی که دوست دارید نام گذاری می کنید.
وقتی شما channel  ها را مشخص می کنید( channel، مشخص می کند چگونه ارتباط ها را به سیستم  اتصال دهید)،
یکی از پارامترهایی که باید در channel  مشخص کنید، context  است.در واقع context  نقطه ی شروع در dialplan  ، برای اتصالی که از آن channel  آغاز می شود، است .

:Extensions
در دنیای ارتباط از راه دور، کلمه extension  معمولاً به شناسه عددی داده شده به خطی که به تلفن خاصی زنگ می زند، ارجاء داده می شود.  در استریسک، extension  سری مراحل منحصر بفردی را مشخص می کند.در داخل هر context  می توانیم چندین extension  بنا به نیازمان تعریف کنیم، زمانیکه یک extension  خاص از طریق تماس وارد شده یا رقمی که در channel شماره گیری شده، صدا زده می شود، استریسک مراحل تعیین شده در آن extension  را طی می کند.
دستورالعمل برای تعریف extension  ، کلمه exten  است . بعد از کلمه exten ، فاصله و بعد مساوی ، علامت بزرگ تر قرار می گیرد، مانند زیر :

<= exten

و به دنیال آن شماره extension  قرار می گیرد. نام یک extension  می تواند از ترکیب عدد و حروف باشد، ولی برای ارتباط با سیستم های قدیمی تلفنی بهتر است از اعداد برای نام گذاری extension  استفاده شود.

یک extension  کامل از ۳ قسمت تشکیل شده:
۱-   نام  یا شماره extension
2-   اولویت (هر extension  می تواند شامل چند مرحله باشد، شماره مرحله “priority”  نام دارد.
۳-   Application ، یا دستور که عملی را برای آن تماس انجام می دهد.
این ۳ قسمت توسط ویرگول از هم جدا می شوند.

exten => name,priority,application

یک مثال ساده از تعریف یک extension  واقعی در زیر آمده است:

exten => 123,1,Answer

در مثال بالا، نام extension  ، ۱۲۳ است و اولویت آن ۱ و عمل تعریف شده برای آن Answer  است .

:P riorities
هر extension  می تواند چندین مرحله داشته باشد، این مراحل Priorities  نام دارند.هر Priorities به ترتیب با شروع از ۱ و اجرای یک  application ، نام گذاری می شود.به عنوان مثال اجرای خط  زیر با Priority یک، باعث جوابگویی به تلفن  می شود و در Priorities دو ، تماس را قطع می کند.

()exten => 123,1,Answer
()exten => 123,2,Hangup

اینکه Answer  و Hangup  چه هستند در قسمت بعد توضیح داده می شوند، نکته مهم این است که برای extension  خاص، استریسک به ترتیب اولویت عمل می کند.

اولویت های شماره گذاری نشده:
در نسخه قدیمی تر استریسک شماره گذاری اولویت باعث برخی مشکلات شد. مثلاً اگر extension ی پانزده Priority   داشت، ونیاز به اضافه کردن چیزی در مرحله دو بود، تمام اولویت های بعدی باید به صورت دستی دوباره شماره گذاری می شدند.
در ورژن ۱٫۲،  استریسک  با طرح، استفاده از  اولویت  n   که مخفف next  می باشد، این مشکل را بر طرف کرد. وقتی استریسک با اولویت n  برخورد می کند، به شماره اولویت قبلی یکی اضافه می کند. این روش تغییرات در dialplan  را ساده تر می کند و دیگر نیازی نیست تمام مراحل دوباره شماره گذاری بشود، به عنوان مثال dialplan  شما چیزی شبیه زیر می شود.

()exten => 123,1,Answer
exten => 123,n,do something
exten => 123,n,do something
exten => 123,n,do one last thing
()exten => 123,n,Hangup

استریسک هربار با n مواجه می شود شماره اولویت بعدی را ، برآورد می کند.
فراموش نکنید، همیشه به اولویت با شماره یک نیاز دارید، اگر به اشتباه به جای اولین اولویت، n  بگذارید با این پیغام مواجه می شوید(extension  دردسترس نیست)

قرار دادن lable  در  Priority:
قرار دادن lable  در اولویت ها، از استریسک ورژن ۱٫۲ به بعد معمول شد. برای مطمئن ساختن اینکه به اولویت خاصی ، ارجاء داده شود، برای قرار دادن lable  در Priority، به سادگی labale  را بعد از n  داخل پرانتز قرار دهید، مانند زیر:

()exten => 123,n(lable1),application

توجه داشته باشید بین n  و پرانتز ویرگول قرار نمی گیرد. این اشتباه باعث می شود با این پیغام روبرو شوید(application  یافت نمی شود)
در قسمت بعد پرش بین اولویت ها در dialplan  را بررسی می کنیم.

Applications:
application  ها در dialplan  بسیار موثر هستند. هر application  عمل خاصی را در channel جاری انجام می دهد، مانند پخش صدا، تماس به channel، قطع تماس و امثال اینها. در قسمت قبل دو application ساده Ansewr()  و   Hangup()را مشاهده کردید . برخی  application  ها مانند Answer() , Hangup()   به دستورالعملی برای کارشان نیاز ندارند. Application های دیگر به اطلاعات اضافی نیاز دارند، این اطلاعات اضافی argument نام دارند که برای مشخص کردن اینکه چگونه  عمل خود را انجام دهند، در داخل application قرار می گیرند.
برای ارسال argument  داخل application آنها را بعد از نام application داخل پرانتز قرار می دهند.

5 visitors online now
5 guests, 0 members
Max visitors today: 5 at 11:10 am UTC
This month: 5 at 09-09-2010 11:10 am UTC
This year: 8 at 01-20-2010 11:47 am UTC
All time: 15 at 12-19-2009 01:12 pm UTC