FreePBX and Fax for Asterisk.. Help

I needed to get a fax solution up and going, and as Digium seemed to have a nice packaged solution, I signed up and grabbed a copy of the Free Fax for Asterisk.

Anyway I went and installed the Free Fax for Asterisk, and looking at CLI console I can see I have one channel available. So it would appear I have the fax module loaded up correctly. I was under the impression that the newer FreePBX had support built in for the Fax for Asterisk code, I even upgrated to 2.8 to make sure I was on the most current FPBX.

So my million dollar question is, how do I make this all work? How do I set it up to receive a fax, and where does it go (I am guessing it will be a TIFF or PDF that can be opened) once received. If I can get the incoming going, then how do I send a fax (if possible)?

I have looked around for stuff on this, and maybe I am just not doing the right searches, but I’ll be dammed if I can figure out how to make this all play, and I have looked all through the FBPX menus for a way to set it all up…

Any help or pointers would be most appreciated…

For those people who can’t figure this out. It took me a while, because its simple, but not clear. This is what you supposedly do.

  1. go to an extension, any real extension (not a virtual extension) on freepbx, about halfway down in a section called "fax’ click no the checkbox that says “enabled”. Then add an email address where you want the fax sent.
  2. got back to the IVR, announcement, etc and NOW under the Destination option you should see a new option called “fax recipient”. Choose this option and select the extension you want to send the fax to.
    **"fax recipient ONLY shows up once you have enabled a the Fax section for at least one extension.

All that being said, once i get there i get fax tone but all faxes end up failing (even though i am trying to receive through a dahdi trunk).

Hope this helps,
-gk

…that Moshe meant “THAT much faith in Asterisk, but sooooo little faith in FreePBX?”

In other words, the earlier posted had assumed that the problem was caused by FreePBX 2.8, when the problem is, in fact, with Asterisk 1.8. FreePBX is not the problem here.

Thanks for your work with faxing, Moshe.

Tom

lamarmora, dont worry about that. Please see if you can respond to the admins requests in the ticket.

Sorry Moshe, my English is too poor: I cannot understand what
"THAT much faith in FreePBX and sooooo little in FreePBX?" means.
If it’s important please explain it in a more “scolastic” English.

By the way it looks like we have found a bug !!
Never mind: as end-users (not developers) we just have to wait for it to be resolved.
Quite easy.

Thank you again.

Seriously? THAT much faith in asterisk and sooooo little in FreePBX? Seems like soemone forgot to do their required reading for homework…

And for everyone else: https://issues.asterisk.org/view.php?id=18299

I’ve got exactly the same problem.
Fax detection works fine and redirects normally voice calls to the setted extension. Then the extension rings and the voice call goes on normelly.
Instead the fax incoming calls are redirected to the setted “Fax Recipient” (Extension 448 in my case) and ended up with a busy (or congestion - not sure) tone.

Here is the log (to avoid confusion in reading the log: the fax starts from an analog fax connected, through an ATA, to my extension 445 and calls, through my provider, my trunk 0302077007. The inbound route (DID 0302077007) answers the call, detects the fax tone, redirects the call to to the “Fax Recipient” 448 and it gets dropped):

