AGI: Trunk Load-Balancing

    內容表格
    1. 1. 說明
    2. 2. 系統環境
    3. 3. 設定

    版本為 04:26, 27 Dec 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    說明

    有一個 SIP gateway  名為 '2100',且附帶有 4 個 port,客戶希望從 dialer 的撥出的電話,可以:

    1. 事先為每一組 port 設定每日可通話的分鐘數,例如 300 分(1800 秒)。
    2. 當撥出的電話超過所設定的通話時間限定時,必須切斷電話且傳回 503 SIP 訊號。
    3. 撥出時隨機選擇任一 port。

     

    系統環境

    1. FreePBX Distro 1.810.210
    2. Asterisk 1.8.10
    3. FreePBX 2.10

    設定

    extensions_custom.conf:

    [LB-trunk_all-v3]
    exten => _X.,1,Set(TRUNK_NAME=LBtrunk)
    exten => _X.,n,Noop(Load Balancing for Trunk ${TRUNK_NAME})
    exten => _X.,n,AGI(check_LB_ports.php,${TRUNK_NAME},${EXTEN})
    exten => _X.,n,Hangup(42)
    

    新增 Outbound Trunk

    FreePBX Admin > Trunks

    • Trunk Name = LB-2100
    • Custom Dial String = Local/$OUTNUM$@LB-trunk_all-v3/n

     

    AGI: check_LB_ports.conf.php

    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)

    AGI: check_LB_ports.php

    AGI Dial Command: exec_dial(SIP/LBtrunk_9/LBtrunk_9_6243531,300,L(261000:61000:30000))

    261000: 限制通話的時間 ms
    61000: 最低通話時間的提醒語音 ms
    30000: 多久提醒一次 ms

    如果不想撥放提醒語音,加上這幾行
    exten => _X.,n,Set(LIMIT_PLAYAUDIO_CALLER=no)
    exten => _X.,n,Set(LIMIT_PLAYAUDIO_CALLEE=no)

    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)
    Powered by MindTouch Core