修正~Asterisk Realtime Mode

    問題描述:A2Billing 預設是以 Asterisk Realtime Mode 與 Asterisk 作連結,但若沒有經過一些設定,會使兩者的設定無法同步。

    為何要使用 Realtime Mode:

    • 如果 SIP/IAX 帳戶數量超過 15000+,就必須使用 Realtime mode,否則 VoIP 的 UI 相關操作會產生異常。
    • 若要將 A2B 與 Asterisk 安裝在不同的機器,必須使用 Realtime Mode。
       

    軟體版本:A2Billing 1.7.x, 1.9.x,註:Asterisk 必須是 1.6.2+,低版本的 Asterisk 無法以 Realtime 方式抓取 A2B DB 的用戶資料

    步驟開始

    // 檢查 asterisk 有無啟動以下的模組,res_config_mysql.so, res_realtime.so

    $ asterisk -rx "module show like res"
    Module                         Description                              Use Count
    ...
    res_config_mysql.so            MySQL RealTime Configuration Driver      0
    res_realtime.so                Realtime Data Lookup/Rewrite             0
    

    // 編輯 /etc/asterisk/res_mysql.conf

    For 1.8.x, 檔名為 res_config_mysql.conf

    // 增加這幾行

    [general]
    dbhost = 127.0.0.1
    dbname = mya2billing
    dbuser = a2billinguser
    dbpass = a2billing
    dbport = 3306
    ;dbsock = /var/lib/mysql/mysql.sock ; for CentOS/RedHat
    dbsock = /var/run/mysqld/mysqld.sock ; for Ubuntu/Debian
    ; NOTE! If running Asterisk 1.6 or later add the following line
    requirements = warn
    

    TIPS:

    dbname,dbuser,dbpass 可以參考 /etc/asterisk/a2billing.conf

    如果 [general] 已經有其他DB連線,可以增加另一個段落 [mya2b]

    // 編輯 /etc/asterisk/extconfig.conf

    [settings]
    ;This is used for A2B realtime mode
    sipusers => mysql,mya2b,cc_sip_buddies
    sippeers => mysql,mya2b,cc_sip_buddies
    iaxusers => mysql,mya2b,cc_iax_buddies
    iaxpeers => mysql,mya2b,cc_iax_buddies
    

    Tips:

    For Asterisk 1.6.2/1.8,mya2b 必須是 res_mysql.conf 的定義名稱,例如 general, mya2b。

    For Asterisk 1.4.x/1.6.0,mya2b 必須是實際的資料庫名稱,例如是 mya2billing。不適用 Asterisk 1.4/1.6.0

    確認指令

    #asterisk -rx "realtime mysql status"
    Connected to mya2billing@123.123.123.123, port 3306 with username a2billinguser for 34 seconds.
    
    # asterisk -rx "core show config mappings"
    
    ...
    Config Engine: mysql
    ===> iaxpeers (db=mya2billing, table=cc_iax_buddies)
    ===> iaxusers (db=mya2billing, table=cc_iax_buddies)
    ===> sippeers (db=mya2billing, table=cc_sip_buddies)
    ===> sipusers (db=mya2billing, table=cc_sip_buddies)
    

    註:db 並不是指實際連線的 DB name,而是指 extconfig.conf 的設定,所以顯示 general 可能是正常的。

    // 設定 A2B
    A2B Admin > SYSTEM SETTINGS > Global List > Select Group: global

    use_realtime = yes

    注意事項

    • 如果 SIP/IAX 帳戶數量超過 15000+,就必須使用 Realtime mode,否則 VoIP 的 UI 相關操作會產生異常。
    • 系統在啟用 Realtime mode 後,當 A2B 新增了 SIP 帳號,若執行 sip show users, sip show peers 不會有任何結果,但此時分機已經建立完畢並且立即生效,CLI 的輸出必須等分機有註冊上,才會有資料顯示。
    • 設定 Realtime mode 時,對於 Asterisk 1.4, 1.6+ 會有不同設定。
    • 設定檔的 SIP 帳號仍可以保留,但只能用在非 A2B 的系統,例如 FreePBX。
    • 增加 rtcachefriends=yes 在 sip.conf,如此才能使用 sip show [users|peers] 等指令。用戶端要先註冊後,主機才會有顯示。
    標籤 (Edit tags)
    • No tags
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core