آخرین ویرایش خرداد ۳, ۱۴۰۴ حامد کوه فلاح
در طراحی دیالپلنهای حرفهای، گاهی لازم است بسته به شرایط مختلف تماس، مسیر اجرای تماس را تغییر دهیم. اینجاست که دستور GotoIf() در استریسک وارد عمل میشود.
<span id="__span-0-1">GotoIf(condition?[labeliftrue:[labeliffalse]])
</span> دستور GotoIf چگونه کار میکند؟
ساختار کلی دستور بهصورت زیر است:
<span class="hljs-attr">exten</span> => <span class="hljs-number">100</span>,<span class="hljs-number">1</span>,Set(myVar=<span class="hljs-number">1</span>)<span class="hljs-attr">exten</span> => <span class="hljs-number">100</span>,<span class="hljs-number">2</span>,GotoIf($[<span class="hljs-string">"${myVar}"</span> = <span class="hljs-string">"1"</span>]?voipiran,special,<span class="hljs-number">1</span>:voipiran,normal,<span class="hljs-number">1</span>)
در این مثال اگر مقدار متغیر myVar برابر ۱ باشد، تماس به اکستنشن special در کانتکست voipiran هدایت میشود. در غیر این صورت به normal.
پارامترها:
-
شرط: هر شرطی که با
$[...]نوشته شود. -
true-branch: مقصدی که در صورت برقرار بودن شرط تماس به آن برود.
-
false-branch: مقصدی که در صورت برقرار نبودن شرط تماس به آن برود.
🔗 اگر هنوز با متغیرها در استریسک آشنا نیستید، پیشنهاد میکنم مقاله آموزش متغیرها در Dialplan استریسک (Asterisk Variables) را بخوانید.
مثال: بررسی شماره تماسگیرنده (CallerID)
[voipiran]
exten => 2000,1,NoOp(شروع پردازش تماسexten => 2000,2,GotoIf($["${CALLERID(num)}" = "09121234567"]?vip,1:normal,1)
exten => vip,1,Playback(welcome-vip)exten => vip,2,Dial(SIP/1001)
exten => normal,1,Playback(welcome)exten => normal,2,Dial(SIP/1002)
در این مثال اگر تماس از شماره خاصی گرفته شود، تماس به داخلی VIP منتقل میشود و برای دیگران مسیر عادی اجرا میشود.
استفاده از from-internal-additional
اگر بخواهید از داخل ایزابل تماس را به دیالپلنی که نوشتهاید منتقل کنید (مثلاً از یک صف یا IVR)، حتماً باید کانتکست شما در from-internal-additional شامل شود:
[from-internal-additional]include => voipiran











