Was this page helpful?

Google Voice on PIAF 1757

    簡介

    由於 Asterisk 1.8 版本已經內建支援 Google Voice 的連接,而 PIAF 1.7.5.7 版本所包含的 Asterisk 就是 1.8.x,所以此篇就以這版本來實做 Google Voice(以下簡稱 GV)的整合。

    還不瞭解 Google Voice 為何物的,請先閱讀 用Google Voice免費撥美國電話

    系統環境

    • PIAF 1.7.5.7
    • Asterisk 1.8.6.0
    • CentOS 5.7

    開始設定

    停用/啟用 Google Voice 模組

    為何要將停用/啟用放在文章的最開始呢?這是因為 PIAF 1757 在完成系統安裝後,預設會啟用 Google Voice 模組,不過因為尚未完成 Asterisk 的相關設定,所以在 CLI log 會不斷出現有關的錯誤訊息,如下:

    JABBER: gtalk_account OUTGOING: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AHlvdXJlbWFpbAB5b3Vyc2VjcmV0</auth>

    JABBER: gtalk_account INCOMING: <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>

    對於不想使用 GV 的人,可以先依照步驟將 GV 停用,爾後需要時再啟用。

    編輯 /etc/asterisk/modules.conf

    ; Disable GoogleVoice Modules
    noload => res_jabber.so
    noload => chan_gtalk.so
    

    重啟 Asterisk

    amportal stop
    amportal start 
    

    註:如果要重新開啟 GV,只要註解那兩行,重啟 Asterisk 服務。

    Google Voice 帳號

    要實作此篇教學當然少不了 Google Voice 的帳號,不過很可惜,如果你目前還沒有這個帳號,現在也無法再申請了。為了要將 GV 整合進 Asterisk,建議不要將同樣的 GV 帳號作其他用途,例如用網頁來撥號等。登入 GV 的管理介面,作一些設定。

    GV 管理:https://www.google.com/voice/

    1. Voice Settings > Phone >
      • Forward calls to: Google Chat
    2. Voice Settings > Calls >
      • Call Screening: Off
    3.  
    設定 Asterisk

    注意:如果使用 PIAF,請跳過這些步驟

    編輯 /etc/asterisk/gtalk.conf

    [general]
    context=from-google
    allowguests=yes
    bindaddr=0.0.0.0
    
    [guest]
    disallow=all
    allow=ulaw
    context=from-google
    connection=asterisk

    Notes:

    * connection 似乎不用與 jabber.conf 內容相符。
    * [guest] 的 context  就是 GV 撥入的 context。
    * 任何修改後,必須重啟 asterisk 服務才會被套用。

    編輯 /etc/asterisk/jabber.conf

    [general]
    autoregister=yes
    
    [your-gv-name]
    type=client
    serverhost=talk.google.com
    [email protected]/Talk
    secret=your_google_password
    port=5222
    usetls=yes
    usesasl=yes
    statusmessage="I am an Asterisk Server"
    timeout=100

    新增 Context from-google
    編輯 /etc/asterisk/extensions_custom.conf

    [from-google]
    exten => s,1,Answer()
    exten => s,n,Wait(2)
    exten => s,n,SendDTMF(1)
    exten => s,n,Set(CALLERID(num)=${CUT(CALLERID(name),@,1)})
    exten => s,n,Set(CALLERID(name)=${CUT(CALLERID(name),/,1)})
    exten => s,n,Goto(from-trunk,YOUR-GV-NUMBER,1)
    exten => s,h,Hangup
    
    • 取代 YOUR-GV-NUMBER 為實際的 GV 號碼。
    設定 FreePBX

    Google Voice
    僅適用 PIAF 用戶,其餘用戶請手動設定 jabber.conf。

    • Phone Number:GV 的號碼(10位數)
    • Username:GV 帳號(不包含 @gmail.com)
    • Password:GV 密碼
    • Add trunk:勾選
    • Add routes:不選
    • Agree to TOS:勾選
       

    Outbound

    1. Trunks > Add Custom Trunk(PIAF 用戶請跳過)
      • Trunk Name: Google Voice
      • Custom Dial String: gtalk/<your-gv-name>/[email protected]
        注意:這裡的 string 因為 FreePBX 設計關係,會有總字數的限制。
         
    2. Outbound Routes > Add Roue
      • Route Name: GV_011
      • Dial Patterns: 011|.
      • Trunk: GV_XXXXXX
         
    3. Inbound Routes > Add Incoming Route
      • DID Number:GV 號碼
      • Set Destination:隨便
         
    4. Extensions > Add Custom Device(選用)
      • Extension Number:120
      • Display Name:GTalk-your-friend
      • dial:Gtalk/<your-gv-name>/[email protected]

     

    設定完,重啟一下服務

    amportal stop
    amportal start 
    
    開始測試
    • 外線撥入 GV
      1. DTMF(透過 Skype Out):OK
      2. DTMF(透過 SIP Provider):OK
         
    • 內線撥出 GV
      1. DTMF:OK
         
    • GTalk 撥入 GTalk
      1. GTalk for PC:OK(注意:PC軟體不支援 dialpad)
      2. GTalk for Android
         
    • GTalk 撥出 GTalk
      1. GTalk for PC:OK

    F.A.Q

    Q:外線撥入GV時,接通率不是100%,Caller 只能聽到 ring,但電話已經進入 Asterisk 的 IVR

    A:這是因為 context from-google(PIAF 是 googlein)的 SendDTMF 前的 Wait 時間太短

    exten => s,n,Wait(2) <--- 調整到 3 或更高試試
    exten => s,n,SendDTMF(1)

    如果是 PIAF 用戶,必須修改 PHP 程式
    /var/www/html/admin/modules/googlevoice/functions.inc.php

    function generate_extensions_conf($ast_version) {
    ...
    if (true) {
                                    $ext->add($incontext, $address, '', new ext_answer('') );
                                    $ext->add($incontext, $address, '', new ext_wait('3') );  <---- 改這裡
                                    $ext->add($incontext, $address, '', new ext_senddtmf('1') );
                            } 
    
    Q: Updated by 2011-10-18) 不知怎的,突然 GV 就無法撥出及撥入

    Ans: 在這段期間 GV 幾乎無法使用,撥出時只會一直響鈴,但不會接通,撥入時直接進 GV 的 Voicemail。修正方法如下:

    下載更新檔 patch-chan_gtalk.c.diff,並重新編譯及安裝 Asterisk

    cd /usr/src/asterisk/channels/
    cp -a chan_gtalk.c chan_gtalk.c.orig
    patch < patch-chan_gtalk.c.diff 
    cd ../
    make clean
    ./configure
    make
    amportal stop
    make install
    cd ../
    cd asterisk-flite/
    make clean
    make
    make install
    amportal start
    

    確認 flite 及 mysql 模組正常否

    asterisk -rx "core show application flite"
    asterisk "module show like mysql" 
    
    Was this page helpful?
    標籤 (Edit tags)

    文件 1

    文件大小日期附件上傳者 
     patch-chan_gtalk.c.diff
    Fixed for GV Outgoing/Incoming Calls failure
    544 位元17:02, 18 Oct 2011alang動作
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core