دستور Dial()
یکی از حیاتیترین و پرکاربردترین دستورات در استریسک است. این دستور وظیفهی برقراری تماس با یک مقصد مشخص را دارد. اما چیزی که این دستور را بسیار قدرتمند میکند، وجود آپشنها (Options) است.
در این مقاله، علاوه بر آموزش اولیه، به بررسی مهمترین گزینههای پرکاربرد مانند g
, L
, A
, tT
, r
, و m
خواهیم پرداخت.
ساختار پایهی دستور Dial در استریسک
Dial(Technology/Endpoint[,timeout][,options])
-
Technology/Endpoint: مانند
SIP/200
یاPJSIP/200
یاSIP/trunk-name/09121234567
-
timeout: مدتزمان زنگ خوردن (مثلاً ۲۰ ثانیه)
-
options: دستورات خاص برای کنترل رفتار تماس
مثال ساده اولیه:
exten => 101,1,Answer()
exten => 101,2,Dial(SIP/200,20)
exten => 101,3,Hangup()
استفاده در کانتکست [voipiran]
[voipiran]
exten => 101,1,Answer()
exten => 101,2,Dial(SIP/200,20)
exten => 101,3,Hangup()
گزینههای پرکاربرد در دستور Dial
۱. گزینه g
— اجرای استپهای بعدی حتی پس از قطع تماس مقصد
بهصورت پیشفرض، اگر مقصد تماس قطع کند، تماس اصلی هم قطع میشود و استپهای بعدی اجرا نمیشوند. با گزینه g
، استپهای بعد از Dial()
حتی پس از قطع تماس ادامه مییابند.
مثال:
exten => 102,1,Answer()
exten => 102,2,Dial(SIP/200,20,g)
exten => 102,3,Playback(goodbye)
exten => 102,4,Hangup()
۲. گزینه L(x[:y][:z])
— محدود کردن زمان تماس
با L
میتوانید مدت تماس را محدود کنید.
فرمت:
L(max_duration[:warning_time][:repeat_warning])
-
max_duration
: حداکثر زمان تماس (به میلیثانیه) -
warning_time
: زمان هشدار اولیه قبل از قطع -
repeat_warning
: فاصله بین هشدارها
مثال: تماس حداکثر ۶۰ ثانیه با هشدار در ثانیه ۴۵
exten => 103,1,Answer()
exten => 103,2,Dial(SIP/200,60,L(60000:45000:5000))
۳. گزینه A(x)
— اجرای صوت در مقصد هنگام پاسخ
با این گزینه، هنگام پاسخ مقصد، فایل صوتی مشخصی پخش میشود (برای مخاطب مقصد، نه تماسگیرنده).
مثال:
exten => 104,1,Answer()
exten => 104,2,Dial(SIP/200,,A(welcome))
توجه: فایل صوتی باید در /var/lib/asterisk/sounds
موجود باشد و پسوند لازم نیست.
۴. گزینه tT
— اجازه انتقال تماس (Call Transfer)
-
t
: اجازه به تماسگیرنده برای انتقال تماس با فشردن#
-
T
: اجازه به پاسخدهنده برای انتقال تماس با فشردن#
مثال:
exten => 105,1,Answer()
exten => 105,2,Dial(SIP/200,,tT)
۵. گزینه r
— تولید صدای زنگ برای تماسگیرنده حتی اگر تماس هنوز وصل نشده باشد
مثال:
exten => 106,1,Answer()
exten => 106,2,Dial(SIP/200,,r)
در صورت عدم استفاده از r
، ممکن است تماسگیرنده سکوت بشنود تا زمانی که مقصد پاسخ دهد.
۶. گزینه m(x)
— پخش موزیک در حالت انتظار (Music On Hold)
با این گزینه، هنگام انتظار (قبل از پاسخ مقصد)، تماسگیرنده به جای بوق زنگ، موزیک خاصی را میشنود.
مثال:
exten => 107,1,Answer()
exten => 107,2,Dial(SIP/200,,m(classical))
نکته: باید یک کلاس موزیک آنهولد به نام classical
در musiconhold.conf
تعریف شده باشد.
مثال ترکیبی و حرفهای
[voipiran]
exten => 200,1,Answer()
same => n,Dial(SIP/300,60,gtrL(60000:45000:10000)A(welcome)m(default))
same => n,Playback(goodbye)
same => n,Hangup()
در این مثال:
-
تماس به داخلی ۳۰۰ میرود
-
زمان تماس محدود به ۶۰ ثانیه است
-
انتقال تماس مجاز است
-
بعد از پاسخ، فایل
welcome
برای مقصد پخش میشود -
تماسگیرنده در حالت انتظار، موزیک
default
را میشنود -
پس از قطع تماس، پیام خداحافظی پخش میشود