5 minutes reading time (1036 words)

برنامه Dial

ارتباط کانال جاری به یک یا چند کانال دیگر

Dial(technology/resource,timeout,options,URL)

Dial(technology1/resource1[&tech2/resource2[&...]],timeout,options,URL)

به نظر من این دستور و دستور بعدی (original) را چندین بار بخوانید. این 2 از دستورات مهم Dialplan می باشد که با آنها کار های جالب و بسیار پر کاربردی می توانید انجام بدهید. دستور Dial برای اتصال کانال جاری به یک یا چند کانال دیگر استفاده می شود مثلا وقتی می خواهید تماس جاری را به یک داخلی دیگر، برنامه دیگر و یا هر بخش دیگری متصل نمایید. دستور Dial هر نوع کانالی را قبول می کند کانال هایی همانند SIP, IAX2, H323, MGCP, DAHDI, ZAP, LOCAL

پارامتر ها:

Technology نوع کانال شما ست و resource نام کانال شما، timeout مدت زمانی که Asterisk از زمان سعی برای برقراری تماس در نظر می گیرد و اگر در این بازه زمانی تماس برقرار نشود برنامه را متوقف خواهد کرد، options یکسری امکانات که Asterisk برای تماس در اختیار شما قرار می دهد که در ادامه با برخی از آنها آشنا خواهیم شد. URL رو هم توضیح نمی دم ! چون بسیار به ندرت مورد استفاده قرار می گیرد فقط بدانید می توانید یک URL را به Endpoint ارسال نمایید، برخی Endpoint ها این امکان را دارند که ار این URL ها استفاده کنند.

$1v     مثال1:

انتقال تماس جاری  به داخلی 101 از نوع SIP

[dial-test1]

exten => 123,1,Dial(SIP/101)

$1v     مثال2:

انتقال تماس جاری به داخلی 201 از نوع IAX

[dial-test2]

exten => 123,1,Dial(IAX2/201)

$1v     مثال3:

انتقال تماس جاری به کارت شهری و گرفتن شماره 9912210

[dial-test3]

exten => 123,1,Dial(DAHDI/g0/9912210)

$1v     مثال4:

انتقال تماس جاری به پورت یک کارت ، این مورد در حالتی استفاده می شود که کارت شما دارای پورت های FXS باشد.

[dial-test4]

exten => 123,1,Dial(DAHDI/1)

 نکته: لازم بذکرست با استفاده از علامت & می توانید همزمان با مقاصد مختلف تماس حاصل کنید. در مثال زیر با شماره گیری 100 تمامی Destination به طور همزمان وبا استراتژی ringallشروع به زنگ خوردن می کنند، در این حالت تماس ورودی با اولین مقصدی  channel را answer کرده است bridgeمی شود وفورا زنگ خوردن بقیه داخلی ها متوقف می گردد.

$1v     مثال5:

[dial-test5]

exten => 100,1,Dial(DAHDI/1&SIP/4004$DAHDI/g0/97677777)

اما استفاده از پارامتر شوم یعنی Dial Option می تواند کار با این دستور را جذاب تر نماید در ادامه به بررسی برخی Option های پر کاربرد اشاره می کنیم.

        m[class] با استفاده از این پارامتر تماس گیرنده از ابتدای شماره گیری به جای شنیدن صدای بوق، music on hold  را می شنود. شما می توانید با تعریف کلاس در musiconhold.conf نوع موزیکی که پخش می شود را نیز تعیین نمایید اما اگر نام کلاسی را جلوی m ننویسید از کلاس پیش فرض Elastix برای پخش موزیک استفاده  می کند.

[dial-test5]

exten => 201,1,Dial(SIP/201,10,m)

same => n,Playback(vm-nobodyavail)

same => n,Hangup()

      L(x[:y][:z])   برای محدود کردن مدت زمان مکالمه تماس گیرنده از این پارامتر استفاده می شود.

 X مدت زمان مجاز برای مکالمه است و بعد از گذشت این مدت زمان تماس قطع می گردد. واحد آن برحسب میلی ثانیه، Y مدت زمان باقی مانده به پایان مکالمه است که به منظور اعلام هشدار قطع از آن استفاده می گردد. واحد آن نیز برحسب میلی ثانیه است و Z نیز پیغام هشدار قطع هر Z میلی ثانیه قبل از قطع نماس تکرار می شود .

[dial-test6]

exten => 123,1,Answer

exten => 123,n,Dial(sip/201,30,L(30000[:10000][:4000]))

exten => 123,n,Hangup

