Fax bot for Spark
Who really uses a real fax machine these days...dont get me wrong, they will still linger around for a few more years before everything goes 100 % digital. There are still several organizations that want a real fax for security, legal and compliance reasons. Especially in the HIPAA world faxing may still linger around until fax services can be 100% secured. I have been working with various Online faxing vendors out there to see which ones allow some what of a free form of faxing for dev purposes but there has not been much luck. Onlinefaxes.com have a very good structured API and they are about 30 days trial before they charge you 60 $ a month for faxing, which is a little high in my opinion but ok whatever..I started exploring other fax vendors like Phaxio.com and Interfax.net and i like either of them, especially Phaxio. Phaxio will give you 1$ to play with if you want to use your Production API keys, with each fax costing 7 cents a fax (which is not much). If you use Test API keys you can fax all day long to any number but its only simulating a fax send/receive. Either ways it works for testing what we need to do here.
So where i am going with this story is there is no native Faxing available in Cisco Spark and having that capability is very critical to have when we are portraying Cisco Spark as the heart of our solution for Collaboration. Cisco Spark API's allow files that are shared in the room to be retrieved out of there via API. Once we have this file, we can use Faxing API's to send fax as a HTTP Multi-part POST which means this could include multiple files. The Spark Faxing demo i m using here uses Phaxio and sends the fax to Faxtoy.com where all faxes sent to 213-294-2943 are listed open to public (so be careful of what you fax out if you try this bot). Phaxio also has a very good security with ability to delete faxes after they are sent to Phaxio for faxing. This is especially important for HIPAA compliance. No Patient information, prescription etc ever stored in the cloud. Phaxio also has a callback URL you can set, so that when the fax is successfully sent it can send a web hook with JSON data showing the status of that Fax.
You do want my bot named Kortana (email@example.com) in your Cisco Spark Room. Upload a file, image, docx, pptx whatever into the room. Type the command #fax send <faxNumber>. Its nice to have E.164 formatting in the Number field, but not necessary. My Bot will formatting the number to E.164 for you.
For testing purposes i am using a document i scanned off of my favorite book Pride and Prejudice. I posted this picture into the spark room by simply uploading it to the room.
Next i am going to activate my Spark bot command to send the fax. I am going to use a test fax number belonging to FaxToy.net. Their test number is 213-294-2943. This is a public website so please be careful as to what you are faxing out there. Any one can see every fax, faxed to this number. Once you fax to this number, it may take any where from two to five minutes for it to show up.
To send this fax, i typed #fax send 2132942943. My bot should also be present in the room. The bot will retrieve last 3 messages posted in the room, look for files, retrieve the file and HTTP multipart POST the document to Phaxio's api. Phaxio API uses test and production keys. Production keys costs you 7 cents for faxing, while test keys are free to use and it only simulates sending a fax.
In this particular example i am using Phaxio production API keys so it does cost me 7 cents. The fax is queued for sending and a real time status of the fax sending status is updated in the room. This gives you a FaxID which is a unique identifier representing this fax transmission. This can be used for tracking purposes.
The Callback URL i have set on Phaxio.com will notify me when this fax has been sent successfully from Phaxio to the destination.
As you can see above the fax ID and how many pages sent, Cost of each page, Fax Direction (Sent = Outbound, Received = Inbound), Recipient Number (E.164 format), Bitrate of fax and resolution of document sent. These are very useful information about the fax that can be updated in the Cisco Spark room for the fax sender.
Now lets take a look at Phaxio.com website to see the status of that fax. The same details that were updated in the Spark Room is shown in the website through a dashboard. Each page can also be viewed Live which is a nice service. You can optionally delete each fax individually or have a setting that delete every fax received and sent through this system so nothing gets stored in the Cloud.
Now lets see what happened at the destination. Since i am using Faxtoy.net service, lets take a look at the destination www.faxtoy.net screenshot i captured.
So that is the Spark bot for Faxing. I hope you enjoyed reading this blog. Please feel free to chime in any comments or feedback on this. I have also uploaded a FaxBot Youtube Video for how the entire process works.