前言
A2Billing 是目前社開發最熱門的計ȝi套Ӟ因為是開攑֎始碼授權所以可以合法免M用?/p>
本篇主要在是教導如何使用這套Ӟ若還沒完成安裝的朋友Q請先前往p A2Billing 安裝?/a>?/p>
初始化設?/h4>
pȝ在完成安裝後Q第一個所要做的設定有Q?/p>
// FreePBX UI > Trunks
新增 Outbound TrunkQ本以 Voxalot Z?/p>
Outgoing Settings
Trunk Name = voxalot
host=us.voxalot.com
username=<sip_number>
fromuser=<sip_number>
secret=<sip_pass>
fromdomain=voxalot.com
nat=yes
insecure=port,invite
qualify=yes
canreinvite=yes
dtmfmode=auto
disallow=all
allow=ulaw&alaw
type=peer
context=from-trunk
新增 Inbound TrunkQ這個主要在展示國際電話卡及 DID 轉接的應用,本篇?iptel Z?/p>
Outgoing Settings
Trunk Name: iptel
username=<sip_username>
type=friend
secret=<sip_pass>
qualify=yes
insecure=port,invite
host=iptel.org
fromuser=osslab
fromdomain=iptel.org
context=a2billing
Register String: <sip_username>:<sip_pass>@iptel.org/<sip_number>
注意Qcontext 必須?a2billing
// A2Billing Admin UI > Trunk > Create Provider
provider name = VOXALOT_PROVIDER
description = Voxalot Provider
// A2Billing Admin UI > Trunk > Add Trunk
voip-provider = VOXALOT_PROVIDER
label = VOXALOT_TRUNK
add prefix = I白
provider tech = SIP
provider ip = voxalot
status = Active
TIPs:
provider ip 必須?FreePBX ?trunk name 相同
// A2Billing Admin UI > Ratecard > Create call plan
name = VOXALOT_CALLPLAN
remove inter prefix = YES
TIPs:
remove inter prefix = YES 若撥號有包含 00 ?011 開頭的國際冠|在套?ratecard 的規則前會被去除?/p>
// A2Billing Admin UI > Ratecard > Create new ratecard
tariffname = VOXALOT_RATECARD
trunk = VOXALOT_TRUNK
description = through voxalot trunk
// A2Billing Admin UI > Ratecard > Add Rate
ratecard = VOXALOT_RATECARD
dialprefix = 1800
destination = US-Tollfree
buying rate = 1
buyrate min duration = 6
buyrate billing block = 6
selling rate = 1.5
sellrate min duration = 60
sellrate billing block = 60
trunk = VOXALOT_TRUNK
TIPs:
Q?dialprefix 若撥號規則符合,會以此費率計?br />Q?destination 用來敘述此費率的區?/p>
//新增 rate 後要再回?call plan ?rate card 加入?call plan
A2Billing Admin UI > Ratecard > List Call Plan > Edit: VOXALOT_CALLPLAN
ratecard = 選擇 VOXALOT_RATECARD, Add Ratecard
應用一Q國際電話卡模式
客戶操作程Q?br />① 使用手機或一般電話機撥打pȝ號碼(Access Number)
② 語音提示Q入電話卡號+Q?/p>
③ 語音提示額Q入目的地電話號碼Q?0Q國|區|電話號碼Q#Q?/p>
// A2Billing Admin UI > Customers > Create Customers
card number = <隨機產生>
card alias = <隨機產生>Qweb d希
webui password = <隨機產生>Qweb d密碼
balance = 50.0Q不可為Ӟ且必須以 USD a算
call plan = VOXALOT_CALLPLAN
activated = YES
simultaneous access = INDIVIDUAL ACCESS
card type = PREPAID CARD
country = TAIWAN
sip account = NO
iax account = NO
實際操作Q?/p>
因為本篇實做是以 iptel 的號g為系ip|所以用其他 IPTel 希撥入pȝ號碼Q系i會提示語音Q請輸入 card numberQ將剛剛新增的卡號入,完成後按Q,若正,pȝ會提C餘及可用通話時間Q並提示Q請輸入目的地電p|完整電p?011 + 國碼 + 區?+ 電話號碼 輸入Q完成後按#?/p>
TIPs:
Q?新增電話?Customer)Q有一些主要的a定Q例?card number, card alias, passwordQ這些是由pȝ隨機產生Q且沒有M規則Qhacker 無法事先a算出這些資訊?br />Q?附加?card number ?另一i代?aliasQ這個號或 email 地址都可以用來登入用戶的E頁Q密就?webui password?
Q?若用戶撥號時有加 00Q請注意 Call Plan ?REMOVE INTER PREFIX a為 YESQ以避免 outbound 路由錯誤?/p>
應用二:DID 轉接業務
A2Billing 提供 DID 接駁至經?outbound trunk 的外部號{SIP URI?/p>
// A2Billing Admin UI > DID > Add DID Group
name = DID TWN
// A2Billing Admin UI > DID > Add DID
DID = 99474
billing = only dialout rate
DID group = DID TWN
country = TAIWAN
activated = YES
monthly rate = 0
// A2Billing Admin UI > Customers > Create Customers
balance = 50.0
call plan = VOXALOT_CALLPLAN
didgroup = DID TWN
activated = YES
card type = PREPAID CARD
country = TAIWAN
sip account = NO
iax account = NO
a定轉接的目的號|可以透過 Admin UI ?Customer UI 來作
客戶自行D DID 號碼
// A2Billing Customer UI > DID
select country = TAIWAN
select virtual phone number = 99474
voip call = NO
destination = 8864123456
TIPs:
Q?select country 這裡內容會與 DID ?country 相同
Q?若沒有出?DID number 可選擇,請檢查所d?customer 希?DIDGROUP 是否正確
Q?voip call 若是 NOQ入外部的 PSTN/SIP 號碼Q若?YESQ?SIP URI?/p>
理員分?DID 號碼i指定的客戶
// A2Billing Admin UI > INBOUND DID > Destination
destination = 8864123456
customer ID = 選擇適當?customer
DID = 選擇適當?DID
activated = yes
validated = 皆可
voip_call = no
TIPs:
Q?voip call 若是 NOQ入外部的 PSTN/SIP 號碼Q若?YESQ?SIP URI?/p>
Q?若需 DID 接入內部分機號碼(不經?A2B ?trunk)Q可以這樣a?br />-- destination = Local/101@from-internal (適用 FreePBX 的分?101)
-- destination = SIP/123456 (適用 A2Billing card number 123456)
-- voip_call = yes
* 如果 destination number 要走 A2B ?trunkQ不該 trunk ?SIP ?ZaptelQvoip_call 必須?no?/p>
盔R文章連結Q?/p>
應用三:預付制、月付制會員模式
用戶操作程Q?br />① 用戶使用 X-Lite ?ATA a備透過E\ad為分?/p>
② 直接撥目的地電話號碼Q例?886+XXXXXXXXQ?86 是國{?br />過程中不會有M外的提C音Q就像一般的 SIP 分機操作相同?/p>
// A2Billing Admin UI > Customers > Create Customers
card number = <隨機產生>
card alias = <隨機產生>Qweb d希
webui password = <隨機產生>Qweb d密碼
balance = 50.0Q不可為Ӟ且必須以 USD a算
call plan = VOXALOT_CALLPLAN
activated = YES
simultaneous access = INDIVIDUAL ACCESS
card type = PREPAID CARD
country = TAIWAN
sip account = YES
iax account = YES
TIPs:
Q?這裡?應用一)模式a定相同Q只差在 sip/iax account ?YES?br />Q?新增 customer 後,?reload Asterisk 後,SIP 用戶端才能註冊用?/p>
// 取消 "輸入目的地號? 及其他提C音
// A2Billing Admin UI > System Settings > Global List
如果這裡的所有項目沒?GROUP ?agi-conf2 ?可善?GROUP 搜尋功能)Q請先前往 Add agi-conf > CREATE AGI-CONF2?/p>
回到 Global List 扑ֈ GROUP ?agi-conf2 ?KEY/VALUE 按以下所qC改:
use_dnid = yes
這個SIP希除了要撥外部的\由外Q如果還要撥內部的其?SIP 分機號,需要繼U下面的修改Q?/p>
sip_iax_friends = yes
sip_iax_pstn_direct_call_prefix = 555
sip_iax_pstn_direct_call = yes
※是否要提C餘的語音
say_balance_after_auth = no
say_timetocall = no
如果電話不通,不要提示輸入目的地號的語音
number_try = 1
TIPs:
Q?參數說明Q?/p>
- Use DNID : YES 表示使用 DNIDQ並且不會提C?輸入目的地電p的語音
- SIP Call = yes, SIP Call Prefix, Direct Call: 這三個參數是用來?SIP ad希後,也能撥其他分號|撥法?555+SIP Extension
- Say Balance After Auth: 認證後是否提C餘?br />- Say Duration: 是否提示剩餘通話時間
- 另一E比較快速的a定是:play_audio = no, use_dnid=yes, number_try=1?/p>
//為此模式新增 dialplan
//R輯 /etc/asterisk/extensions_a2billing.confQ在底下加入Q?/p>
[custom-a2billing-sipclient]
exten => _X.,1,Answer
exten => _X.,n,Wait(1)
exten => _X.,n,deadAGI(a2billing.php|2)
exten => _X.,n,Hangup
// ?A2Billing 套用新增?dialplan
// A2Billing Admin UI > Customer > VoIP Settings
扑ֈ SIP 分機項目Q按R輯
Context = custom-a2billing-sipclient
// 最後,埯指o套用所有的修改
# asterisk -rx "reload"
TIPs:
由於版本 1.7.x ?bug 關係Q在 UI 做完操作後,並不會同步修?asterisk 的設定檔Q所以請依照方式作手動修改:
R輯 /etc/asterisk/additional_a2billing_sip.conf Q修?context 的內宏V?br />要避免每ơ都要作手動修改Q可以參?F.A.Q 的方法?br />
應用四:整合 FreePBX 的應?/h4>
用途:FreePBX 的分用Ӟ?Outbound Calling 時可以透過 A2Billing 來計費,但其他原有PBX的功能都不會有媄ѝ?/p>
// R輯 /etc/asterisk/extensions_custom.conf
[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 UI > Trunks > Add Custom Trunk
Custom Dial String = A2B/2
Tips:
2 代表?agi-conf 2
// FreePBX UI > Outbound Routes
自行a定需要的參數Q並向剛剛?Trunk?/p>
// FreePBX UI > Extensions
在需要計ȝ分機a定,參數 accountcode 填入 A2Billing ?Card Number?/p>
Tips:
分機在外撥的路由規則Q除?outbound route 外,還要考慮 A2Billing 的,也就?RATES 的相關設定?/p>
延p
應用五:Caller ID 認證模式
用途:a定電話卡時除了使用輸入卡號的認證方式以外,還能以來電號?Caller ID) 辨識來認證?/p>
- 啟用 Caller ID 後,用戶不需要先輸入卡號Q就可以直接撥目的地號碼?/li>
- 一個卡號可以設定一i或多組的來電號{?/li>
- 使用 Admin UI 來管理來電號{?/li>
- 一旦啟用後Q當用戶的來電號g非系i所允許時,pȝ會提C卡號的認證的方式?/li>
// 啟用方式
A2Billing Admin UI > Syetem Settings >
?agi-conf 的方式來a,可以很容易啟?關閉這功能,需要用到的參數(Key)如下Q?/p>
- cid_enable = yes Qyes 啟用Qno 關閉Q預a是關閉?/li>
- cid_askpincode_ifnot_callerid = yes ; 預設 yesQ若 CID 認證失敗Q系i會提示輸入 Card Number?/li>
- cid_auto_assign_card_to_cid = yes ; 預設 yesQ用戶撥入系i後Q如?CID 認證失敗Q系i會提示輸入 Card NumberQ一旦用戶入資a正,pȝ會自動新?CIDQ以致於該用戶下ơ再撥入時,可以通過 CID 認證Q且不會再提C?Card Number?/li>
- cid_auto_create_card = no
// 新增 Caller ID
A2Billing Admin UI > Customers > Caller-ID
CallerID = <用戶的來電號?gt;
Activated = yes
ID Card = <選擇卡號>
F.A.Q
Q:如何大量刪除 Customers?
Ans: A2Billing UI > Customers > Add::Search > Search Customers
a定搜尋條g > ?Search > 再按旁邊?Delete All
注意Q這個方法無法將 VoIP Setting 一併刪除?/p>
Q:如何大量刪除 VoIP Settings?
Ans: 目前沒有合適的作法?/p>
Q:如何變更pȝ預設q別 USD
Ans: 要改兩個地方,修改 base_currency 的參數及更新 currency list?/p>
- A2Billing UI > System Settings > Global List
搜尋 GROUP = global, Key = base_currency
base_curreny = twd - 即修改了幣別,pȝ預設?currency list 仍是以美?1:1 a算Q所以必須修攚w個匯率對照表?TWD 1:1?br />A2Billing UI > BILLING > Currency List > CLICK HERE TO UPDATE NOW
Q:匯入 ratecard 時總是出N?ERROR: file type is not allowed: application/force-download
Ans: 副檔名 csv Ҏ txt?/p>
發現 Bug
版本 |
問題描述 |
1.7.0/1 |
修改 VoIP Settings ?內容Q不會同步更?Asterisk a定 |
|
Ans:這是因為 A2Billing 預設是啟動了 Realtime Asterisk 模式(Asterisk 以資料n型式儲存a定)Q若只是檢查 *.conf 來判?Asterisk 是否更新是不準確的,然而?bug 卻造成 A2Billing 無法?relatime 模式更新 Asterisk。暫時的解決Ҏ是 A2Billing 關閉 realtime asterisk 模式Q恢復成 *.conf 方式來更?asteriskQ步驟如下:
A2Billing UI > System Settings > Global List 搜尋 GROUP = global
use_realtime = no (預設?yes)
Notes: 畉閉了 Realtime 後,爑־若有新增/R輯 VoIP Settings 時,?CONFIRM DATA 之後Q需要在作以下步驟完?Asterisk 的更斎ͼ
- 點選 GENERATE ADDITIONAL_A2BILLING_SIP.CONF
- click here to reload your asterisk server
|
1.7.0 |
新增 CUSTOMER 時,?balance Ƅ位E持預設?0Q仍可以存檔 |
|
Ans: 這項不確定是否為 bugQ但?1.3.x I定版,存檔前系i會檢查 balance 不可?0? |
1.7.0 |
若徏立電話卡是有 SIP ad希的,刪除這個電話卡後,SIP i端仍可以註冊,但已無法正常撥出?/td> |
1.7.0 |
?Customer UI ?DID 功能Q操?Release DIDQ按?Release 後,雖然 DID ?releaseQ但畫面會成I白頁?/td> |
1.7.0 |
?Customer UI ?DID 功能Q從項目列表中刪?destination number 時,所有欄位的值會出現I白Q再按下 Delete 後,雖然資料仍會刪除Q但需要再做一?Release DID?/td> |