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的传真功能开发者在哪里?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了