FreeSWITCH的传真发送
详细的学习请参考:https://wiki.freeswitch.org/wiki/Mod_spandsp
我只说说WIKI上没有直接写出来却又很实用的东西。
一、传真收发
环境大致如下:
FreeSWITCH<------------>讯时网关(mx8)<------------->电话外线(模拟线)<---------------->公网交换网络<-------------->电话外线(模拟线)<------------------>传真机
实现传真的发送:
1 originate sofia/gateway/tomx8/010xxxxxxxx &txfax(/home/123.tiff)
实现传真的接收:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <include> 3 <extension name="fax_receive"> 4 <condition expression="^999$" field="destination_number"> 5 <action application="answer"/> 6 <action application="playback" data="silence_stream://2000"/> 7 <action application="rxfax" data="/home/recvFax/${caller_id_number}_${uuid}.tif"/> 8 <action application="hangup"/> 9 </condition> 10 </extension> 11 </include>
很快就实现了两地的传真相互收发。
二、哪里有这么简单
环境改变了,只是小小的改变,却引出一大片问题。
出局的网关换了,由讯时的换成了另外一款产品。
然而既不能收也不能发!
三、原因分析
抓包分析,流程大大出乎我的意料啊!
此处需要流程图(新版本的Wireshark截的太小了!)
花费了近2天的时间,抓包,测试,甚至下载了ITU的T.38标准来查看!
最后只需要增加简单几个参数,就实现了标准的T.38协议收发。
四、T.38的传真发送
1 originate {fax_enable_t38=true,fax_enable_t38_request=true}sofia/gateway/tomx8/010xxxxxxxx &txfax(/home/123.tiff)
五、T.38的传真接收
在步骤一的路由配置中增加两行条件。
1 <action application="set" data="fax_enable_t38=true"/> 2 <action application="set" data="execute_on_answer=t38_gateway peer"/>
六、结束语
增加了这几处参数,流程终于和预期的一样了。
但是之前的“怪异”流程是怎么回事呢?似乎又要暂时放一放了,
或者,有传真领域的专家能分享一下吗?
再或者,讯时网关mx8的传真功能开发者在哪里?
上善若水,水利万物而不争。