Bear in mind, this was just for testing so I used a SPA 8000 and a spare server 
because it is what I had laying around and I didn’t want to buy any hardware. I 
also used HTTP instead of HTTPS, again, just for testing.

Server A and the SPA were local to each other, i.e. on the same switch, using 
G.711. These two pieces together constituted what would have been the “ATA”. 
For production I was looking at using an IP02 or IP04 - 
http://www.rowetel.com/blog/?page_id=440. That is what would have been deployed 
as the CPE.

I am no good at ASCII art so try this –

Fax Machine --> FXS port on SPA --> Switch --> Server A -->Internet --> Server 
B -->PSTN

The connection between the servers is the one that was transmitted via HTTP 
over the 3G connection. Since it was just a simple file upload via a PUT 
request the quality of the connection didn’t matter.

I have all the client side work that I did, well most of it. Below are the 
relevant dial plan snippets for the CPE side. Again, it was really simple. Any 
inbound call to a valid 7 digit, 10 digit, or international number was directed 
to the infax context. It received the fax as a tiff, transmitted it to the 
remote server using curl/HTTP, and deleted the file. No error checking or 
anything, but this was just a proof of concept.

if I remember correctly the outfax context was used when a fax was received 
from the remote server. Received is not quite correct because the faxes were 
actually downloaded via PHP and curl. The script pulled a directory listing 
from the remote server. It would then download the files it found and create an 
outgoing spool file for each fax. Again, this was all pretty kludgy and far 
from ready for prime time, but as a basic proof it did work very well.

I am having some issues finding the associated PHP files but if I can locate 
them I will make them available if anyone is interested.

