A2Billing 的回撥(Callback)

    版本為 11:27, 15 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    簡介

    A2Billing 的回撥功能依據使用方法不同,大致區分為:

    1. Web Callback
    2. ANI(Automatic Number Identification) Callback (或稱 CID Callback)
    3. DID Callback
    4. API Callback

     

    回撥電話的基礎流程說明:

    1. 用戶撥電話到 A2B 主機的轉接號碼,並且用戶的來電顯示必須是有效的(詢問電信商)
    2. A2B 主機收到來電後,將電話導入指定的撥號規則,例如 cid-callback。
    3. AGI 開始對偵測到的來電號碼(CID)進行檢查,如果是屬於帳號登記的號碼,系統將立即掛斷電話,並且稍後進行回撥。
    4. 大約幾秒鐘後,系統會主動回撥給原來的客戶,並且以另一個撥號規則進行第二階段的電話處理。
    5. A2B 用這個撥打得客戶號碼來查詢帳戶的資訊,例如帳戶餘額、幣別等。
    6. 用戶很快的接起回撥的電話後,A2B 將會播放帳戶餘額以及輸入目的電話號碼的語音。
    7. 接著用戶輸入想要撥打的電話號碼。
    8. A2B 播放帳戶剩餘的通話時間的語音。
    9. .....

    系統設置

    對於要使用 Callback 的 A2B, 必須完成以下設置:

    • 安裝 Callback 服務
    • 依實際應用新增 dialplan
    安裝 Callback 服務

    Python 套件

    yum install python-setuptools MySQL-python
    

     Python 模組 -  sqlalchemy

    easy_install sqlalchemy
    

    開始設定

    cd /usr/src/a2billing
    cd CallBack/callback-daemon-py
    cp build/lib/callback_daemon/a2b-callback-daemon.rc /etc/init.d/a2b-callback-daemon
    chmod +x /etc/init.d/a2b-callback-daemon
    
    cp dist/callback_daemon-1.0.prod-r1528.tar.gz /tmp
    cd /tmp
    tar xvfz callback_daemon-1.0.prod-r1528.tar.gz
    cd callback_daemon-1.0.prod-r1528
    
    python setup.py build
    python setup.py bdist_egg
    easy_install dist/callback_daemon-1.0.prod_r1528-py2.4.egg
    chkconfig --add a2b-callback-daemon
    service a2b-callback-daemon start
    chkconfig a2b-callback-daemon on
    

    如何檢查服務

    1. 程序必須執行中
      ps -ef | grep a2b
      root      6555     1  0 14:05 ?        00:00:03 /usr/bin/python /usr/bin/a2b_callback_daemon
       
    2. log 檔 /var/log/a2billing/a2b-callback-daemon.log 會持續被更新
      tail -f /var/log/a2billing/a2b-callback-daemon.log
      ...
      "2011-06-24 15:31:35,549 - root - MainThread - INFO - waiting..."
      "2011-06-24 15:31:40,901 - root - MainThread - INFO - waiting..."
      "2011-06-24 15:31:47,037 - root - MainThread - INFO - waiting..."
       

    A2B 設定

    設定 manager 的連接參數

    A2B Admin > CALLBACK > Server Group

    Name = default
    Description = default group of server

    A2B Admin > CALLBACK > Server

    Group = default
    Server Hostname = localhost
    Manager Host = localhost
    Manager Username = myasterisk
    Manager Password = mycode

    以上資訊必須與 manager.conf 相符。

    新增用戶CID作為回撥號碼

    當用戶要啟用回撥功能時,必須將自己的電話號碼(CID)事先設定在系統,而且必須使用這號碼撥到 A2B 的 Access Number。

    A2B Admin > CUSTOMERS > Caller-ID > Add CallerID

    CallerID = 輸入用戶的來電號碼
    Activated = Yes
    ID Card = 選擇客戶的卡號

    註:以上是由管理員來操作,客戶也可以在網頁上自己新增。

    修改 A2B 系統參數 *重要*

    由於 Callback 在預設環境僅適用 Asterisk 1.4.x,如果是 Asterisk 1.6.x 以後版本,必須修改:
    A2B Admin > SYSTEM SETTINGS > Global List > Select Group: global

    asterisk_version = 1_6 (注意:不是 agi-confX 的參數)

    Tips:

    在修改後,所有 callback 的參數間隔,會從原來的 |(pipe) 變成 ,(comma)。

    Callback 的 dialplan

    for CID Callback)

    編輯 /etc/asterisk/extensions_a2billing_1_6.conf

    [mya2b-cid-callback]
    exten => s,1,DeadAgi(a2billing.php,1,cid-callback,99) ;last parameter is the callback area code
    exten => h,1,Hangup
    

    Notes:

    99 是系統在回撥時,自動加上的 prefix code,請配合系統路由自行變更。

    for Web Callback)

    不需要任何的 dialplan

    Inbound Route 設定

     freePBX > Tools > Custom Destinations

    Custom Destination = mya2b-cid-callback,s,1
    Description = mya2b_cid_callback

    freePBX > Setup > Inbound Routes > Add Incoming Route

    DID Number = <A2B 的 Access Number>
    Set Destination = Custom Destination: mya2b_cid_callback

    Callback 的 Outbound

    關於 callback 的 outbound 有幾項注意事項:

    • 一個完整的 callback 電話流程會有兩次的 outbound call,一次是主機回撥給用戶,另一次是用戶作二次撥號到目的地號碼。
    • 第一次的主機回撥,系統不會將它計費。
    • dialplan 的參數 99, rate, trunk 都與 outbound route 規則有關。

    FAQ

    Q:檢查 /var/log/a2billing/a2b-callback-daemon.log,出現錯誤:

    "2011-06-24 13:56:42,538 - root - MainThread - INFO - [<callback_daemon.database.CallBack_Spool obje
    ct at 0xb5aadd4c>]"
    "2011-06-24 13:56:42,551 - root - MainThread - INFO - try_originate : SIP/sip2sip-0/800677522 : 1000
     : a2billing-callback"
    "2011-06-24 13:56:42,552 - root - MainThread - INFO - CallBack Status : Error"
    "2011-06-24 13:56:42,557 - root - MainThread - INFO - [2011/06/24 13:56:42] Placed 17 calls"
    "2011-06-24 13:56:47,703 - root - MainThread - INFO - waiting..."

    Ans: 有兩項需要檢查

    1. manager.conf 的權限是否與 A2B 的設定(CALLBACK > Server)相符。
    2. manager.conf 的設定參考如下
    [myasterisk]
    secret = mycode
    deny = 0.0.0.0/0.0.0.0
    permit = 127.0.0.1/255.255.255.0
    read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
    write = system,call,agent,user,config,command,reporting,originate
    
    Q:檢查 /var/log/asterisk/full,出現錯誤:

    [2011-06-24 14:13:50] VERBOSE[6569] manager.c:   == Manager 'myasterisk' logged off from 127.0.0.1
    [2011-06-24 14:13:50] NOTICE[6701] manager.c: 127.0.0.1 failed to authenticate as 'myasterisk'
    [2011-06-24 14:13:51] VERBOSE[6701] manager.c:   == Connect attempt from '127.0.0.1' unable to authenticate

    Ans: 檢查 A2B > CALLBACK > Server > 這裡的資訊必須與 /etc/asterisk/manager.conf 相符。

    Powered by MindTouch Core