問題描述:A2Billing 預設是以 Asterisk Realtime Mode 與 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
Images 0 | ||
---|---|---|
No images to display in the gallery. |