DP: Call Limit

    內容表格
    1. 1. 說明
    2. 2. 步驟開始

    版本為 11:41, 15 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    說明

    如果要限制 Incoming Calls 的最大通話數,一般可以在 sip.conf 加上 call-limit=xx 做到,不過這有幾個缺點:

    1. 不知為何官方將 call-limit 列為不建議使用的參數。
    2. 當最大通話數超過 call-limit 時,系統傳回的 SIP 回應碼是 480,如果要改成 503 回應碼,必須修改 chan_sip.c 程式碼,且還要重新編譯 asterisk。
    3. 對於 call-limit 的處理都是由 chan_sip.c 程式在處理,若要做任何客製,非常麻煩。

     

    以 DP 來取代 call-limit 的功能。

    步驟開始

    編輯 /etc/asterisk/extensions_custom.conf

    ; Below is used to limit the maximum number of incoming calls for trunk ccnet
    ;
    [my-from-trunk-call_limit-ccnet]
    exten => _.,1,Set(DIAL_TRUNK=2) ;2 is trunk# for ccnet, you can get it on FreePBX
    exten => _.,n,Set(GROUP()=OUT_${DIAL_TRUNK})
    exten => _.,n,Noop(Calls usage(activated): ${GROUP_COUNT(OUT_${DIAL_TRUNK})})
    exten => _.,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax)
    exten => _.,n,GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} > ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull)
    exten => _.,n(nomax),Noop(Passing the call to from-trunk)
    exten => _.,n,Goto(from-trunk,${EXTEN},1)
    exten => _.,n(chanfull),Noop(max channels used up)
    exten => _.,n,Hangup(42) ;42 is causecode, which will return 503 response code
    exten => h,1,Hangup
    
    Powered by MindTouch Core