; Send all inbound calls to the infax context
;
exten => _xxxxxxx,1,Goto(infax,s,1)
exten => _xxxxxxxxxx,1,Goto(infax,s,1)
exten => _011xxx.,1,Goto(infax,s,1)
;
[infax]
exten => s,1,Answer
exten => s,n,NoOp(**** INCOMING FAX FROM ${CALLERID(num)} 
${STRFTIME(${EPOCH},,%c)} ****)
exten => s,n,Set(FAXOPT(ecm)=yes)
exten => 
s,n,Set(FILENAME=${CALLERID(dnid)}-${CALLERID(num)}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => s,n,Set(FAXFILE=${FILENAME}.tif)
exten => s,n,Set(FAXOPT(ecm)=yes)
exten => s,n,Set(FAXOPT(maxrate)=14400)
exten => s,n,Set(FAXOPT(minrate)=2400)
exten => s,n,NoOp(FAXOPT(ecm) : ${FAXOPT(ecm)})
exten => s,n,NoOp(FAXOPT(maxrate) : ${FAXOPT(maxrate)})
exten => s,n,NoOp(FAXOPT(minrate) : ${FAXOPT(minrate)})
exten => s,n,NoOp(**** RECEIVING FAX : ${FAXFILE} ****)
exten => s,n,ReceiveFAX(/tmp/${FAXFILE})
exten => h,1,NoOp(**** MOVING FAX ****)
exten => h,n,System(/usr/bin/curl -F 'ufile=@/tmp/${FAXFILE}\;type=image/tiff' 
http://XX.XX.XX.XX/upload_ac.php)
exten => h,n,System(/bin/rm -f /tmp/${FAXFILE})
exten => h,n,Hangup()
;
[outfax]
exten => s,1,NoOp(send a fax)
exten => s,n,Set(FAXOPT(filename)=${FAXFILE})
exten => s,n,Set(FAXOPT(ecm)=yes)
exten => s,n,Set(FAXOPT(headerinfo)=${FAXHEADER})
exten => s,n,Set(FAXOPT(localstationid)=${LOCALID})
exten => s,n,Set(FAXOPT(maxrate)=14400)
exten => s,n,Set(FAXOPT(minrate)=2400)
exten => s,n,SendFAX(${FAXFILE},d)


From: Oren Yehezkely [mailto:[email protected]]
Sent: Tuesday, March 17, 2015 12:29 PM
To: Rob Dawson
Cc: Jay Hennigan; VoiceOps
Subject: Re: [VoiceOps] Audiocodes MP202B fax-to-https ATA

Rob,
This is quite interesting.
Did you use a special kind of ATA?
What did you use between the ATA and server A? Was it G711?
If so how could it work on a 3G connection?

On Tue, Mar 17, 2015 at 11:19 AM, Rob Dawson 
<[email protected]<mailto:[email protected]>> wrote:
I looked at this a while back but I was unable to implement due to budgetary 
constraints. I'll give you what I recall -
- It operates in a store and forward configuration i.e. the ATA receives the 
entire fax then transmits it via HTTPS. I am unsure of size limitations but I 
would imagine it is memory constrained to some upper limit.
- The ATA receives updates from the fax server and then essentially transmits a 
status fax to the sending machine. They recommended disabling transmission 
reports on the fax machine otherwise it would print a success page every time.
- The terminating end is a third party fax server. There one or two 
alternatives that were available, including a white label cloud based solution 
but I don’t remember the manufacturers. I also inquired about the possibility 
of releasing the interface (I am sure it is a  simple REST type interface) for 
integration into an open source solution like Hylafax but never got anywhere 
with that.
- I don’t think there is anything else commercial like this, at least not as of 
two years ago.

I did a roll your own version as a proof of concept using two Asterisk boxes 
and an ATA. Essentially, the ATA registered to server A. The dialplan directed 
any valid DN to a fax conversation that converted the file to a TIF, named the 
file based on sending/receiving DN and date/time, and did an HTTP PUT to server 
B. Server B had a cron job that looked for files and transmitted them based on 
the sending and receiving parties from the filename, again using Asterisk and 
the Asterisk fax module. It worked really well considering the amount of time 
that I put into it. I was able to transmit over 50 pages over a spotty 3G 
connection and the public Internet, I am sure a commercial product would have 
similar success, with the caveat of any limitations due to memory, etc.

Rob

-----Original Message-----
From: VoiceOps 
[mailto:[email protected]<mailto:[email protected]>] On 
Behalf Of Jay Hennigan
Sent: Monday, March 16, 2015 7:46 PM
To: VoiceOps
Subject: [VoiceOps] Audiocodes MP202B fax-to-https ATA

We've recently become aware of the Audiocodes MP-202B ATA that sits at a 
customer premise, captures transmission from a fax machine, and sends it via 
HTTPS to a remote server. We are considering this as a solution to some 
specific problematic fax-over-IP situations.

I have a few concerns, and am wondering if anyone on the list has used these 
units and what your experience is with them, good, bad, or ugly.
Specifically:

* Does the ATA receive the entire fax and then send it over HTTPS? If so, is 
there a limitation on the number of pages or size of data?

* Does the sending fax get an accurate report of failure if the actual 
destination fax is unreachable (busy, no answer, wrong number, out of paper, 
etc.) once the transmission is accepted by the local Audiocodes box, or do they 
get an "OK" report in error?

* What goes on the other end? Is there a bigger version Audiocodes box that 
connects to a PRI or other TDM connection to the PSTN?

* Are there competing products that we should be considering?

The Audiocodes website is somewhat lacking in terms of technical detail and I 
have a call into them but wanted to get some feedback from the community about 
this and similar solutions.


--
Jay Hennigan - CCIE #7880 - Network Engineering - 
[email protected]<mailto:[email protected]> Impulse Internet Service  -  
http://www.impulse.net/ Your local telephone and internet company - 805 
884-6323<tel:805%20884-6323> - WB6RDV 
_______________________________________________
VoiceOps mailing list
[email protected]<mailto:[email protected]>
https://puck.nether.net/mailman/listinfo/voiceops
_______________________________________________
VoiceOps mailing list
[email protected]<mailto:[email protected]>
https://puck.nether.net/mailman/listinfo/voiceops

_______________________________________________
VoiceOps mailing list
[email protected]
https://puck.nether.net/mailman/listinfo/voiceops

Reply via email to