[VoiceOps] Audiocodes MP202B fax-to-https ATA

Rob Dawson rdawson at force3.com
Tue Mar 17 16:01:10 EDT 2015


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:orenyny at gmail.com]
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 <rdawson at force3.com<mailto:rdawson at force3.com>> 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:voiceops-bounces at voiceops.org<mailto:voiceops-bounces at voiceops.org>] 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 - jay at impulse.net<mailto:jay at impulse.net> Impulse Internet Service  -  http://www.impulse.net/ Your local telephone and internet company - 805 884-6323<tel:805%20884-6323> - WB6RDV _______________________________________________
VoiceOps mailing list
VoiceOps at voiceops.org<mailto:VoiceOps at voiceops.org>
https://puck.nether.net/mailman/listinfo/voiceops
_______________________________________________
VoiceOps mailing list
VoiceOps at voiceops.org<mailto:VoiceOps at voiceops.org>
https://puck.nether.net/mailman/listinfo/voiceops

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://puck.nether.net/pipermail/voiceops/attachments/20150317/7ceaa079/attachment-0001.html>


More information about the VoiceOps mailing list