آشنایی با متغیرها در Dialplan استریسک (Asterisk Variables)
متغیرها (Variables) در استریسک ابزار قدرتمندی برای ذخیرهسازی و پردازش اطلاعات حین اجرای تماس هستند. این متغیرها در واقع به شما اجازه میدهند اطلاعات تماس را بخوانید، بنویسید و بر اساس آن تصمیمگیری کنید. یادگیری کار با Variableها، یکی از گامهای ضروری در مسیر برنامهنویسی Dialplan است.
Variable چیست؟
متغیر در استریسک، مثل یک ظرف برای نگهداری دادههاست. مثلاً ممکنه بخواهید شماره تماسگیرنده، زمان تماس، یا یک مقدار سفارشی را در طول اجرای تماس ذخیره کنید.
متغیرها در استریسک به دو صورت اصلی وجود دارند:
-
Built-in Variables: متغیرهای پیشفرض که استریسک خودش تولید میکنه، مثل
CALLERID(num)
یاEXTEN
-
User-defined Variables: متغیرهایی که شما با دستور
Set()
تعریف میکنید، مثلاًSet(myvar=123)
دستهبندی مهمترین Variableها
دسته | مثال | توضیح |
---|---|---|
شناسایی تماسگیرنده | ${CALLERID(num)} | شماره تماسگیرنده |
شماره داخلی شمارهگیری شده | ${EXTEN} | عدد داخلیای که کاربر گرفته |
اطلاعات کانال | ${CHANNEL} | نام کانال SIP یا DAHDI |
تاریخ و زمان | ${STRFTIME(...)} | فرمت دلخواه تاریخ و زمان |
متغیر سفارشی | ${myvar} | متغیری که خودتان تعریف میکنید |
نحوه تعریف و استفاده از Variable
برای تعریف یک متغیر از دستور Set()
استفاده میکنیم. مثال:
[voipiran]
exten => 200,1,Answer()
exten => 200,2,Set(myvar=this is voipiran)
exten => 200,3,NoOp(My Var: ${myvar})
exten => 200,4,Playback(hello-world)
exten => 200,5,Hangup()
در این مثال:
-
در خط ۲، یک متغیر به نام
myvar
تعریف شده -
در خط ۳، با
NoOp
مقدارش در لاگ نمایش داده میشه (موقع دیباگ خیلی مفیده) -
سپس پیام خوشآمدگویی پخش و تماس قطع میشه
در سیستم Issabel 5 حتماً این کانتکست (
voipiran
) باید در فایلextensions_custom.conf
تعریف شده باشه و در[from-internal-custom]
include بشه.
کاربردهای عملی Variableها
-
ذخیره مقدار انتخابی کاربر در IVR
-
نگهداری نام داخلی تماسگیرنده
-
پردازش تاریخ و زمان تماس
-
گرفتن تصمیم شرطی بر اساس مقدار متغیرها (در مقالههای بعدی مثل
GotoIf
میبینیم)
نکات مهم
-
برای استفاده از مقدار متغیر، همیشه از
${}
استفاده کنید -
متغیرها در استریسک Case Sensitive هستند
-
میتونید متغیر رو در یک تماس ست کنید و در تماس بعدی استفاده نکنید (بومی هر تماس هستند مگر Global)
در این مقاله، نحوه استفاده از متغیرها در Dialplan استریسک بررسی شد. اگر میخواهید بیشتر در مورد الگوهای شمارهگیری (Extension Pattern Matching) و نحوه استفاده از آنها برای مطابقت با شمارهها بیاموزید، پیشنهاد میکنم مقاله آموزش Extension Pattern Matching در Dialplan استریسک را مطالعه کنید.