[Freeswitch-dev] mod_fax

Steve Underwood steveu at coppice.org
Sun Jan 4 07:21:19 PST 2009


Hi all,

I finally started to play with mod_fax today. First, a couple of little 
observations. Although there is a config file for fax, modules.conf.xml 
doesn't contain an entry for mod_fax, and dialplan/default.xml doesn't 
contain a demo like

    <extension name="test_rxfax_stream">
      <condition field="destination_number" expression="^9011$">
    <action application="answer" />
    <action application="playback" data="silence_stream://2000"/>
    <action application="rxfax" data="rxfax.tif"/>
    <action application="hangup"/>
      </condition>
    </extension>

    <extension name="test_txfax_stream">
      <condition field="destination_number" expression="^9012$">
    <action application="txfax" data="txfax.tif"/>
    <action application="hangup"/>
      </condition>
    </extension>

as it does for other modules.

For more serious things.....

If the far end of a SIP FAX transaction sends a reinvite to switch to 
T.38, FS sends a 488 back and everything fouls up. Other boxes send back 
the previous codec as the new one to use, and everything carries on 
smoothly in audio mode. I'm not a SIP expert, so I don't know the 
details of what it says on the topic, but in the real world successful 
continuance of a call requires a response other than 488. As an aside, 
the called party should be the one to initiate an attempt to use T.38, 
but in the real world the calling party often does.

If T.38 is not available (which it isn't ever right now), and the call 
starts with a low bit rate codec, we should initiate a reinvite to use 
Alaw or ulaw. If that fails we might as well abandon the call.

mod_fax currently follows the practice of my old and crude demo programs 
for *, and has apps called rxfax and txfax. This is taking a very narrow 
view of a FAX machine, and I think is too limiting. I think the 
following is how things should be:

    - One app, probably just called FAX.
    - It will be started with a flag saying if it should act as the 
calling party or the called party.
    - The app will be given optional lists of files to send, and files 
to receive.
    - The app will do its best to exchange all the files it can, 
including the use of poll mode FAXing.

The module documentation says page by page events should be added (which 
spandsp supports), and this seems a sound idea. FAXback and other 
services might be implemented through this.

Regards,
Steve




More information about the Freeswitch-dev mailing list