When integrating a customer application with CopiaFacts, there may be an opportunity to send faxes from a memory buffer provided by the application, and likewise to receive faxes into a buffer. This allows for the transmission and reception of documents in compliance with security requirements which preclude the retention of copies in disk files.
CopiaFacts capability to avoid file usage is limited by the facilities of the board or port API in use. The facilities available in the principal Copia-supported APIs are summarized below:
Brooktrout
| Transmission | The Brooktrout API allows the transmitted document to be delivered as an infopkt stream and allows such a stream to be built in memory. Unfortunately it is not possible to embed a complete TIF document as an infopkt, though a TIF file on disk can be referenced indirectly from an infopkt to be passed to a fax send API. The only way to use an in-memory infopkt stream is therefore to deconstruct the TIF, extract the parameters to create infopkt entities describing the content, and create a block of G3 TIF image data for each page. |
| Reception | The API also supports the reverse operation, which delivers a received fax into an infopkt stream which can be created as a pre-allocated memory buffer. In this case a TIF would need to be created from the infopkt entities describing the content and the image data for each page. There is the further complication that the buffer needs to be allocated before the size of the incoming fax is known. The API provides a callback function which is called when the buffer is full, and which allows the buffer size to be adjusted; but this can never be a simple or efficient solution. |
CopiaFacts does not currently support either of these solutions for sending and receiving faxes without using TIF files, and it would require significant effort to add this, particularly if support is required for all valid fax sizes and resolutions.
Commetrex BladeWare
The BladeWare API, used for SIP FoIP, is closely based on the S.100 API from the Enterprise Computer Telephony Forum (ECTF). S.100 uses media streams and allows connection to a variety of stream servers, but in the case of the Fax Send and Fax Receive APIs the only supported media streams are those which reside in files on the host file system. BladeWare support to allow transmission and reception from/to memory buffers is no longer available.
Diva
| Transmission | The Diva API only provides for fax documents to be transmitted from files. |
| Reception | There is a DivaReceiveFaxToMemory API function which allows pages of a received fax to be saved in a memory buffer provided and managed by the API. As each page break event is signaled, CopiaFacts would retrieve and handle the data, using a DivaReadFaxData API function. This is a much simpler and more manageable design than using a pre-allocated buffer which may have to be reallocated part-way, as for Brooktrout. |
CopiaFacts does not currently support receiving a fax to memory, but it would be possible to add an option to select this Diva API to receive a fax to memory instead of specifying a file. It then becomes an issue of incorporating the passing of the page-data blocks into the mechanism chosen for integrating fax reception with customer applications.
TE-Systems XCAPI
The TE-Systems XCAPI API is closely related to the Diva API. As for almost all other Diva API functions, there are XCReceiveFaxToMemory and XCReadFaxData API functions which work in the same way for FoIP faxes received with XCAPI.