ITEXPO begins in:   New Coverage :  Asterisk  |  Fax Software  |  SIP Phones  |  Small Cells

Product Reviews.gif (14305 bytes)
First Quarter 1998

ServerLink API

399 Thornall St.
Edison, NJ 08837
Ph: 800-711-1895
Fx: 617-354-7744
Web site: www.faxsav.com

Pricing: FREE; Fax Transmission: 15 cents/page (USA); International rates available on Web site.

iteditorschoice.gif (15817 bytes)

Ratings (0-5)
Installation: 5
Documentation: 3
Features: 5
Overall: A

Faxing is one the most universally accepted technologies around. By some accounts, revenues generated by faxing add up to 30 billion dollars per year worldwide. And with 80 to 100 million fax machines and fax modems around the world (with that number expected to grow) you can imagine how excited the telephone companies are with this lucrative market. Fax technology uses the same analog lines used to make voice calls. At the beginning of every fax transmission process, the sending and receiving fax machines synchronize by sending handshake signals. Then from the sending fax machine a document is scanned, converted to a digital image, compressed, and sent over the analog lines (using modulation) to the recipient fax, which reconstructs the facsimile of the original document by reversing the process. The digitizing process uses the CCITT G3 or G4 protocols, which specify image compression algorithms.

With the advent of the Internet and its subsequent popularity, faxing has found a new home in the way it is generated, routed, and received. Since a fax transmission is basically data, the Internet is a perfect carrier for faxing, and faxing over the Internet can reduce the associated costs as compared to traditional analog methods. Moreover, since fax transmission does not require a real-time characteristic, delays associated with the Internet will not disturb the process.

FaxSav is a pioneer in using the Internet for a managed and cost-effective way to transmit faxes. To that end, FaxSav has a broad range of products from desktop faxing, to fax-to-email transmission, to fax-to-fax service.

For this review, we tested the FaxSav ServerLink API development product, which is a set of APIs (application programming interfaces) designed for developers to craft customized desktop Internet faxing applications, or enhance fax server products using the FaxSav network for fax transmission. Desktop Internet faxing through FaxSav comes with several benefits, including: reduced transmission cost, reduced fax equipment cost, faster fax transmissions, easier enterprise fax tracking, and accounting management. The disadvantages are Internet reliability problems (e.g., blackouts), and a need for a scanner to fax paper documents. Considering the pros and cons of desktop Internet faxing, we believe that the ServerLink API advantages clearly outweigh the disadvantages, making it a valuable and powerful tool to quickly create fax applications suited to specific business requirements as well as enhancing fax server products to take advantage of the FaxSav network as an added service to analog transmission.

ServerLink API is a set of API functions allowing for the development of desktop Internet fax applications. Its features include:

  • Support for Windows 95 and NT.
  • Support for multi-page G3 and G4 Tiff, Adobe Acrobat (PDF), and ASCII text files.
  • Multiple methods of sending faxes to the FaxSav network.
  • Fax tracking through Query API functions.
  • E-mail notification.
  • Free transmission retries.

The ServerLink API documentation was bundled with the installation program and came in two formats - MS Word and Adobe Acrobat (PDF). While there was an overview, and usage instruction was provided, most of the documentation was taken up by the FaxSend API and Query API function references. The function references were relatively complete with sample programming usage provided in most cases. The three sample programs installed with ServerLink API, while very helpful, lacked good supporting documentation, which we think would make the sample programs easier to understand.

We downloaded the self-extracting ServerLink API file from FaxSav's ftp site (ftp.faxsav.com) and installed it on our PC, a 90 MHz Pentium with 32 Megabytes of RAM running Windows 95. The installation file created the ServerLink API corresponding files, which included the static libraries, DLLs, documentation in MS Word and Adobe Acrobat, and sample codes placed in separate directories.

The ServerLink API functions can be used with several development platforms, but since the included sample codes were written in Visual C++, we decided to follow suit and use MS Visual C++ 5.0 to write a simple fax program. Our Internet access was a 28.8 Kbps dial-up connection to an ISP. Although ServerLink API is a free product, fax transmission requires an account, which comprises an e-mail address and a password. We obtained an account from FaxSav to begin our review.

For those who do not require a customized fax program, or just need a simple Internet fax application, FaxSav provides FaxLauncher, a free fax software package that sends faxes over the Internet from any Windows or Macintosh application (the fax transmissions are billable). FaxLauncher is essentially a print driver with an added Internet transmission module. When the user is ready to fax a document, they choose the FaxLauncher printer, which handles the document rendering. This is automatically followed by the transmission module which sends the rendered document over the Internet. Faxes are routed through the FaxSav system on an intelligent network of gateways which route the fax transmission to the gateway with the best calling rate to the destination fax number (least cost routing). At this point, a regular PSTN call is made to the destination number, and the fax is transmitted. The fax job is completed by sending a confirmation e-mail to the user, notifying them about the status of the fax (this option can be disabled by the user).

ServerLink API essentially addresses the latter part of this process, which is the fax transmission over the Internet. In this scenario, there is no universal document rendering capability, the documents should already be in the accepted formats before transmission. The supported formats are multi-page G3 and G4 Tiff, Adobe Acrobat (PDF), and ASCII text files. A program based on ServerLink API can then transmit one or more of these documents using several methods. The confirmation e-mail and billing procedures are handled the same way as in FaxLauncher.

ServerLink API functions fall under two categories. The FaxSend API includes functions to package documents as faxes and deliver them to the FaxSav network using SMTP (Simple Mail Transfer Protocol). The Query API functions allow the application to query the FaxSav database to obtain the status of faxes sent to the system using the FaxSend API calls. Moreover, the Query API functions are also used to gather information on individuals or departments that have made fax transmissions for accounting and billing operations. The FaxSend and Query APIs work independently of each other and could be used to build separate applications - one to transmit faxes, and another to query their status. However, in order for the Query API functions to locate information on the transmitted faxes in the FaxSav database, they must be furnished with a USERCODE value used in the FaxSend API calls.

ServerLink API came with 3 separate sample applications together with their sample codes in Visual C++. These were an application demonstrating a common GUI to send faxes, an application demonstrating a daemon or service to handle fax transmissions, and an application using Query APIs to obtain information on the status of fax jobs sent to the FaxSav network.

FaxSend API Operation
When a user is ready to transmit a fax, for instance, using FaxLauncher, they fill out fields in a dialog box indicating information such as the name and the fax number of the recipient, the subject of the fax, and perhaps a cover page note, and then click on a button to start the transmission process. Using the common GUI sample application as our guide, we built our own simple application using Visual C++ to transmit faxes. Our application entailed a simple dialog box with subject, text, and fax number fields. A check box would allow the user to choose between sending the text directly from the dialog box or sending a file attachment instead. We started by using the application wizard to generate a dialog-based MFC (Microsoft Foundation Class) application, which created the appropriate classes in our new project. We added the appropriate fields to the dialog box and followed it up with adding the fax-specific code to the dialog class.

A fax transmission starts out by preparing the fax job. The fax job preparation involves a few steps, some of which include calling functions to:

  • Create a fax job.
  • Specify the Transmitting Subscriber ID (TSI).
  • Specify the account and password.
  • Specify the subject.
  • Collect and add destination fax numbers to the program.
  • Add the document to be faxed and specify its type (e.g., ASCII, PDF).
  • Set the delivery notice type (e.g., e-mail notification).
  • Set the fax resolution mode (e.g., normal, fine).
  • Set the cover page.

Finally the program can call the appropriate function to start the transmission process to the FaxSav network. FaxSend API supports 3 methods to fax documents through the FaxSav network.

Asynchronous Callback Transfer - This method is typically used by applications that need to transfer faxes and provide user interface response to the user. The associated functions transfer multiple faxes within a short period of time and quickly return. As progress is achieved on the fax transfer, callback messages are sent to the application window allowing for an application to provide feedback to the user as the fax is transferred. Therefore, the calling application must continue to execute a Windows message loop to catch all callback messages.

Synchronous Modal Transfer - This method is used for applications that can afford to enter a modal function that will not return until the fax is transferred. This means that the application would remain tied up until the fax transmission is completed. However, applications that can dedicate a thread for fax transfer can continue with normal operation since only the particular thread would be tied up during fax transmission. The tradeoff for the loss of application responsiveness is the ease of implementation since no message loops or callback handling is required.

Manual Selected Transfer - This method is a cross between the synchronous and asynchronous transfers. There are no message loops involved, but the application must periodically make API calls to allow continued processing of the fax transfer until the transmission process is finished. Server applications that are not willing to tie up a thread while a fax is transferring and cannot execute Windows message loop will use these functions by first calling the Send function and then periodically calling the Process function until the transfer is complete.

In keeping with creating a simple application, we used the synchronous method for transmitting faxes to the FaxSav network. We followed that up with a simple error-checking function for transmission error notification and finally called another function to release all allocated memory associated with the fax job. After building the program (which generated the executable application) we were able to successfully run the application, sending faxes that included text from the edit box or attached files depending on our selection. Every time we started a fax transmission, the synchronous application (as expected) became unavailable, returning with a notification dialog box when the send job was completed. The speed of transmission to the destination fax machine in our labs was very good and we were notified by e-mail after each fax job completion.

The Query API functions provide a program with the capability to request information about particular faxes sent to the FaxSav network using the FaxSend API. The USERCODE value used in the fax transmission by the FaxSend API functions is utilized as the database key (for unique identification) to access the "sent faxes" records. In order to use the Query API, the FaxSav account must be provisioned to allow Query Access.

The general pattern for using the Query API is the following:

  • Create a Query Connection object.
  • Send faxes using the FaxSend API employing unique USERCODEs to allow fax identification.
  • Create a QUERY object.
  • Set up the query with the USERCODE values.
  • Send the query to the FaxSav network.
  • Process the query response to retrieve specific key values from the returned Query item record.
  • Release the resources associated with the QUERY object.
  • Close the associated database logon.
  • Release the Query API resources.

We used the included query sample program to see the Query API functions in action. From the dialog box, we specified our account, password, and the USERCODE that we used for fax transmission using our simple application. After sending a couple of faxes, we issued the query command, and sure enough, we received information on the transmissions including status, destination number, and receive time, among others. We were very impressed with the Query API capabilities - this could be an invaluable tool in managing, tracking, and accounting for fax transmissions.

One of the shortcomings of ServerLink API is its limited support for document formats. In its current standing, the desired documents must be converted to one of the supported formats before they can be used as attachments in the program developed using ServerLink API. When we mentioned this to FaxSav, they said that work is already under way to allow full control of the printer driver currently shipped with FaxLauncher. The new product, named Control Center, will allow full access to the document rendering functions by exposing them through DDE and OLE allowing for the development of an end-to-end Internet desktop fax transmission program with capability to support any attached document. One other improvement for ServerLink API would be to provide additional native support for DCX format, which is an industry standard for fax documents.

If you require a customized fax transmission application from the desktop, we think that ServerLink API by FaxSav will fit the bill. Using FaxSav gateways and the Internet as the transmission medium, ServerLink API can be used to quickly craft a fax application using several development platforms in Windows 95 or NT. These fax applications can range from simple to sophisticated using several approaches to prepare and transmit faxes over the FaxSav network. ServerLink API also allows the developer to query the faxes for management and accounting purposes. One of the important advantages of using the FaxSav network is reduced cost - in terms of equipment as well as transmission.

We found ServerLink API to be a powerful, flexible, and practical tool for developing customized desktop fax applications. As far as room for improvement, we would like to see an ActiveX version of ServerLink to allow for easier application development using platforms such as Visual Basic, and support for DCX format. As a final note we want to mention that if your company has WAN (Intranet) connections between different locations, it may be worth your while to look into fax gateways which, while entailing associated equipment costs, will provide you with free faxing between locations.


Today @ TMC
Upcoming Events
ITEXPO West 2012
October 2- 5, 2012
The Austin Convention Center
Austin, Texas
The World's Premier Managed Services and Cloud Computing Event
Click for Dates and Locations
Mobility Tech Conference & Expo
October 3- 5, 2012
The Austin Convention Center
Austin, Texas
Cloud Communications Summit
October 3- 5, 2012
The Austin Convention Center
Austin, Texas