asterisk 10 版以後內建支援 T.38 協定傳真,只要你的 voip gateway 有支援 T.38 格式, asterisk 就可直接收傳真。
首先說明 voip gateway 設定的部份,請參考下圖
底下的voip gateway 是偉僑 WellGate 2680
底下是另一台voip gateway 訊詠科技 IXP_SP1700,傳真的部份基本上是保持預設值沒有更改
接著說明 asterisk 設定的部份
/etc/asterisk/sip.conf
[general]
;fax WellGate 2680 傎真設定方式
;t38pt_udptl=yes
;faxdetect=yes
;訊詠科技 IXP_SP1700 傎真設定方式
t38pt_udptl=yes,redundancy
faxdetect=t38
在這裡有提到, FAX detect 是給類比訊號使用的,不是給 T.38使用的,T.38 使用faxdetect=yes 此參數的話,會搞亂它的訊號。
/etc/asterisk/extensions.conf
;傳真接收測試
;exten => 02999996,1,Answer()
; same => n,Wait(1)
; same => n,ReceiveFax(/tmp/faxtest.tiff)
;底下是將接收的檔案使用變數檔名來儲存
exten => 02999996,1,Answer()
same => n,Wait(1)
same => n,ReceiveFax(/tmp/fax-${STRFTIME(${EPOCH},,%F-%H時%M分%S秒)}_${CALLERID(number)}.tiff)
上面使用變數的檔名存檔後的長這樣
fax-2014-07-18-16時12分31秒_922691556.tiff
說明: 02999996 是 hotline 分機,也可是設定為 DID 號碼 (據說DID是虛擬號碼,有可能使用DID無法正常接收傳真,得測試過才知道)
這樣設定之後,雖然可以正常的收到傳真檔案,但在asterisk後台會看到這樣的錯誤訊息:
chan_sip.c:9809 process_sdp_o: Call 80c13800-fb06a8c0-2390-45026-cb-2a60ab06-cb responded to our T.38 reinvite without changing SDP version; ‘ignoresdpversion’ should be set for this peer.
解決方法,可在 sip.conf 裡的那條線路裡設定底下參數
[myfax-peer]
ignoresdpversion=yes
[note]
參考資料:voip-info:asterisk fax、asterisk wiki、如何設定fax debug、t.30與t.38的區別、T.38協定規範、[/note]
專有名詞說明:
T.30:是傳真在PSTN上的協定。
軟件像傳真交換協議一樣是面向傳真應用的。它可以建立和控制兩個傳真調制解調器之間的通信。一共會涉及5個階段:呼叫建立,信息預處理程序(選擇通信方式),信息傳輸(包括相位同步),發布信息程序和呼叫釋放.
T.30E:簡單說就是T.30彩色版。asterisk並不支援T.30E協定。
軟件執行連續色調彩色圖像文件傳真發送的G3傳真步驟。利用T.30E,可以在通用電話交換網和其他網絡中高效率的傳輸高質量,全彩色和灰度圖像.
T38:是傳真PSTN 到IP中繼的協定