نمایش نتایج: از شماره 1 تا 3 از مجموع 3
سپاس ها 2سپاس
  • 2 توسط omid_mohagerani

موضوع: کاربرد Macro ها در Asterisk

  
  1. #1
    نام حقيقي: امید مهاجرانی

    عضو عادی
    تاریخ عضویت
    Dec 2005
    محل سکونت
    Tehran
    نوشته
    782
    سپاسگزاری شده
    725
    سپاسگزاری کرده
    79

    کاربرد Macro ها در Asterisk

    ماکروها ساختار بسیار پرکاربردی در جلوگیری از تکرار در dialplan هستند .در مثال زیر نمونه ای از پیاده سازی صندوق صوتی را که با توجه به اشغال بودن یا در دسترس نبودن کاربر 101 پیام خاصی پخش شده و تماس به صندوق صوتی هدایت می شود مشاهده می کنید .


    کد:
    exten => 101,1,Dial(SIP/phone1,10) exten => 101,n,GotoIf($[“${DIALSTATUS}”=”BUSY”]?Busy:unavai) exten => 101,n,(unavail),voicemail(101@defualt,u) exten => 101,n,Hangup() exten => 101,n(busy),VoiceMail(101@default,b) exten => 101,n,Hangup()

    اکنون فرض کنید شما باید سیستم تلفنی ای با 1000 کاربر و VoiceMail های آنها را تعریف کنید . این عملیات نیاز به کپی کردن های متناوبی خواهد داشت که احتمالا بدون مشکل نخواهد بود . در ادامه خواهید دید که چگونه با استفاده از ماکروها می توانیم این تنظیمات را ساده تر و سازمان یافته تر انجام دهیم .


    تعریف ماکروها شبیه تعریف extension ها در Dialplan است . برای تعریف ماکروها از کلمه رزرو شده macro- و نام ماکرو استفاده می کنیم . به عنوان مثال


    macro-voicemail




    وجود کلمه macro- در ابتدای ماکروها آنها را از context های معمولی متمایز می سازند . دستوراتی که در ماکروها استفاده می شوند ، شامل دستورات عادی ای هستند که در تعریف های رایج Dialplan استفاده می شود و تنها فاکتور محدود کننده این است که در ماکروها فقط می توان از extension های s استفاده کرد .


    [macro-voicemail]
    کد:
    
    
    کد:
    exten => s,1,Dial(SIP/phone1,10)
    
    
    exten => s,n,GotoIf($[“${DIALSTATUS}”=”BUSY”]?Busy:unavai)
    exten => s,n,(unavail),voicemail(101@defualt,u) exten => s,n,Hangup()
    exten => s,n(busy),VoiceMail(101@default,b)
    exten => s,n,Hangup()


    این یک مثال برای شروع کار با ماکرو است ولی مثال کاملی نیست زیرا فقط برای کاربر phone1 و صندوق صوتی او ساخته شده است . برای تعریف اصولی ماکروها باید از آرگومان ها بهره ببریم . ولی ایتدا اجازه دهید نحوه استفاده از ماکروی بالا را Dialplan ببینیم .


    برای استفاده از ماکروها در Dialplan از برنامه Macro() استفاده می کنیم . این برنامه یک ماکرو را فراخوانی کرده و در صورت نیاز آرگومان ها را به آن پاس می دهد . به عنوان مثال برای فراخوانی ماکروی voicemail که در مرحله قبل تعریف کردیم مانند زیر عمل می کنیم .


    exten => 101,1,Macro(voicemail)




    برنامه Macro() چندین متغیر سیستمی را برای استفاده ما تعریف و مقداردهی می کند .


    ${MACRO_CONTEXT} : context ای که ماکرو در آن فراخوانی شده است را بر می گرداند .


    ${MACRO_EXTEN} : extension ای که در آن ماکرو قراخوانی شده است را بر می گرداند .


    ${MACRO_PRIORITY} : اولویت ای که در آن ماکرو فراخوانی شده است را بر می گرداند .


    به عنوان مثال در Dialplan زیر


    کد:
    [internal_users] exten => 101,1,Macro(voicemail
    )


    مقادیر متغیر های ذکر شده عبارتند از :


    ${MACRO_CONTEXT} == internal_users


    ${MACRO_EXTEN} == 101


    ${MACRO_PRIORITY} == 1


    نوع دیگری از آرگومان نیز در Macro وجود دارد که توسط کاربر می تواند به MACRO پاس داده شود . این نوع آرگومان که با ${ARGn} که در آن n شماره آرگومان پاس داده شده به سیستم است قابل دستیابی می باشد .


    اکنون قادر خواهیم بود با استفاده از آرگومان ها مثال کاملتری از پیاده سازی ماکروی قبلی ارائه دهیم .

    کد:
    [macro-voicemail] exten => s,1,Dial(${ARG1},10) exten => s,n,GotoIf($[“${DIALSTATUS}”=”BUSY”]?Busy:unavai) exten => s,n,(unavail),voicemail(${MACRO_EXTEN}@defualt,u) exten => s,n,Hangup() exten => s,n(busy),VoiceMail(${MACRO_EXTEN}@default,b) exten => s,n,Hangup()




    موضوعات مشابه:
    ویرایش توسط omid_mohagerani : 2011-08-15 در ساعت 05:35 PM
    SADEGH65 و Iman.gh سپاسگزاری کرده‌اند.

  2. #2
    نام حقيقي: ایمان قربانعلی

    خواننده شناسه تصویری Iman.gh
    تاریخ عضویت
    Jul 2005
    محل سکونت
    Iran - Tehran
    نوشته
    832
    سپاسگزاری شده
    305
    سپاسگزاری کرده
    177
    سلام

    ممنون آقای مهاجرانی .

    میشه 1 مرجع برای یاد گیری برنامه نویسی ( همین ساخت IVR , EXT و بقیه چیزای مهم ) معرفی کنید



  3. #3
    نام حقيقي: امید مهاجرانی

    عضو عادی
    تاریخ عضویت
    Dec 2005
    محل سکونت
    Tehran
    نوشته
    782
    سپاسگزاری شده
    725
    سپاسگزاری کرده
    79
    سلام
    کتاب asterisk the future of telephony هم نسخه دوم و هم نسخه سوم که به تازگی منتشر شده بهترین منبع برای کار با Asterisk هستش .



کلمات کلیدی در جستجوها:

برنامه نویسی dial plan

کد نویسی dialplan

s voicemail asterisk

برچسب برای این موضوع

مجوز های ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •