<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">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 - <a href="http://www.rowetel.com/blog/?page_id=440">
http://www.rowetel.com/blog/?page_id=440</a>. That is what would have been deployed as the CPE.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I am no good at ASCII art so try this –<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Fax Machine
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1F497D">à</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> FXS port on SPA
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1F497D">à</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> Switch
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1F497D">à</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> Server A
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1F497D">à</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Internet
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1F497D">à</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> Server B
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1F497D">à</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">PSTN<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">; Send all inbound calls to the infax context<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => _xxxxxxx,1,Goto(infax,s,1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => _xxxxxxxxxx,1,Goto(infax,s,1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => _011xxx.,1,Goto(infax,s,1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">[infax]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,1,Answer<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,NoOp(**** INCOMING FAX FROM ${CALLERID(num)} ${STRFTIME(${EPOCH},,%c)} ****)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(ecm)=yes)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FILENAME=${CALLERID(dnid)}-${CALLERID(num)}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXFILE=${FILENAME}.tif)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(ecm)=yes)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(maxrate)=14400)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(minrate)=2400)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,NoOp(FAXOPT(ecm) : ${FAXOPT(ecm)})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,NoOp(FAXOPT(maxrate) : ${FAXOPT(maxrate)})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,NoOp(FAXOPT(minrate) : ${FAXOPT(minrate)})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,NoOp(**** RECEIVING FAX : ${FAXFILE} ****)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,ReceiveFAX(/tmp/${FAXFILE})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => h,1,NoOp(**** MOVING FAX ****)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => h,n,System(/usr/bin/curl -F 'ufile=@/tmp/${FAXFILE}\;type=image/tiff' http://XX.XX.XX.XX/upload_ac.php)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => h,n,System(/bin/rm -f /tmp/${FAXFILE})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => h,n,Hangup()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">[outfax]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,1,NoOp(send a fax)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(filename)=${FAXFILE})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(ecm)=yes)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(headerinfo)=${FAXHEADER})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(localstationid)=${LOCALID})<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(maxrate)=14400)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,Set(FAXOPT(minrate)=2400)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">exten => s,n,SendFAX(${FAXFILE},d)<o:p></o:p></span></p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt"></td>
<td style="padding:.75pt .75pt .75pt .75pt"></td>
<td style="padding:.75pt .75pt .75pt .75pt"></td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Oren Yehezkely [mailto:orenyny@gmail.com]
<br>
<b>Sent:</b> Tuesday, March 17, 2015 12:29 PM<br>
<b>To:</b> Rob Dawson<br>
<b>Cc:</b> Jay Hennigan; VoiceOps<br>
<b>Subject:</b> Re: [VoiceOps] Audiocodes MP202B fax-to-https ATA<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Rob,<o:p></o:p></p>
<div>
<p class="MsoNormal">This is quite interesting.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Did you use a special kind of ATA?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">What did you use between the ATA and server A? Was it G711?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">If so how could it work on a 3G connection?<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Tue, Mar 17, 2015 at 11:19 AM, Rob Dawson <<a href="mailto:rdawson@force3.com" target="_blank">rdawson@force3.com</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal">I looked at this a while back but I was unable to implement due to budgetary constraints. I'll give you what I recall -<br>
- 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.<br>
- 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.<br>
- 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.<br>
- I don’t think there is anything else commercial like this, at least not as of two years ago.<br>
<br>
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.<br>
<span style="color:#888888"><br>
<span class="hoenzb">Rob</span></span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><br>
-----Original Message-----<br>
From: VoiceOps [mailto:<a href="mailto:voiceops-bounces@voiceops.org">voiceops-bounces@voiceops.org</a>] On Behalf Of Jay Hennigan<br>
Sent: Monday, March 16, 2015 7:46 PM<br>
To: VoiceOps<br>
Subject: [VoiceOps] Audiocodes MP202B fax-to-https ATA<br>
<br>
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.<br>
<br>
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.<br>
Specifically:<br>
<br>
* 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?<br>
<br>
* 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?<br>
<br>
* 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?<br>
<br>
* Are there competing products that we should be considering?<br>
<br>
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.<br>
<br>
<br>
--<br>
Jay Hennigan - CCIE #7880 - Network Engineering - <a href="mailto:jay@impulse.net">
jay@impulse.net</a> Impulse Internet Service  -  <a href="http://www.impulse.net/" target="_blank">
http://www.impulse.net/</a> Your local telephone and internet company - <a href="tel:805%20884-6323">
805 884-6323</a> - WB6RDV _______________________________________________<br>
VoiceOps mailing list<br>
<a href="mailto:VoiceOps@voiceops.org">VoiceOps@voiceops.org</a><br>
<a href="https://puck.nether.net/mailman/listinfo/voiceops" target="_blank">https://puck.nether.net/mailman/listinfo/voiceops</a><br>
_______________________________________________<br>
VoiceOps mailing list<br>
<a href="mailto:VoiceOps@voiceops.org">VoiceOps@voiceops.org</a><br>
<a href="https://puck.nether.net/mailman/listinfo/voiceops" target="_blank">https://puck.nether.net/mailman/listinfo/voiceops</a><o:p></o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>