Protocols and formats
Calls are controlled using the Session Initiation Protocol (SIP). Telephone inbound and outbound calls are achieved via telco gateways. Call media is transported using the Real-time Transport Protocol (RTP). Within RTP, Aculab Cloud supports the G.711 A-law and G.711 mulaw audio codecs, and RFC2833 DTMF digits - all sampled at 8000Hz.
G.729 is available on request. Please contact your Account Manager for more information.
Media file formats
REST API and UAS API applications can play media files that have been uploaded to an account's media file storage on Aculab Cloud. Similarly they can record media files to an account's media file storage.
Aculab Cloud plays and records Microsoft wav format (.wav) media files compressed using:
- G.711 A-law (default)
- G.711 mu-law
- OKI ADPCM
- IMA ADPCM
- signed 16-bit PCM
- unsigned 8-bit PCM
G.711 A-law or G.711 mu-law are preferred since they are reasonably small and provide the best quality for telephony use.
The supported sampling rates are:
- 8000Hz (default)
8000Hz is preferred since it matches the sampling rate used on calls and therefore provides the best quality.
Fax file formats
REST API and UAS API applications can send fax files that have been uploaded to an account's media file storage on Aculab Cloud. Similarly they can receive and save fax files to an account's media file storage.
Fax files to be sent or that are received are stored in the Tagged Image File Format (.tif). The compression schemes supported are:
- CCITT Group 3 1-Dimensional Modified Huffman run length encoding (RLE). Also known as MH or CCITT 1D.
- CCITT T.4 bi-level encoding as specified in section 4, Coding, of ITU-T Recommendation T.4. Also known as MR2D, CCITT Group 3 fax encoding or CCITT Group 3 2D.
- CCITT T.6 bi-level encoding as specified in section 2 of ITU-T Recommendation T.6. Also known as MMRT6 or CCITT Group 4 fax encoding.
These compression schemes do not support colour or greyscale. Images are black and white only.
The page widths supported are:
- A4 (1728 pixels, 21.95cm)
- B4 (2048 pixels, 26.01cm)
- A3 (2432 pixels, 30.89cm)
See Sending & Receiving Faxes for more details.
Aculab Cloud supports playing/sending and recording/saving encrypted media and fax files using:
- Advanced Encryption Standard (AES) cipher algorithm in Cipher Block Chaining (CBC) mode (id: 0, "aescbc")
This requires a cipher key (128, 192 or 256 bits) and initialisation vector (128 bits).
Note: multiple encryptions using the same cipher key should use different non-predictable initialisation vectors.
An encrypted media or fax file can be uploaded to Aculab Cloud via the file_write file management web service.
REST API and UAS API applications can play and record encrypted files when supplied with the necessary cipher credentials.
Encryption credentials are not stored by Aculab Cloud.
An encrypted media or fax file must also be validated prior to being used. As the encryption keys are not available when the files are uploaded this stage occurs when the application is running. Any encrypted files that the application wishes to use must be validated. This ensures that the file can be decrypted by Aculab Cloud and is of a supported format (see above).
For a UAS application this validation step is mandatory and must be explicitly called from the application. For .Net UAS applications see
IFileManager.FileValidate(), for Java UAS applications see
IFileManager.fileValidate() and for Python UAS Applications see
UASFileManagement.validate(). Any attempt to play an encrypted media or fax file that hasn't been validated will generate an error.
This validation step will be invoked automatically for REST applications as part of the
send fax actions.
Tools and Libraries
Files compatible with Aculab Cloud can be encrypted using OpenSSL tools or libraries. When using the openssl command line utility the key and initialisation vector must be provided.
This example demonstrates how to encrypt a file called unencrypted.wav using aes128 with a key of 123456789abc1236789abc1236789abc with the initialisation vector abcdef123defabcdef456defabcdef89 saving the encrypted file in encrypted.wav.
openssl enc -e -aes128 -K 123456789abc1236789abc1236789abc -iv abcdef123defabcdef456defabcdef89 -in unencrypted.wav -out encrypted.wav
Files recorded on Aculab Cloud can be decrypted using OpenSSL
This example demonstrates how to decrypt a file called encrypted.wav using aes128 with a key of 123456789abc1236789abc1236789abc with the initialisation vector abcdef123defabcdef456defabcdef89 saving the unencrypted file in unencrypted.wav.
openssl enc -d -aes128 -K 123456789abc1236789abc1236789abc -iv abcdef123defabcdef456defabcdef89 -in encrypted.wav -out unencrypted.wav
System.Security.Cryptography.Aes class can be used to encrypt files that are compatible with Aculab Cloud or decrypt recordings created by Aculab Cloud.
There are a number of Python libraries which can be used to encrypt files which are compatible with Aculab Cloud. These are called
PyCrypto. They can also be used to decrypt recordings made by Aculab Cloud.
javax.crypto library will encrypt files that are compatible with Aculab Cloud or decrypt recordings created by Aculab Cloud. The Cipher should be created with the following transformation
The PHP functions
openssl_decrypt() using the methods
AES-256-CBC can be used to encrypt or decrypt media files compatible with Aculab Cloud.