Whisper coaching

The whisper coaching application enables a supervisor to "whisper" advice to an agent without being heard by the user. In this scenario, the application sets up a two-way conversation between the agent and the user, a two-way conversation between the supervisor and the agent, and a listen-only conversation between the supervisor and the user.

This application uses the www/Coaching/incoming.ccxml file in the vx/demos/ccxml-demos directory. This application does the following:

The following diagram illustrates the connections that the whisper coaching application creates:

 

coaching.gif

Resources and capacity

The whisper coaching sample application uses three DS0 resources and six conferencing resources when the incoming user call is a SIP call, and two DS0 resources and six conferencing resources when the incoming user call is a PSTN call. The following table shows the tasks for which these resources are used:

Task

Resources needed

Accepting an incoming user call.

1 DS0 (for a SIP call only)

Contacting the agent.

1 DS0

Contacting the supervisor.

1 DS0

Creating two three-party conferences that consists of the user, agent, and call recording dialog.

6 conferencing

Each media board supports a maximum of 448 conferencing resources. Therefore, in this scenario, the port limitation comes from the conferencing resources instead of the DS0 resources, because six conference resources are required per available port.

Running the application

The following table describes how to run the whisper coaching application. These instructions assume that you already copied the contents of vx/demos/ccxml-demos/www to apache/htdocs, and vx/demos/ccxml-demos/cgi-bin to apache/cgi-bin, as described in Overview of CCXML sample applications.

 

Step

Description

1

Modify the vx/demos/ccxml-demos/Coaching/incoming.ccxml file as follows:

  • Change sip:agent to specify the SIP URI for the agent:

<createcall dest="'sip:agent'">

  • Change sip:supervisor to specify the SIP URI for the agent:

<createcall dest="'sip:supervisor'">

2

In the Vision Console, define the whisper coaching application to the Call Server by associating a phone number with the following URL: :

http://webserver/Coaching/incoming.ccxml

where webserver is the URL of the web server that serves the vx/demos/ccxml-demos/www/Coachingl/incoming.ccxml file.

For information about defining CCXML applications using the Vision Console, see the Dialogic®  Vision™ 1000 Video Gateway Administration Manual or the Dialogic® Vision™ 1000 Programmable Media Platform User's Manual. For information about defining CCXML applications directly in the application definition file, see CCXML application definition file.

3

Make a call to the number you specified in Step 2.

4

After the scripts run, ensure that the audio was played back to the audio terminal.

Application logic

The whisper coaching application follows this logic:

Step

Action

Code snippet

1

Create a three-party conference with ID conferenceid1.

<createconference conferenceid="conferenceid1"
  confname="'conf1'" reservedtalkers="3"
  reservedlisteners="0" />

2

Create a second three-party conference with ID conferenceid2.

<createconference conferenceid="conferenceid2"
  confname="'conf2'" reservedtalkers="3"
  reservedlisteners="0" />

3

Accept an incoming user call.

<accept connectionid="UserConnectionid" />

4

Place a SIP call to an agent.

<createcall dest="'sip:agent'"/>

5

Join the user to conferenceid1 with a full-duplex connection. The user and agent can have a two-way conversation through this connection.

<join id1="conferenceid1" id2="UserConnectionid"
entertone="false" exittone="false"/>

6

Join the user to conferenceid2 with a half-duplex connection. The agent and supervisor can hear the user through this connection.

<join id1="conferenceid2" id2="UserConnectionid"
duplex="'half'" entertone="false" exittone="false"/>

7

Join the agent to conferenceid1 using a half-duplex connection. The agent can talk to the user and supervisor through this connection.

<join id1="conferenceid1" id2="AgentConnectionid"
duplex="'half'" entertone="false" exittone="false"/>

8

Join the agent to conferenceid2 using a half-duplex connection. The agent can hear the user and supervisor through this connection.

join id1="AgentConnectionid" id2="conferenceid2"
duplex="'half'" entertone="false" exittone="false"/>

9

Place a SIP call to a supervisor.

<createcall dest="'sip:supervisor'"/>

10

Join the supervisor to confereceid1 using a half-duplex connection. The supervisor can hear the user and agent through this connection.

<join id1="SupervisorConnectionid" id2="conferenceid1"
duplex="'half'" entertone="false" exittone="false"/>

11

Join the supervisor to conferenceid2 using a half-duplex connection. The supervisor an talk to the agent through this connection.

<join id1="conferenceid2" id2="SupervisorConnectionid"
duplex="'half'" entertone="false" exittone="false"/>

12

Upon receipt of the connection.disconnected event, check which party disconnected. If the user disconnected, then end the session.

<transition event="connection.disconnected" name="evt">
<if cond="evt.connectionid == UserConnectionid">
    <log label="'+++Coaching Use Case+++'"
expr="'User disconnected. Exiting.'"/>
<exit/>
<elseif cond="evt.connectionid == SupervisorConnectionid"/>
<log label="'+++Coaching Use Case+++'"
expr="'Supervisor Disconnected.'"/>   
<elseif cond="evt.connectionid == AgentConnectionid"/>
<log label="'+++Coaching Use Case+++'"
expr="'Agent Disconnected.'"/>
</if>
<exit/>
</transition>