Faxing using T.38
To be able to receive a Fax in the 3CX server one needs to route a DID number to an extension with a valid email address using the routing option “Send Fax to”.
The Fax server will receive the Fax and will send it as a .pdf document to the email of the selected extension.
The 3CX Fax server uses T.38 as the default Fax method. When an INVITE is routed to the Fax server it will initially answer with a 200 OK containing Audio codecs. Moments after this however, it will send a re-INVITE to the caller with only the T.38 codec in the SDP. If the caller responds correctly and the call is established, the communication will proceed between the two endpoints using the T.38 protocol.
In the re-INVITE 3CX will send with the T.38 codec, the SDP will request a different port than the one initially negotiated. The provider must be able to switch to the new port and send all media to that. Failure to do so will result in the Fax communication failing.
Sample 200 OK message from 3CX to provider
Sample re-INVITE for T.38
G711 to T.38 Fallback
In the event that T.38 is not supported, 3CX has the option to enable audio faxing over G711.
This can be enabled from the Management Console under Settings → FAX Server. Once enabled the IVR service of 3CX needs to be restarted.
This option will allow 3CX Fax Server to listen for Fax Tones for a predetermined amount of time after the call is established. If a Fax Tone is detected, the Fax server will attempt to receive the Fax over audio using the G711 codec. The default time the 3CX Fax Server will wait for is 10 seconds. For this value to change one needs to navigate to Settings → Parameters and search for “FAX_PCMU_T38_FALLBACK_TIMEOUT”.
If within the timeout the 3CX Fax Server does not detect an in-band Fax Tone, then it will send a re-INVITE with T.38 in the SDP and act as explained in section “Faxing using T.38”.
A Fax can be received by a Fax capable device using a supported FXS/ATA gateway. The first thing needed is to create a Fax extension. This can be done from the “Fax Extensions” node in the 3CX Management Console. The FXS/ATA gateway must register as a Fax Extension to 3CX in order to be able to receive faxes and an Inbound Rule must be created to forward incoming fax calls to the specific Fax Extension.
In this scenario, negotiation between the SIP Trunk Provider and the FXS/ATA Gateway, although proxy’d by 3CX, goes unmodified (3CX acts as a stateless proxy).
The same device can be used for Outbound faxing given that there is a matching Outbound Rule that enables this. Again, 3CX will not process or modify any packets.