User Guide


The Expertflow Voice Recording Solution is a replacement of Cisco Mediasense, for single & multi-site contact centers with up to 20 concurrent agents. Calls are recorded & stored as individual call legs including call hold, call transfer and call conference. The recordings can be archived or downloaded, and a RESTful API provides access to all objects.

How we record

 The recording is done with “Built-in Bridges” “BIB” – an approach that uses the conference bridge available for almost all Cisco IP phone types.

The Recording streams are forked from an agent's IP phone to the EF-recorder. The agent and customer's voices are sent and stored as separate call legs. They are then mixed by EF-Recorder.

The recording is initiated by CUCM using SIP commands. EF_Recorder 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 three components of the solution are the Recorder and the Mixer.

The Recorder has data structures implemented to store details of a call in memory. It stores call sessions, call legs, as well as the complete call in a data structure. Once a customer-facing call ends, it then links all legs to a single call object.

The identification of each call is done via Xrefci Id from SIP Packets using rapid in-memory storage.

The Mixer is responsible for merging all legs of a call into a single playback session, and optionally storing it as a .wav file depending on the configuration.

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

Logging in


User Management is now handled from a third-party application Keycloak. All the local users are now created on Keycloak.

(Note: The details of configuring Keycloak is mentioned in the deployment guide)

There is a Keycloak admin who can create, update, delete a user, and reset its password.

In Keycloak there are two roles for now. One is the "admin" role and one role is the "agent"

The Keycloak admin must select one role for the newly created. If a user is assigned an agent role, then on logging in on VRS the agent user can see his own recordings. If a user is assigned an admin role, then he can see all recordings on VRS. Note that if a user is not assigned any role then he won't be able to log in on VRS

Finesse Gadget

Finesse Agents can now login into the finesse gadget. Suppose a new user accesses the VRS gadget, he will automatically be logged into the VRS gadget app, and although he is not created on the Keycloak he will automatically be created on the Keycloak as well. Plus by default he will be assigned an Agent role. This will happen to all new finesse users. A Keycloak admin can then change the role if he requires it.

If a finesse user needs to log in on the normal web app, then he first needs to check the CC User checkbox on the login page, then click on the login button.

Search & Play

Searching a Call 

In VRS calls can be searched on the basis of the Start Date, Start Time, End Date, End Time, CallingNumber, AgentName, and AgentID. By default when a user logs in on the VRS application then the current date is already selected.

Basic Operation on Calls

Once a call is searched it can be played, downloaded, or archived.

Playing a call

Once a call is searched, it can be played by clicking on the play button.

Note that, during the call, the player can be moved forward or backward using the slider or the two buttons on the left and right of the play button.

Downloading a call

Once a call is searched it can be downloaded by clicking on the download button.

Archiving a call

In VRS calls can be Archived. The configuration for Archiving calls can be defined in the VRS configuration files. A job will run after the regular interval for Archiving the calls. It will move all the recordings that fall under the defined interval to some FTP server. Please note that once a call is Archived it cant be played or downloaded. Also note that in VRS, when a call is archived there is no way of knowing from the VRS application that a call is archived or not.

Multiple-legged calls

A multi-legged call is a type of cell that contains more than one leg. It is a single call but has multiple legs. Some of the calls are

  • Hold/Resume
  • Direct Transfer
  • Consult Transfer
  • Conference Call

Hold/Resume call

A Simple hold/resume call is a call in which a customer calls an Agent, when the call is active the Agent holds the call. 

Then he retrieves the call. This process makes two legs of the call.

Direct Transfer

In the case of a simple Direct Transfer scenario, a customer calls an Agent. The agent after receiving the call then directly transfers the call to the second agent. This is done without any consultation with the second agent.

In this case, two legs are made as well.

Consult Transfer

A consult transfer is a scenario in which a customer calls an Agent and the Agent transfers the call to the second agent. It should be clear that in this scenario a consult call is also done between two agents before the transfer.

So, this sort of transfer has three legs. Please note that the VRS application saves all the legs. The issue is the consulting part between the two agents is saved as a separate leg. The rest of the two legs are always saved as multi-legged.

Conference Call

A Conference call scenario consists when 2 Agents and a customer are on the call at the same time.  VRS makes two sets of multi-legged calls for this scenario. One consisting of three legs and the other consisting of two legs. 

Please note that some recording legs are repeated in this case. The ids of the conf part are also incorrect. It is noted that in some scenarios these legs are reduced to four.