اما جالب تر اینجاست بدانید امکانات پارامتر L فقط همین نیست ! با یکسری متغییر ها می توانید در آن تغییرات ایجاد نمایید. نحوه قرار دادن مقادیر در متغییر را در بخش بعدی توضیح خواهم داد ولی به طور کلی بدانید با دستور set می توان یک متغییر را مقدار دهی کرد، اما در زیر بست متغییر هایی را می بینید که بر روی پارامتر L تاثیر می گزارند.

LIMIT_PLAYAUDIO_CALLER=yes|no

آیا کسی که دریافت کننده تماس است (Calling Party) پیام اخطار را بشنود یا خیر.

LIMIT_PLAYAUDIO_CALLEE=yes|no

آیا کسی که تماس گیرنده است (called party) پیام اخطار را بشنود یا خیر.

LIMIT_TIMEOUT_FILE=filename

نام فایل پیامی که پس از اتمام مدت زمان مکالمه باید پخش گردد.

LIMIT_CONNECT_FILE=filename

نام فایل پیامی که هنگام برقراری مکالمه باید پخش گردد.

LIMIT_WARNING_FILE=filename

نام فایل پیامی که به عنوان اخطار باید پخش گردد، البته در صورتی که پارمتر y تعیین شده باشد.

      t  این امکان را به کسی که تماس را دریافت کرده  (Called Party) می دهد تا با زدن کلید # بتواند انتقال  (Blind Transfer) انجام دهد. وقتی شما # را در Dial options قرار می دهید Asterisk موظف می شود تا هنگام مکالمه منتظر در یافت # بماند و در صورت ارسال عکس العمل نشان دهد.

$1ü      T این امکان را به کسی که تماس را برقرار کرده  (Calling Party) می دهد تا با زدن کلید # بتواند انتقال  (Blind Transfer) انجام دهد. وقتی شما # را در Dial options قرار می دهید Asterisk موظف می شود تا هنگام مکالمه منتظر در یافت # بماند و در صورت ارسال عکس العمل نشان دهد.

      h  این امکان را به کسی که تماس را دریافت کرده  (Called Party) می دهد تا با زدن کلید * بتواند تماس را قطع کند.

      H  این امکان را به کسی که تماس را برقرار کرده  (Calling Party) می دهد تا با زدن کلید * بتواند تماس را قطع کند.

     D([called][:calling])   با استفاده از این Option می توان پس از برقراری تماس یک DTMF  را به سمت دریافت کننده تماس (called party) و یا برقرار کننده تماس (calling party) ویا هر دو آنها ارسال نمود.

نکته: پس از انجام دستور Dial و با توجه به نتیجه آن در متغییر {DIALSTATUS}$  قرار خواهد گرفت نتیجه تماس می تواند یکی از موارد زیر باشد.

CHANUNAVAIL : Channel unavailable

کانال مقصد در دسترس نیست.

BUSY : Returned busy

کانال مقصد مشغول می باشد.

NOANSWER : No Answer (i.e SIP 480 or 604 response)

کانال مقصد پاسخگو نیست.

ANSWER : Call was answered

تماس پاسخ داده شده است.

CANCEL : Call attempt cancelled

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

DONTCALL : Privacy manager don't call

ممکن است بر اساس دسترسی های تعریف شده تماس با مقصد امکان پذیر نباشد.

TORTURE : Privacy manager torture menu

CONGESTION : Means Congestion, or anything else (some other error setting up the call)

وقتی که تماس شما به هر دلیلی به مشکل بر می خورد.

برنامه WaitExten
برنامه Originate
 

نظرات

نظري ارسال نشده است
Default Avatar
Already Registered? Login Here
مهمان
پنج شنبه, 24 آبان 1397

تصویر امنیتی

/blog?task=captcha.generate&no_html=1&tmpl=component&id=185364

محبوب ترین مقالات

10 قابلیتی که در مورد استریسک نمی دانید.استریسک (Asterisk) یک موتور تلفنی بسیار قدرتمند و بی رقیب اس...
Dialplan خط به خط اجرا می شود و در هر خط یک کاری انجام می پذیرد، به هر یک یا چند خط از Dialplan که د...
همانطور که می دانید لاگ فایل استریسک در مسیر /var/log/asterisk و به نام full قرار دارد، به ظور پیش ف...
وارد قلب استریسک می شویم، یکی از جذاب ترین قسمت های استریسک جایی که جریان تماس ساخته می شود، هر تماس...
فایل extension.conf به بخش هایی به نام context تقسیم بندی می شود و در دل این contextها است که کدهای ...
وقتی بر روی Elastix می خواهید Dialplan نویسی کنید باید یکسری نکات را بدانیم، ما در این بخش یاد خواهی...
استریسک سیستم پیچیده و بزرگی است، هر زیر قسمت از این سیستم بزرگ با برخی فایل ها سرو کار دارد، این فا...