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的传真功能开发者在哪里?

原文地址:https://www.cnblogs.com/yoyotl/p/5422305.html