[Nov 12 01:37:22] VERBOSE[18809] pbx.c: – Executing [s@macro-dialout-trunk:16] Macro(“SIP/445-0000004a”, “dialout-trunk-predial-hook,”) in new stack
[Nov 12 01:37:22] VERBOSE[18809] pbx.c: – Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit(“SIP/445-0000004a”, “”) in new stack
[Nov 12 01:37:22] VERBOSE[18809] pbx.c: – Executing [s@macro-dialout-trunk:17] GotoIf(“SIP/445-0000004a”, “0?bypass,1”) in new stack
[Nov 12 01:37:22] VERBOSE[18809] pbx.c: – Executing [s@macro-dialout-trunk:18] GotoIf(“SIP/445-0000004a”, “0?customtrunk”) in new stack
[Nov 12 01:37:22] VERBOSE[18809] pbx.c: – Executing [s@macro-dialout-trunk:19] Dial(“SIP/445-0000004a”, “SIP/LamFax/0302077007,300,Tt”) in new stack
[Nov 12 01:37:22] VERBOSE[18809] netsock2.c: == Using SIP RTP TOS bits 184
[Nov 12 01:37:22] VERBOSE[18809] netsock2.c: == Using SIP RTP CoS mark 5
[Nov 12 01:37:22] VERBOSE[18809] app_dial.c: – Called LamFax/0302077007
[Nov 12 01:37:22] VERBOSE[5121] netsock2.c: == Using SIP RTP TOS bits 184
[Nov 12 01:37:22] VERBOSE[5121] netsock2.c: == Using SIP RTP CoS mark 5
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-sip-external:1] NoOp(“SIP/0302056783-0000004c”, “Received incoming SIP connection from unknown peer to 0302077007”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-sip-external:2] Set(“SIP/0302056783-0000004c”, “DID=0302077007”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-sip-external:3] Goto(“SIP/0302056783-0000004c”, “s,1”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Goto (from-sip-external,s,1)
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [s@from-sip-external:1] GotoIf(“SIP/0302056783-0000004c”, “1?checklang:noanonymous”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Goto (from-sip-external,s,2)
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [s@from-sip-external:2] GotoIf(“SIP/0302056783-0000004c”, “0?setlanguage:from-trunk,0302077007,1”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Goto (from-trunk,0302077007,1)
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-trunk:1] Set(“SIP/0302056783-0000004c”, “__FROM_DID=0302077007”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-trunk:2] Gosub(“SIP/0302056783-0000004c”, “app-blacklist-check,s,1”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [s@app-blacklist-check:1] GotoIf(“SIP/0302056783-0000004c”, “0?blacklisted”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [s@app-blacklist-check:2] Set(“SIP/0302056783-0000004c”, “CALLED_BLACKLIST=1”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [s@app-blacklist-check:3] Return(“SIP/0302056783-0000004c”, “”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-trunk:3] ExecIf(“SIP/0302056783-0000004c”, “0 ?Set(CALLERID(name)=0302056783)”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-trunk:4] Set(“SIP/0302056783-0000004c”, “__CALLINGPRES_SV=allowed_not_screened”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-trunk:5] Set(“SIP/0302056783-0000004c”, “CALLERPRES()=allowed_not_screened”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-trunk:6] Set(“SIP/0302056783-0000004c”, “FAX_DEST=ext-fax^448^1”) in new stack
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-trunk:7] Answer(“SIP/0302056783-0000004c”, “”) in new stack
[Nov 12 01:37:22] VERBOSE[18809] app_dial.c: – SIP/LamFax-0000004b answered SIP/445-0000004a
[Nov 12 01:37:22] VERBOSE[18810] pbx.c: – Executing [0302077007@from-trunk:8] Wait(“SIP/0302056783-0000004c”, “4”) in new stack
[Nov 12 01:37:23] VERBOSE[18811] manager.c: == Manager ‘admin’ logged on from 127.0.0.1
[Nov 12 01:37:23] VERBOSE[18811] manager.c: == Manager ‘admin’ logged off from 127.0.0.1
[Nov 12 01:37:25] VERBOSE[18810] chan_sip.c: == Redirecting ‘SIP/0302056783-0000004c’ to fax extension due to CNG detection
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: == Spawn extension (from-trunk, fax, 1) exited non-zero on ‘SIP/0302056783-0000004c’
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: – Executing [h@from-trunk:1] Macro(“SIP/0302056783-0000004c”, “hangupcall,”) in new stack
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: – Executing [s@macro-hangupcall:1] GotoIf(“SIP/0302056783-0000004c”, “1?skiprg”) in new stack
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: – Goto (macro-hangupcall,s,4)
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: – Executing [s@macro-hangupcall:4] GotoIf(“SIP/0302056783-0000004c”, “1?skipblkvm”) in new stack
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: – Goto (macro-hangupcall,s,7)
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: – Executing [s@macro-hangupcall:7] GotoIf(“SIP/0302056783-0000004c”, “1?theend”) in new stack
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: – Goto (macro-hangupcall,s,9)
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: – Executing [s@macro-hangupcall:9] Hangup(“SIP/0302056783-0000004c”, “”) in new stack
[Nov 12 01:37:25] VERBOSE[18810] app_macro.c: == Spawn extension (macro-hangupcall, s, 9) exited non-zero on ‘SIP/0302056783-0000004c’ in macro ‘hangupcall’
[Nov 12 01:37:25] VERBOSE[18810] pbx.c: == Spawn extension (from-trunk, h, 1) exited non-zero on ‘SIP/0302056783-0000004c’
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [h@macro-dialout-trunk:1] Macro(“SIP/445-0000004a”, “hangupcall,”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [s@macro-hangupcall:1] GotoIf(“SIP/445-0000004a”, “1?skiprg”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Goto (macro-hangupcall,s,4)
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [s@macro-hangupcall:4] GotoIf(“SIP/445-0000004a”, “1?skipblkvm”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Goto (macro-hangupcall,s,7)
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [s@macro-hangupcall:7] GotoIf(“SIP/445-0000004a”, “1?theend”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Goto (macro-hangupcall,s,9)
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [s@macro-hangupcall:9] Hangup(“SIP/445-0000004a”, “”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] app_macro.c: == Spawn extension (macro-hangupcall, s, 9) exited non-zero on ‘SIP/445-0000004a’ in macro ‘hangupcall’
[Nov 12 01:37:25] VERBOSE[18809] features.c: == Spawn extension (macro-dialout-trunk, h, 1) exited non-zero on ‘SIP/445-0000004a’
[Nov 12 01:37:25] VERBOSE[18809] app_macro.c: == Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on ‘SIP/445-0000004a’ in macro ‘dialout-trunk’
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: == Spawn extension (SipFax, 0302077007, 5) exited non-zero on ‘SIP/445-0000004a’
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [h@SipFax:1] Macro(“SIP/445-0000004a”, “hangupcall,”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [s@macro-hangupcall:1] GotoIf(“SIP/445-0000004a”, “1?skiprg”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Goto (macro-hangupcall,s,4)
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [s@macro-hangupcall:4] GotoIf(“SIP/445-0000004a”, “1?skipblkvm”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Goto (macro-hangupcall,s,7)
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [s@macro-hangupcall:7] GotoIf(“SIP/445-0000004a”, “1?theend”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Goto (macro-hangupcall,s,9)
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: – Executing [s@macro-hangupcall:9] Hangup(“SIP/445-0000004a”, “”) in new stack
[Nov 12 01:37:25] VERBOSE[18809] app_macro.c: == Spawn extension (macro-hangupcall, s, 9) exited non-zero on ‘SIP/445-0000004a’ in macro ‘hangupcall’
[Nov 12 01:37:25] VERBOSE[18809] pbx.c: == Spawn extension (SipFax, h, 1) exited non-zero on ‘SIP/445-0000004a’

Does anybody have any idea?

Thanks a lot.

There is no fax option with a virtual extension in Asterisk 2.8.

You don’t want a misc. destination you want to create a ‘virtual’ extension. That way you can route DID’s to fax’s with inbound routes.

Did you look at teh Digium Fax for Asterisk documentation, it covers t.38 setup and troubleshooting.

Using Asterisk 1.80, FreePBX 2.8, and Fax Module 2.8.0.5. Fax for Asterisk installed fine, but there doesn’t appear to be any fax connectivity from FreePBX to Asterisk on inbound calls. In addition, calling an extension set up with Fax=Enabled and an email address, just gives a Congestion tone as soon as it answers. Just wondering if perhaps FreePBX 2.8 broke something??

I am talking about the FreePBX fax module. I assumed you had FFA installed correctly.

The you can make a “virtual” extension and set the fax options (just the email you want the fax send to).

It’s that simple.

The fax module is 2.8.05 and may be in the extended repo, not sure. The Schmooze dudes Wrote and Published it.

Well I am not sure if this is exactly how it should have been done, but I did enable to extended repo and found a module by schmooze, and installed it. Then I went into the Misc Destinations, and created a path to the System FAX. After that I was able to get an inbound fax received.

I guess the next million dollar question is, how to you send something outbound? Something tells me that will be far more complicated than inbound…

Oh and if you know, how can I tell if T.38 is working, heck I wonder if SIPstation even supports T.38…

-HL

You need to install the fax module, setup a fax extension and then an inbound route to the fax extension.

That’s all it takes.

OK, maybe it’s late, and maybe I just have a brain block on this one item, as I know I have chatted with you many times here and over on the TB forums over the years.

Install the module, I will assume you mean installing the two required .so modules in the modules directory, and if so yes I have done that and done a restart to get everything loaded up into the running sytems, along with installing the key to make it all play.

Setup a fax extension? Is there an example of this someplace, I mean I have put in hundreds of SIP and even analog ports, but what type of extension am I setting up in the system, something custom, as I don’t see a “fax” extension as an option. I really must be missing something simple here, that just isn’t clicking for some reason. I mean this doesn’t require me to have an FXS port connected to a hardware fax does it.

As to the inbound route, simple enough, and I can easily point a DID to this fax extension if I can figure out how to get it in. I am running asterisk 1.6.2.x so I see it has a SIP detection, can I also have it listen to the main incoming number for a fax calling, or is this a bad idea?

Hopefully you (or someone) can shed some light on this fax extension, and maybe this will click for me… Thanks…

-HL

Can I send fax using Fax for Asterisk?

If yes, then how?

Thanks for the post tadpole. I could get the fax to receive and then send to misc. destination 666 for system fax but did not notice the availible fax extension after enabling this. It really is not that user friendly.

As for the dahdi not receiving with dahdi I have noticed the the app_rxfax.c is included with asterisk 1.6 but not 1.4. If you can go to your asterisk source directory and run menuselect you can see if this is installed. Otherwise I would check out the faxdetec settings in the chan_dahdi.conf file or the spandsp version. I am using 0.0.5

Moshe,

I just loaded one free channel from Digium, Can you take a look at this log? It seems like everything is okay until it says, “pbx.c:4123 pbx_extension_helper: Cannot find extension context”

I have an incoming route goinng to an IAX ext with fax enabled and and email set. Fax Module is loaded through GUI. FreePBX 2.9 all up to date.

There is no hylafax on this machine.

localhost*CLI> fax show sessions

Current FAX Sessions:

Channel Tech FAXID Type Operation State File(s)

0 FAX sessions

== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
– Executing [xxxxxxxxxxx@from-trunk:1] Set(“SIP/VI-00000001”, “__FROM_DID=xxxxxxxxxxx”) in new stack
– Executing [xxxxxxxxxxx@from-trunk:2] NoOp(“SIP/VI-00000001”, “Received an unknown call with DID set to xxxxxxxxxx”) in new stack
– Executing [xxxxxxxxxxxx@from-trunk:3] Goto(“SIP/VI-00000001”, “s,a2”) in new stack
– Goto (from-trunk,s,2)
– Executing [s@from-trunk:2] Answer(“SIP/VI-00000001”, “”) in new stack
– Executing [s@from-trunk:3] Wait(“SIP/VI-00000001”, “2”) in new stack
== Redirecting ‘SIP/VI-00000001’ to fax extension due to CNG detection
== Spawn extension (from-trunk, fax, 1) exited non-zero on ‘SIP/VI-00000001’
– Executing [fax@from-trunk:1] Goto(“SIP/VI-00000001”, “,”) in new stack
[2011-09-03 11:20:48] NOTICE[20978]: pbx.c:4123 pbx_extension_helper: Cannot find extension context ‘’
[2011-09-03 11:20:48] WARNING[20978]: pbx.c:10244 pbx_parseable_goto: Priority ‘’ must be a number > 0, or valid label
== Spawn extension (from-trunk, fax, 1) exited non-zero on ‘SIP/VI-00000001’
– Executing [h@from-trunk:1] Macro(“SIP/VI-00000001”, “hangupcall,”) in new stack
– Executing [s@macro-hangupcall:1] GotoIf(“SIP/VI-00000001”, “1?theend”) in new stack
– Goto (macro-hangupcall,s,3)
– Executing [s@macro-hangupcall:3] Hangup(“SIP/VI-00000001”, “”) in new stack
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on ‘SIP/VI-00000001’ in macro ‘hangupcall’
== Spawn extension (from-trunk, h, 1) exited non-zero on ‘SIP/VI-00000001’
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
– Executing [xxxxxxxxx@from-trunk:1] Set(“SIP/VI-00000002”, “__FROM_DID=xxxxxxxxxx”) in new stack
– Executing [xxxxxxxxxxx@from-trunk:2] NoOp(“SIP/VI-00000002”, “Received an unknown call with DID set to xxxxxxxxxx”) in new stack
– Executing [xxxxxxxxxxx@from-trunk:3] Goto(“SIP/VI-00000002”, “s,a2”) in new stack
– Goto (from-trunk,s,2)
– Executing [s@from-trunk:2] Answer(“SIP/VI-00000002”, “”) in new stack
– Executing [s@from-trunk:3] Wait(“SIP/VI-00000002”, “2”) in new stack
– Executing [s@from-trunk:4] Playback(“SIP/VI-00000002”, “ss-noservice”) in new stack
– <SIP/VI-00000002> Playing ‘ss-noservice.ulaw’ (language ‘en’)
== Redirecting ‘SIP/VI-00000002’ to fax extension due to CNG detection
== Spawn extension (from-trunk, fax, 1) exited non-zero on ‘SIP/VI-00000002’
– Executing [fax@from-trunk:1] Goto(“SIP/VI-00000002”, “,”) in new stack
[2011-09-03 11:26:05] NOTICE[20991]: pbx.c:4123 pbx_extension_helper: Cannot find extension context ‘’
[2011-09-03 11:26:05] WARNING[20991]: pbx.c:10244 pbx_parseable_goto: Priority ‘’ must be a number > 0, or valid label
== Spawn extension (from-trunk, fax, 1) exited non-zero on ‘SIP/VI-00000002’
– Executing [h@from-trunk:1] Macro(“SIP/VI-00000002”, “hangupcall,”) in new stack
– Executing [s@macro-hangupcall:1] GotoIf(“SIP/VI-00000002”, “1?theend”) in new stack
– Goto (macro-hangupcall,s,3)
– Executing [s@macro-hangupcall:3] Hangup(“SIP/VI-00000002”, “”) in new stack
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on ‘SIP/VI-00000002’ in macro ‘hangupcall’
== Spawn extension (from-trunk, h, 1) exited non-zero on ‘SIP/VI-00000002’

How can I write dial plan, that will call a client and play some sound file?

Nebot - Do not hijack a thread and change the subject. Please post your own thread.

Thanks

Google Asterisk Call Files
Best not to highjack, though.

Respectfully,

franklin