Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Introduction

...

The Recording streams are forked from an agent's IP phone to and open source carrier-grade telephony platform known as FreeSWITCH. The agent and customer's voices are sent and stored as separate call legs. Using different FreeSWITCH scripts, the separate legs are mixed and saved as a single audio file.

The recording is initiated by CUCM using SIP commands. FreeSWITCH is configured on CUCM as a SIP trunk device/ SIP server in order to receive calls and record streams.  It captures every SIP event. Based on those events, recording is done using RTP.The identification of each call is done via X-farendrefci from SIP Packets using rapid in-memory storage.

REST APIs are used to fetch and play/download recordings from the database.


Inc drawio
sFileId1i5FyWw3t7QMPDRCg1ZjadqzCTnQ2-FmT
modifiedTS1674629850832
diagramNameVRS Architecture revamp phase 2
serviceGDrive
aspectktgJmZxHQCqVazmRBR77 1
includedDiagram1
width1761
height1541

Components

Expertflow Voice Recording Solution consists of 3 main components.

Recorder

Expertflow Recorder is the major component responsible for handling Handshake and call recording between Cisco CUCM and EF Voice Recording Solution.

The recorder has multiple internal processes developed to record each and every call seamlessly without any interruption or delay.

Correlation

Expertflow Recorder has data structures implemented to store each and every detail of a call in memory which makes it easy to correlate calls on runtime. A proper mapping is implemented which stores call sessions, call legs and a complete call in a data structure so at the end of any call we have a complete correlated call object having all sessions and legs.

The identification of each call is done via Xrefci Id we get from SIP Packets. In-Memory storage makes the whole process fast and seamless.

RTP Storage

Expertflow Recorder stores all voice RTP packets for each call leg in a separate raw file. Recorder decodes the RTP packets from RAW to PCM on the basis of Codecs. So far we are supporting G711 only. 

Tagging

Recorder Tags each call with its completion status, either the call is properly recorded or forcefully terminated. 

All the calls which are tagged “Force Terminated” are those which are not properly recorded due to a network glitch or any other cause. This recorded file may contain the complete recording, Partial or no recording.

Metadata

 Recorder is connected with Mysql Database in order to store required metadata in the database.

Information is stored on correlated calls along with required parameters.

Mixer

The Mixer is responsible for mixing each individual recorded call-leg files into a single session file on the basis of provided correlation information from the Recorder. Mixer after merging relevant files into a single file can convert it into .wav file depends on the configuration.

APIs

APIs provide RESTFul endpoints for any third-party application to fetch a list of recordings and download and play individual recording files.

Front-end

UI to search, play and download recordings. Front-end fetches recordings from the database via APIs component.

Archival Process

This is the feature used to archive all recordings after a specified time from the current server that hosts the VRS  to a remote server via SFTP.

 Component level network diagram

...


Recording Flow

The recording solution supports the Built-in Bridge recording (“BIB recording”) where the recording streams are forked from an agent IP phone to the recorder, The agent voice and the customer's voice are sent separately i.e. stored as separate call legs and then mixed by the Recorder.

...