The Import API allows ingesting 3rd party or Verba data into the system.
The primary goal of the interface is to enable ingesting records to the system using JSON or XML formatted metadata and the corresponding media file(s). The interface provides access to the Verba Import Service through a REST API. This API supports both the standard and the advanced (trader voice specific) database schemas: Data models.
The API can be reached at http(s)://media-repository-address:port/restapi/v093/import/<action>
The functions of the API are available as simple HTTP GET and POST requests. For implementations, where HTTP POST is not available, you can use the HTTP GET method. The maximum length of the HTTP GET request is usually maximized either by the client or the server. The client should assume that the maximum length of a GET request is 4000 characters, although, some implementations may support longer URLs too.
The API provides the following mechanism to ensure that the communications between the external application and the recording system are secure:
Token based sessions
Option to limit the access to the API from preset network addresses
Option to use SSL/HTTPS
The Import API requires a valid session token to process import requests. The authentication expects an HTTP GET request to the auth action. The token generated after a successful authentication is valid for one hour after the last use.
If the authentication fails, the system will return a 500 HTTP Status Response, and a description of the problem encountered during the authentication
The generated, unique GUID for the API key
The username of the Verba user used to authenticate. This user must have the Conversation Import role. (optional)
The password for the Verba user (optional) (Before 9.6 use the MD5 hash of the password here.)
HTTP/1.1 200 OK
Date: Thu, 09 Jan 2019 10:42:57 GMT
Error during authentication
The date and time of the request in EEE, DD MMM YYYY HH:MM:SS format
The type of the HTTP content: application/json Type: String
"status" : "error",
"error_message" : "Internal Server Error. An unexpected error has occured while generating token: Bad token request. Provided userName and/or password is incorrect. (Note: password must be md5 hashed!)"
The result of the authentication, possible values are ok, error Type: String
The token for the authenticated session Only sent if status is ok Type: String
Description of the error encountered Only sent if status is error Type: String
The type of the request should be multipart, the boundary, media and the CDR file are mandatory unless noted otherwise. After a successful request, the following reply will be sent:
The conference call direction is supported with all modalities except SMS. Verba creates the conference with the destination_caller_id as conference and the destination_name as Conference (platform_call_id), but this is not mandatory.
With the instant message IM file, the communication is between the conference participants and the conference bridge, the source is the user sending the message, and the destination is the conference bridge.
Trader voice example XML
The Turret data model does not require a one-to-one relationship between metadata and media, it is allowed to have multiple CDR for one media file, or multiple media files for one CDR. The link between the media and CDR is the media_record_ids field. The media is found based on the CDR record by searching for the matching media record IDs, then limiting the search for media end time before CDR start time, and media start time after CDR end time.
In order to import custom metadata, a Metadata template has to be created in Verba prior to the import process. For the process of creating a metadata template, please refer to Metadata designer. The metadata fields are referred by the Field Identifier propery defined in the Web UI.
The Import API for import service is a single server solution with no built-in load balancing capabilities. If multiple servers are required for the volume of the calls imported, client-side load balancing can be set up, as each separate server needs a session token unique to the server.