اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

DialPlan چیست؟

بستن
این موضوع بسته شده است.
X
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    DialPlan چیست؟

    وارد قلب استریسک می شویم، یکی از جذاب ترین قسمت های استریسک جایی که جریان تماس ساخته می شود، هر تماسی که بر قرار می شود و به هر قسمتی که می خواهد برود باید در DialPlan دارای مسیر تعیین شده باشد. DialPlan ساختاری گام به گام دارد که در ادامه با آن آشنا خواهیم شد.
    یادگیری ساختار DialPlan برای شما که می خواهید الستیکس را حرفه ای بیاموزید ضروریت و البته بسیار شیرین و جذاب ، حرفه ای شدن در این بخش 2 ویژگی بزرگ برای شما خواهد داشت، اول آنکه شما اکثر ویژگی های تلفنی که در Elastix ودر منوی PBX Configuration تعریف می کنید در پشت داستان تبدیل به DialPlan می شوند پس اگر شما با DialPlan کاملا آشنایی داشته باشید می توانید آنها را بر اساس نیاز خود تغییر دهید، تغییراتی که از طریق محیط وب امکان پذیر نیست در بخشل نکات و حقه ها بسیاری از این موارد را خواهیم دید. اما دومین مزیت دانستن DialPlan آن است که می توانید با تلفیق Application های استریسک یک IVR یا یک ویژگی کامل اختصاصی برای خود در Asteriskبسازید، مثلا یک تلفنبانک !
    DialPlan نویسی ساختار و قوانین خودش را دارد قبل از شروع نوشتن باید با اصطلاح Context و Extension آشنا بشویم.
    DialPlan در فایل extension.conf و در مسیر /etc/asterisk ساخته و نگهداری می شود و این فایل و مسیر در اکثر سیستم های تلفنی مبتنی بر Asterisk یکسان است مگر آنکه هنگام نصب Asterisk چیز دیگری را تعریف نموده باشید، اما نکته ای که باید دقت کنید اینجاست که در سیستم تلفنی های مبتنی بر Asterisk که از برنامه Freepbx استفاده می کنند شما نمی توانید فایل extension.conf را تغییر داده و DialPlan خود یا در آن بنویسید به این خاطر است که برنامه Freepbx این فایل را در اختیار می گیرد و بعد از هر بار reload شدن آن را دوباره می سازد پس تغییرات شما از بین خواهد رفت، اما نگران نباشید Freepbx برای این منظور یک فایل به نام extension_custom.conf قرار داده که شما می توانید DialPlan خود را در آن بنویسید.
    نکته دیگر این است که هر آنچه روی برنامه Freepbx (محیط گرافیکی ELastix و منوی PBX Configuration) می سازید در فایل extension_additional.conf قرار میگیرد پس اگر مثلا یک صف یا یک IVR از منوی PBX Configuraion ساختید برای دیدن DialPlan ساخته شده آن می توانید به فایل extension_additional.conf سر بزنید.
    حال برای نوشتن DialPlan باید در ابتدا با ساختار آن و یکسری اصطلاحات آشنا شویم اولین چیزی که باید یاد بگیریم اصطلاح context است.

    #2
    Context چیست؟

    فایل extension.conf به بخش هایی به نام context تقسیم بندی می شود و در دل این contextها است که کدهای DialPlan ما نوشته می شود. مهمترین خصوصیت contextها این است که کامل ایزوله هستند و به همدیگر دسترسی ندارند مگر آنکه خودمان لینک ارتباطی را بین آنها برقرار کنیم، برای درک بهتر context می توانیم بگوییم که آنها برای گروه بندی ساخته می شوند.
    مثلا وقتی از روی منوی PBX Configuration یک داخلی می سازید به طور پیش فرض در یک context به نام from-internal قرار می گیرند و به همین دلیل هم است که داخلی ها می توانند همدیگر را شماره گیری نمایند حال فر کنیم می خواهیم یک الستیکس راه اندازی کنیم که 2 گروه داخلی روی آن تعریف شده اند که به هم دسترسی ندارند، برای این منظور باید یک context دیگر بسازیم و گروه 2 را در آن قرار دهیم در این صورت داخلی های 2 گروه دیگر به همدیگر دسترسی نخواهند داشت.
    برای تعریف یک context نیاز به یک نام یکتا (unique) و بدنه داریم، نام context را در بین 2 کروشه [] قرار ی دهیم و بدنه را زیر آن می نویسیم که با نحوه نوشتن بدنه که همانextension ما هستن در بخش بعد آشنا خواهیم شد.

    [sample1]
    exten => 123,1,Answer()
    exten => 123,3,Hangup()

    در مثال بالا sample1 نام context ما است و 2 خط زیرین آن همان بدنه یا extension ما است که در بخش بعد با آن نیز آشنا خواهید شد، اما نکته در خصوص نام context این است که این نام را نباید از بین 2 کلمه general، globals انتخاب نمایید چون این نام ها رزرو شده هستند.
    نکته: همانطور که قبلا عرض کردن context ها به یکدیگر دسترسی ندارند و ایزوله هستند، اما اگر بخواهید 2 تا context را در دسترس یکدیگر قرار دهید انگار که در یک گروه قرار دارند باید یکی را در دیگری include نمایید.

    [sample1]
    exten => 123,1,Answer()
    exten => 123,3,Hangup()
    [sample2]
    include => sample1
    exten => 123,1,Answer()
    exten => 123,n,NoOp(This is a Test)
    exten => 123,n,Hangup()

    نکته: اصطلاح context فقط مربوط به فایل extension.conf نیست و ما این مفهوم را در فایل های دیگر استریسک نیز داریم همانند sip.conf که داخلی های در آن در قالی یک contextتعریف می شوند، اما به دلیل تمرکز بر روی آموزش ساخت Dialplan به فایل های دیگر نمی پردازیم. مثال زیر یک نمونه از context در فایل sip_additional.conf است:

    [2000]
    type=friend
    context=internal-phones
    secret=1234
    host=dynamic


    کامنت


      #3
      این متغییر ها در بین کد های ما تعریف می شوند و فقط در همان Contexی که تعریف شده اند قابل دسترس و استفاده هستند پس امنیت پایداری بالاتری نسبت به global دارند ولی دسترسی به آنها محدود تر است، برای تعریف آنها از دستور Set() استفاده می شود.

      مثال:


      File: extension_custom.conf

      include => variable-channel

      [variable-channel]

      exten => 123,1,Answer()

      exten => 123,n,Set(vardigit=123456)

      exten => 123,n,SayDigits(${vardigit})

      exten => 123,n,Hangup()

      کامنت


        #4
        اجرای یک Dialplan

        وقتی بر روی Elastix می خواهید Dialplan نویسی کنید باید یکسری نکات را بدانیم، ما در این بخش یاد خواهیم گرفت که کجا وچگونه Dialplan نویسی کنیم.
        همانطور که در بخش های قبلی عرض کردم برنامه Freepbx اجازه اعمال تغییر در فایل extension.conf را نمی دهد، اما برای نوشتن Dialplan یک فایل دیگری برای دیگران در نظر گرفته به نام extension_custom.conf که از این به بعد تمامی Dialplan های خود را داخل این فایل می نویسیم.
        این نکته هم لازم است که بدانید خود Freepbx هم برای نوشتن Dialplan از فایل extension.conf استفاده نمی کند و به جای آن کد های خود را در extension_additional.conf می نویسید، مثلا وقتی بر روی محیط گرافیکی یک IVR می سازید کد های ایجاد شده توسط Freepbx در این فایل قرار می گیرند.
        مثال زیر را ببینید، داخلی 123 با 4 خط و همچنین Context ی به نام test1
        همانطور که می بینید یک Context به نامtest1 ساختیم و Dialplan خود را در داخلش قرار دادیم، حالا نوبت reload کردن Asterisk است.
        Asterisk –rx "reload"
        الان Extension 123 من آماده است اما فکر می کنید اگر من از روی یک داخلی که بر روی محیط گرافیکی ساختم و روی مثلا IPPhone خودم رجیستر کردم می توانم این 123 را شماره گیری کنم؟ خوب نه ! همانطور که قبلا گفتم وقتی از طریق منوی گرافیکی Elastix یا همان Freepbx یک داخلی می سازید برنامه Freepbx در پشت ماجرا Context مر بوط به آن Extensionرا عبارت from-internal قرار می دهد و با توجه به اینکه در تعریف و ویژگی های Context داشتیم که آنها نسبت به یکدیگر ایزوله هستند پس Extension با Context ساخته شده from-internal نمی تواند به این Extensionی که الان ماساختیم دسترسی داشته باشد، مگر آنکه این امکان را به Context آن بدهیم، برای این منظور می توان از دستور include برای دسترسی به یک Context از Context دیگر استفاده نمود.
        Freepbx برای اینکه ما براحتی بتوانیم Context هایی را که می سازیم در from-internal ، Include کنیم در فایل extension_custom.conf یک Context با نام from-internal-custom برای این منظور قرار داده است، پس مثال قبلی ما با اضافه کردن یک خط کامل تر می شود.


        استریسک را دوباره reload می کنیم
        Asterisk –rx "reload"
        حالا اگر از روی داخلی رجیستر شده خود 123 را شماره گیری کنید این Extension اجرا خواهد شد.

        کامنت

        در حال انجام ...
        X