معرفی ساختار Context در Dialplan استریسک
در دنیای استریسک، یکی از مهمترین مفاهیم پایهای که باید به آن تسلط داشته باشید، Context است. اگر تازه با دنیای VoIP و Dialplan نویسی آشنا شدهاید، شاید این واژه برایتان کمی مبهم باشد. اما نگران نباشید؛ در این مقاله بهزبان ساده و کاربردی، ساختار Context را بررسی میکنیم، همراه با مثالهایی قابل اجرا روی Asterisk 18 و Issabel 5.
Context چیست و چه کاربردی دارد؟
در استریسک، Context یک فضای مجزا برای تعریف قوانین تماس (Dialplan Rules) است. با استفاده از Contextها میتوان تماسهای مختلف را بهصورت کاملاً جدا از هم مدیریت کرد. مثلاً میتوان یک Context برای تماسهای داخلی، یکی برای تماسهای ورودی، و دیگری برای تماسهای خروجی تعریف کرد.
Context مثل یک اتاق در سیستم تلفنی شماست که تماسها فقط اجازه دارند از قوانینی که داخل آن اتاق نوشته شده استفاده کنند، مگر اینکه مجوز ورود به اتاق دیگری را هم داشته باشند.
چرا Context مهم است؟
-
جلوگیری از دسترسی ناخواسته به تماسها یا خطوط بینالمللی
-
ایجاد نظم در ساختار تماسها
-
افزایش امنیت سیستم ویپ
-
امکان مدیریت راحتتر تماسهای ورودی، خروجی و داخلی
ساختار کلی یک Context:
[my-context]
exten => 100,1,Answer()
exten => 100,2,Playback(welcome)
exten => 100,3,Hangup()
در این مثال، یک Context به نام my-context
تعریف شده و تماس با داخلی ۱۰۰ ابتدا پاسخ داده میشود، سپس پیام صوتی پخش میشود، و در نهایت تماس قطع میشود.
کجا باید Context را تعریف کنیم؟
در سیستم Issabel 5، بهجای ویرایش مستقیم فایل extensions.conf
، بهتر است دیالپلن خود را در فایل زیر اضافه کنید:
/etc/asterisk/extensions_custom.conf
و برای فعال شدن کانتکست، اگر تماس از داخلیها قرار است وارد این کانتکست شود، حتماً باید کانتکست خود را در بخش [from-internal-custom]
(یا [from-internal-additional]
در برخی نسخهها) include کنید:
[from-internal-custom]
include => voipiran
در این مثال، کانتکست ما
voipiran
است.
یک مثال واقعی
[voipiran]
exten => 200,1,Answer()
exten => 200,2,Playback(hello-world)
exten => 200,3,Hangup()
در این مثال، اگر کاربری داخلی ۲۰۰ را شمارهگیری کند، تماس پاسخ داده شده و فایل صوتی hello-world
پخش میشود، سپس تماس قطع میشود. این مثال ساده شروعی عالی برای ساختاردهی تماسهایتان است.
نکات حرفهای
-
نام کانتکستها را همیشه با دقت و معنا انتخاب کنید. مثل:
[from-trunk]
,[internal-users]
,[outbound-calls]
-
از تداخل نام کانتکستها پرهیز کنید
-
در ساختارهای حرفهایتر میتوانید کانتکستها را include یا chain کنید
در این مقاله، با ساختار Contextها در Dialplan استریسک آشنا شدید و نحوه استفاده از آنها برای جداسازی تماسها را یاد گرفتید. اگر علاقهمند به استفاده از متغیرها در Dialplan هستید، مقاله آموزش متغیرها در Dialplan استریسک را حتماً بررسی کنید.