A2B 可以與多個 Asterisk 做連接,這樣的架構有以下好處:
- A2B 與 Asterisk 安裝在不同的主機上
- 各自運作的效能提升,硬體資源使用不會互相影響
- 如果有使用 FreePBX,它的 DB 不會與 A2B 的 DB 放在同一部主機,資料安全性較高
主機的配置及架構
總共需要兩部獨立的 Linux 主機,分別為主機 A,B。
主機 A) A2B網站
- A2B 網站主程式
- A2B 資料庫
- Asterisk (不需要 FreePBX,主要用作 A2B 的 outbound trunk,並且給所有的 FreePBX 做外撥路由使用)
主機 B) FreePBX,所有用戶將會註冊到這一台主機
- FreePBX
- FreePBX 資料庫
- Asterisk
- A2B 的 AGI 及 dialplans
步驟開始
在主機A: A2B 網站)
- 先安裝好Asterisk & A2B
- 確認 A2B 網站可以正常操作
- 編輯 sip.conf,新增一個 SIP Outbound Trunk 用來做主要的外撥路由
- 編輯 extensions.conf,新增一個外撥的撥號規則,詳細如下
- 將 A2B 的AGI等檔案複製到 FreePBX 主機上
- /etc/asterisk/a2billing.conf
- /etc/asterisk/extensions_a2billing_1_6.conf
- /usr/src/a2billing/addons/sounds
- /var/lib/asterisk/agi-bin
- a2billing.php
- a2billing_monitoring.php
- lib/
- 在 A2B Admin UI 新增一些資料
- Trunk:
- Label: ccnet
- Add Prefix: 991 <與 extensions.conf 規則要呼應>
- Provider TECH: SIP
- Provider IP: <A2B 內部 IP>
extensions.conf:
[out-all]
exten => _991XXX.,1,Noop(This is outbound call)
exten => _991XXX.,n,Dial(SIP/ccnet/${EXTEN:3})
exten => _991XXX.,n,Hangup
exten => _992XXX.,1,Noop(This is outbound call)
exten => _992XXX.,n,Dial(SIP/voxbeam/${EXTEN:3})
exten => _992XXX.,n,Hangup
[from-freepbx]
include => out-all
Notes:
如果來自 FreePBX 的電話,號碼開頭是 991 的,路由到 ccnet
如果來自 FreePBX 的電話,號碼開頭是 992 的,路由到 voxbeam
在主機B: FreePBX)
流程如下:
- 安裝好 FreePBX & Asterisk
- 確認 mysql 指令可存取遠端 A2B 的 DB 資料
- 執行 mysql -ua2billinguser -p -h <A2B IP>
- telnet <A2B IP> 3306
- 設定 A2B AGI 及相關檔案
- /etc/asterisk/a2billing.conf,建立連結到 /etc/a2billing.conf
- /etc/asterisk/extensions_a2billing_1_6.conf
- /var/lib/asterisk/agi-bin
- a2billing.php
- a2billing_monitoring.php
- lib/
- 修改以上檔案目錄權限為 asterisk 可存取
- 安裝 A2B 語音檔
- 設定 Asterisk Real-Time 可讀取遠端 A2B DB 的 sip_buddies
- Asterisk 必須 1.6.2 以上版本
- 修改 res_config_mysql.conf
- 修改 extconfig.conf
編輯 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
安裝A2B語音檔
cd sounds/
sh install_a2b_sounds.sh
chown -R asterisk:asterisk /var/lib/asterisk/sounds/
註: 如果預設語音檔目錄不是 /var/lib/asterisk/sounds,必須修改 script 檔。