Call/Audio upload
The call can be uploaded through SFTP or API endpoint (using POST https://{fqdn}/api/v1/recognizer/audio-file).
Due to compliance and security concerns, API documentation is only accessible to users who are logged in. Please log in to the Ender Turing platform to read the API documentation
Due to compliance and security concerns, API documentation is only accessible to users who are logged in. Please log in to the Ender Turing platform to read the API documentation.
The uploaded call shall be in stereo format with the agent and client in different channels.
Metadata can be encoded into a filename or uploaded separately through the Update session metadata API endpoint.
API Upload (recommended method)
Python example
Please install the Ender Turing Python SDK using
pip install enderturing
Minimalistic code snippet example to upload a file to the API
import getpass
from enderturing import Config, EnderTuring
from pathlib import Path
# --- Set your parameters (Manual step) ---
et_api_user = "[email protected]"
et_domain = "company.enderturing.com"
recognizer_language = "en"
audio_file_name = Path("./some_audio_to_be_recognized_using_language_above.wav")
# --- Create configuration (Auto) ---
et_api_password = getpass.getpass(f"Provide Password for user {et_api_user} at domain {et_domain}:")
config = Config.from_url(f"https://{et_api_user}:{et_api_password}@{et_domain}")
et = EnderTuring(config)
params = {"language": recognizer_language}
files = {"file": (audio_file_name.name, open(audio_file_name, "rb"), "audio/wav")}
# submit audio file for recognition - will return session_id (UUID) as a result OR Error
et_response = et.http_client.post("/recognizer/audio-file", params=params, files=files)
print("Recognized in session_id: ", et_response["session_id"])
# Out[N]: Recognized in session_id: '5ef1ce61-f10a-4c18-badb-5b0f71a75c98'}
Uploaded files will appear on the "All Conversations" page shortly after upload.
CURL example
# --- Configuration - Replace these values ---
ET_DOMAIN="company.enterturing.com"
ET_USER="[email protected]"
ET_PASSWORD="your_password"
LANGUAGE="en"
AUDIO_FILE="./some_audio_to_be_recognized_using_language_above.wav"
# --- End Configuration ---
# 1 - API Authorization - get Bearer Token
curl -X 'POST' \
'https://${ET_DOMAIN}/api/v1/login/access-token' \
-H 'accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=password&username=${ET_USER}&password=${ET_PASSWORD}'
# 2 - Upload audio file to recognition
curl -X 'POST' \
'https://${ET_DOMAIN}/api/v1/recognizer/audio-file?language=${LANGUAGE}&detailed_realtime_results=false&advanced_language_identification=false' \
-H "Authorization: Bearer ${Token_from_step_1}" \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@${AUDIO_FILE};type=audio/wav'
Uploaded files will appear on the "All Conversations" page shortly after upload.
SFTP Upload Instructions
You can upload audio files via FTP/SFTP using the following URI:
SFTP: sftp://upload.enderturing.com:2022
Use the same enderturing.com credentials to log in.
If your deployment is on-prem or dedicated, please use sftp://{your-company-name}.enderturing.com:2022
Also, use the created SFTP user credentials to log in to SFTP (ask your support manager if you haven't obtained them yet)
To be automatically parsed, filenames must conform to the supported format. For example: %YYYYMMDD_%HHMM_%AgentID_%ClientID_%Direction_%AgentChannelNum.%EXT
E.g.: 20221231_2059_Agent_1234567890_IN_0.mp3
Follow the next chapter for details on Audio filename formats.
Uploaded files will appear on the "All Conversations" page shortly after upload.
Audio filename format
The audio filename can be automatically parsed to get meta fields and used for further analysis.
For example, you can send an audio file with the next filename to parse and set the corresponding call meta fields automatically:
Format: YYYYMMDD_HHMM_AgentID_ClientID_DIRECTION_AgentChannel.EXT
Example: 20240131_2059_Agent99_12345678_IN_0.mp3
This will automatically parse and create the corresponding meta for a call, which includes the call start date, start time, agent identifier, client phone number, direction, and agent channel.
Test your filename for parsing
You can test your filename to ensure it will be parsed automatically using the Filename Parser API endpoint.
Example:
Input: 20240401_1520_Agent99_12345678_IN_0.wav
Will return:
Output: {
"start_dt": "2024-04-01T15:20:00",
"agent_phone_number": "Agent99",
"destination_id": "Agent99",
"caller_id": "12345678",
"direction": "IN",
"agent_channel": 0
}
Supported fields in a file name
For analytics purposes, there is a set of minimal requirements and advanced possibilities that you can encode in a filename.
The separator sign used to separate values is: _
(underscore).
Minimal required fields:
Call start date - start date of the call in format YYYYMMDD
Call start time - start time of the call in format HHMM
Agent phone number or identifier - agent identification. This is either the agent's phone number or, in some cases, the agent's email address.
Client phone number or identifier - destination identification. This is either the client's phone number or, in some cases, the client's email address.
Direction - direction of the call. Supported values (str): IN
, OUT
and INTERNAL
.
Agent channel - channel with an audio stream of the agent. Two audio channels are required (stereo), with the agent and client in different channels; you need to provide information for the system to know which channel corresponds to the agent. Supported values (int): 0
and 1
.
Examples of Minimal required filenames:
20240131_2059_Agent99_12345678_IN_0.mp3 - Incoming call from 12345678 served by Agent99 on 31 Jan 2024 at 08:59 PM UTC
Advanced fields (optional):
Call Identifier - call identifier from the contact center system. For further seamless integration.
Agent full name - agent first and last name, to automatically parse and create an agent with full name in the Ender Turing system. (Use -
minus* to separate first and last names).
Queue name - the name of the queue for incoming calls.
Waiting time - waiting time in the queue for incoming calls.
DID - incoming company phone number for incoming calls.
Campaign name - name of campaign for outgoing calls.
Call type - This field is used to differentiate between manual and autodialer calls for outgoing calls. Supported values (str): Manual
and Automatic
.
Hangup By or Termination Initiator - metadata about who initiated the call disconnection. Supported values (str): agent
, client
and unknown
.
Skill Group - skill group for agents who served particular calls.
Holds Segments - metadata about holds used during the calls in a format hldStartSec-hldStopSec.
Examples of Advanced filenames:
YYYYMMDD_HHMMSS_[agentIdentifier]_[agentFirstName+agentLastName]_[customerPhoneNumber]_[direction]_[queueName]_[waitingTime]_[hangupBy]
e.g.: 20241218_145550_Agent99_Ender-Turing_12345678_IN_QueueService_11_client.wav
YYYYMMDD_HHMM_[agent_phone]_[client_phone]_[Direction]_callId-[CallId]_termInitiator-[Agent|Client]_queue-[QueueName].mp3
e.g.: 20240318_1213_Agent99_12345678_IN_callId-adb7f91d-75ae_termInitiator-Agent.mp3
e.g.: 20241017_1654_524_77051567674_outbound_callId-ed6a0448-df59-4979-a0f3-f51eff524896_fileId-88053197_agentChan-1_termInitiator-agent_queue-Precollection_0.mp3
YYYYMMDDHHMMSS_[Campaign]_[DID]_[client_phone]_[agent_phone]_[auto|manual].wav
e.g.: 20241214102750_CampaignSales1_noDID_12345678_Agent99_auto.wav
YYYYMMDD_HHMM_[agent_phone]_[client_phone]_[Direction]_[AgentChannel]_queue-{QUEUE_NAME}_group-{GROUP_NAME}_termInitiator-{DISCONNECT_INITIATOR}.wav
e.g.: 20250205_1453_10036_380994936872_IN_0_queue-{QUEUE_NAME}_group-{GROUP_NAME}_termInitiator-{DISCONNECT_INITIATOR}.wav
e.g.: 20250205_1453_10036_380994936872_OUT_0_campaign-{CAMPAIGN_NAME}_group-{GROUP_NAME}_termInitiator-{DISCONNECT_INITIATOR}.wav
Supported audio file format:
mp3|wav|opus