El fax ha muerto, larga vida

El fax ha muerto, larga vida

La nueva versión de oiga.me que pondremos en producción a mediados del próximo mes de enero incorpora un canal de distribución nuevo, el fax. Para la mayoría de los mortales esta es una tecnología obsoleta, pero todavía se sigue usando para ciertos casos, donde por ejemplo el correo electrónico no es suficiente.

Teníamos pensado incorporar el canal de fax desde que creamos oiga.me, y es desde hace unos meses que llevamos pensando la forma más sencilla y barata de habilitarlo.
Una de las primeras opciones que pensamos fue montarnos nuestro servidor de faxes y entregarlo por Fax sobre IP al proveedor para que esté lo depositará en la máquina o software de fax del receptor. Esto tenía un problema, no era sencillo de montar ni de mantener, por lo que descartamos esta opción nada más plantearlo.

Así que seguimos estudiando la oferta que había para poder enviar faxes a gran escala y al final creo que hemos dado con la mejor solución, bueno… tras un mes en producción lo veremos más claro. Para enviar faxes a través de oiga.me, vamos a usar como transporte un viejo conocido: el correo electrónico. Cuando firmes una campaña en oiga.me cuyo canal de distribución sea el fax, n

 

uestro sistema generará un PDF con tu carta y posteriormente lo entregaremos como un fichero adjunto en un mensaje de correo electrónico que mandaremos a nuestro proveedor.

A continuación vamos a ver un poco de código de Ruby. La siguiente clase es la que genera el PDF:

class FaxPdf def initialize(fax, campaign) @fax = fax @campaign = campaign end def generate\_pdf pdf = Prawn::Document.new pdf.image logo\_path, :with =\> 125, :height =\> 58 pdf.move\_down 15 pdf.font\_size 10

 pdf.text "Remitente: #{@fax.name}" pdf.text "Email: #{@fax.email}" pdf.move\_down 25 pdf.font\_size 16 pdf.text @campaign.name pdf.move\_down 15 pdf.font\_size 10 pdf.text @fax.body pdf.move\_down 30 pdf.render end

def logo\_path logopath = "#{Rails.root}/app/assets/images/logo-small.png" end end

El PDF que se genera es muy básico, en los próximos dias lo perfeccionaremos. A continuación vamos a ver el mailer de Rails que envía el correo electrónico al proveedor para que este lo entregue al número de fax de destino:

 def send\_message\_to\_fax\_recipients(fax\_id, campaign\_id) fax = Fax.find(fax\_id) campaign = Campaign.find(campaign\_id) @password = APP\_CONFIG[:our\_fax\_password] subject = APP\_CONFIG[:our\_fax\_number] fax = FaxPdf.new(fax, campaign) attachments["fax-#{campaign\_id}-#{fax\_id}.pdf"] = fax.generate\_pdf numbers = campaign.numbers.map {|number| number + "@ecofax.fr"} mail :from =\> 'fax@oiga.me', :to =\> numbers

, :subject =\> subject end

Si hay alguna duda sobre el código, preguntar sin piedad.

Como los faxes tienen un coste y las campañas de fax un crédito, este último se irá descontando solo cuando el proveedor nos haya dicho que el fax se entregó correctamente, y el sobrante se acumulará para financiar los servidores. Para ello hemos desarrollado una tarea de rake que consulta un buzón IMAP, donde nos llegan los mensajes de correo con el estado del fax (entregado, en curso, no entregado, etc…).

Bueno, pues con esta entrada vamos a dar el pistoletazo de salida a un serie de posts un poco
más tecnicos de lo habitual, donde podremos ver las tecnologías que usamos

 en aLabs.