A2B 可以與多個 Asterisk 做連接,這樣的架構有以下好處:
總共需要兩部獨立的 Linux 主機,分別為主機 A,B。
主機 A) A2B 主管理系統
用途:
主機 B) FreePBX 系統 (可連接多個 FreePBX 系統)
用途:
設定 MySQL Server 可接收遠端的存取權限
編輯 /etc/mysql/my.cnf
將這行註解 #bind-address = 127.0.0.1
修改資料庫權限
mysql -uroot -p <<-END_SQL CREATE USER 'a2billinguser'@'%' IDENTIFIED BY 'a2billingpass'; GRANT ALL PRIVILEGES ON mya2billing.* TO 'a2billinguser'@'%'; flush privileges; END_SQL
extensions.conf:
[out-all] exten => _0011101XXX.,1,Noop(This is outbound call) exten => _0011101XXX.,n,Dial(SIP/voxbeam/${EXTEN}) exten => _0011101XXX.,n,Hangup [from-freepbx] include => out-all
Notes:
如果來自 FreePBX 的電話,號碼開頭是 0011101 的,路由到 voxbeam,這個 prefix code 是 voxbeam 訂定的。
sip.conf:
1. 當遠端 FreePBX 要外撥時,會經由這進入到 A2B 主機的 Asterisk
;Inbound Trunks ; Incoming Calls from FreePBX [PBX1] type=peer host=<FreePBX#1 內部 IP> context=from-freepbx qualify=yes insecure=port,invite canreinvite=no nat=no
Tips:
當有新增其他的 FreePBX 主機時,這裡要增加新主機的 SIP 連線資訊,例如 PBX2, PBX3,...
2. 這個連結到 SIP Provider 做 Outbound Trunk
;Outbound trunks ;this is for test [ccnet] defaultuser=070XXXXXXX type=friend secret=123456 port=7890 insecure=port,invite host=210.202.244.130 qualify=yes nat=yes fromuser=070XXXXXXX context=no-incoming
3. [選用] 需要做 Inbound DID 時的 Inbound Trunk
; Inbound Trunk for DIDs from Voxbeam ;Voxbeam [voxbeam-in-1] type=peer qualify=yes nat=yes insecure=port,invite host=95.211.119.240 dtmfmode=rfc2833 disallow=all context=a2billing-did canreinvite=no allow=alaw allow=ulaw
註:a2billing-did 是 A2Billing 內建的 dialplan。
流程如下:
編輯 extensions_custom.conf (註: 以 FreePBX 為例)
加上這一行 ;this is for A2B #include extensions_a2billing_1_6.conf
編輯 /etc/a2billing.conf
修改 A2B DB 的連線資訊 [database] hostname = <A2B DB Host> ; port for postgres is 5432 by default port = 3306 user = a2billinguser password = <DB password> dbname = mya2billing ; dbtype setting can either be mysql or postgres dbtype = mysql ... ...
cd sounds/ sh install_a2b_sounds.sh chown -R asterisk:asterisk /var/lib/asterisk/sounds/
註: 如果預設語音檔目錄不是 /var/lib/asterisk/sounds,必須修改 script 檔。
編輯 extensions_custom.conf:
; this is for A2B [macro-dialout-trunk-predial-hook] exten => s,1,GotoIf($["${OUT_${DIAL_TRUNK}:4:4}" = "A2B/"]?custom-freepbx-a2billing,${OUTNUM},1:2) exten => s,2,MacroExit [custom-freepbx-a2billing] exten => _X.,1,DeadAGI(a2billing.php,${OUT_${DIAL_TRUNK}:8}) exten => _X.,n,Hangup()
FreePBX Admin > Trunks > Add Custom Trunk
FreePBX Admin >Outbound Routes > Add
對於 FreePBX 系統上的 SIP Extension,如果撥出時要由 A2B 計費,必須填上 account code。