Ruby library for accessing eFax Developer service.
You can find eFax Developer API guides at efaxdeveloper.com or on Scribd.
Usage
Outbound Faxes
First you need to provide your account id and credentials:
EFax::Request.account_id = <your account id>
EFax::Request.user = <your login>
EFax::Request.password = <your password>
Sending an HTML page using eFax service is pretty simple:
response = EFax::OutboundRequest.post(recipient_name, company_name, fax_number, subject, content, options)
Options is a hash and can contain content_type and another hash for disposition info. If no options are given, the content_type is set to html by default. An example options hash:
options = {
:content_type => "html",
:disposition => {
:method => "POST",
:level => "BOTH",
:url => "http://notifications.com"
}
}
See EFax::RequestStatus
class for details on status codes.
Having ID of your request, you can get its current status:
response = OutboundRequestStatus.post(doc_id)
The status response has the following attributes:
response.status_code
response.message # "user friendly" status message
See EFax::QueryStatus
class for details on status codes.
Inbound Faxes
Inbound faxes work by exposing a URL that EFax can post to when it receives a fax on your account. An example end-point in rails might look like this:
class InboundFaxesController < AdminController
def create
efax = EFax::InboundPostRequest.receive_by_params(params)
Fax.create(:file => efax.file, :name => efax.name) # etc
render :text => efax.post_successful_message # This is important to let EFax know you successfully processed the incoming request.
end
end
Test helpers
You can generate a EFax::InboundPostRequest
based on optional explicit fields by using a helper method efax_inbound_post
:
In your tests:
require "efax/helpers/inbound_helpers"
describe InboundFax do
include EFax::Helpers::InboundHelpers
it "should create a fax from efax data" do
person = Person.make
person.save
efax = efax_inbound_post(:barcode => person.barcode_number)
fax = InboundFax.create_from_efax!(efax)
fax.person.should == person
end
end