我是 asterisk 的新手。当我尝试发送传真时,无法成功。经过大量研究后,我决定在这里提问。
我希望有人能给我一些建议来纠正我的配置。最后,我希望我的系统可以通过 t.38 发送传真。
多谢!
详细信息如下:
我的系统:Ubuntu 14.04 + 星号 11.7
我使用 apt-get 安装 asterisk 11.7 的 ubuntu 默认版本。为了方便调试,我只需使用默认版本更改一些参数值
配置文件
t38pt_udptl = yes,redundancy,maxdatagram=400
faxdetect = yes
扩展配置文件
[sendFAX]
exten => s,1,VERBOSE(sending fax...)
exten => s,n,Set(FAXOPT(headerinfo)=Fax from a Demo test)
exten => s,n,SendFAX(/tmp/demo.tiff,f)
;I get demo.tiff file from "$ gs -q -dNOPAUSE -dBATCH -sDEVICE=tiffg4 -sPAPERSIZE=letter -sOutputFile=<dest> <src>"
exten => s,n,VERBOSE(ok!)
exten => s,n,Hangup
我使用 AMI 发起传真呼叫。在 CLI 中,一切正常。我没有收到任何错误消息。当我使用 wireshark 检查此通信的详细信息时,我发现 Asterisk 使用的是 G711,而不是预期的 T.38。
然而,在接收端,我没有收到传真,只是收到错误“Dcn No Dis”
经过研究,我得到了这个:
T.30 传真信令消息 在 Voip 传真呼叫中,T.38 数据包的前面和后面都是 T.30 传真信令消息。这些消息包括:
- DIS:数字识别信号,指示终止传真功能(例如数据速率)
- DCS:数字命令信号,指示发送传真所使用的传输模式(例如传输速率)
- TCF:训练检查序列(发送 1.5 秒)
- CFR:确认接收,表示接收传真已准备好接收文件
- MPS:多页信号(如果发送多页,则在每一页后发送)
- MCF:消息确认,表明已收到页面
- EOP:程序结束消息,表示没有更多页面需要发送
- DCN: 断开消息
附加可选消息:
1.CSI:被叫用户识别
2.TSI:传输用户识别码
但是我还是不明白“Dcn No Dis”是什么意思,我的星号系统出了什么问题。
我确信这些:
- 接收器工作良好。
- 我的 ISP 提供商完全支持 g711 和 t.38 传真终端
- 我的测试服务器不在任何防火墙后面。
这演示.jpg这是我的wireshark的截图。从19到1841,所有的流量都是RTP包。
这t.38 png图表显示的是一次典型的传真呼叫。
答案1
t.38 的主要问题如下
1) 默认情况下,asterisk 编译时不支持 spandsp,因此没有 t.38
2) 即使您编译了该程序,您的 t38udpl 行也必须与提供商期望的完全相同。任何一个参数错误都可能导致无法正常工作。
3) 出站呼叫时,t.38 必须由被叫方发起。因此,如果您的提供商未检测传真或未要求 Asterisk 切换到 t.38,Asterisk 将不会执行此操作。
4) t.38 的发起是使用一些变量(Aterisk 1.8 中的 T38CALL=1,未检查 11 版本中的内容)和提供商部分(而不是 ip)完成的。
http://www.voip-info.org/wiki/view/Asterisk+T.38
免责声明:T38 呼叫是 Aterisk 最复杂的部分之一,更复杂的只有两个主题 - h323 视频呼叫和 webrtc。