Versions Compared

Key

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

This chapter provides a general specification for Interaction Processor type network services.  It contains these sections:·      

...

...

...

...

·       Session Resource Requests and Responses

·       Session Resource Events

...

...

Service Overview

An Interaction Processor type service is responsible for managing agent sessions and providing access to its underlying CTI for call control and possibly multimedia functionality.  All Interaction Processor services must support each request, response, and event detailed here unless otherwise marked optional.  However, they are free to expand on the structures of those messages as well as define new messages.

...

The "instance-domain" property is used to identify a group of interaction processors running within separate integration platforms that are working together to service the same pool of clients.  The set of clients will spread their connections across the platform instances hosting the correct domain.  The following information must be provided by all Interaction Processor type services.

Code Block
languagejson
{

...


  "vendor", "<vendor-name>",

...


  "version", "<current-version>",

...


  "cti-vendor": "<cti-vendor-name>",

...


  "cti-version": "<cti-version>",

...


  "instance-domain": "<instance-domain>"

...


}

Service Requests and Responses

...

It is recommended that clients initially use a value of false for this property and allow the user to decide if they want to destroy the session.  If the user requests the session be removed, the client would send a second request with a value of true for the "override" property.

Request

Code Block
languagejson
{

...


  "command": "prepareSession",

...


  "data":

...

{


  {
    "model": "<name-of-call-model>",

...


    "override": true | false,

...


    "agent":

...

{


    {
      "id": "<agent-id>",

...


      "password": "<agent-password>"

...

}

}


    }
  }
}

Confirmation Response

{

Code Block
languagejson
{
  "command": "prepareSession",

...


  "result": "confirm",

...


  "message": "<confirmation-prompt-text>",

...


  "original":

...

<Contains the original prepareSession request JSON structure>


  {
    <Contains the original prepareSession request JSON structure>
  }
}

Success Response

Code Block
languagejson
{

...


  "command": "prepareSession",

...


  "result": "success",

...


  "resource":

...

{


  {
    "id": "<resource-id>",

...


    "data":

...

<Contains the original data property of the request>

}


    {
      <Contains the original data property of the request>
    }
  }
}

Failure Response

Code Block
languagejson
{

...


  "command": "prepareSession",

...


  "result": "failure",

...


  "failure":

...

{


  {
    "code": "<error-code-for-failure>",

...


    "message": "<error-message>",

...


    "context": "<stack-trace-if-applicable>"

...

}


  },
  "original":

...

<Contains the original prepareSession request JSON structure>


  {
    <Contains the original prepareSession request JSON structure>
  }
}

Secondary Events

This request should not generate any secondary service events.

...

The getCapabilities request is used by a client to discover the capabilities of this interaction processor.

Request

Code Block
languagejson
{

...


  "command": "getCapabilities",

...


  "data":

...

{

}


  {
  }
}

Success Response

Code Block
languagejson
{

...


  "command": " getCapabilities ",

...


  "result": "success",

...


  "data":

...

{

<key value pairs of capabilities>

}


  {
    <key value pairs of capabilities>
  }
}

Failure Response

Code Block
languagejson
{

...


  "command": " getCapabilities ",

...


  "result": "failure",

...


  "failure":

...

{


  {
    "code": "<error-code-for-failure>",

...


    "message": "<error-message>",

...


    "context": "<stack-trace-if-applicable>"

...

}


  },
  "original":

...

<Contains the original getCapabilities request JSON structure>


  {
    <Contains the original getCapabilities request JSON structure>
  }
}

Secondary Events

This request should not generate any secondary service events.

...

The basic interaction processor type service does not generate service events.  However, particular implementations may do so.

UCCX Report Server Resource

The UCCX Report Server resource provides access to UCCX specific reports.  This resource is only available from the UCCX Processor Service.  This resource has a resource type of "com.openmethods.iserver.processor.reporting.uccx".

UCCX Report Server Resource Messages

All reports are available through a single request.  The "command" property of request identifies the name of the report being requested.  The "data" property carries any report specific information that is needed to execute the report. 

Report Requests

report.calljourney

The call journey report provides information about what devices a call has touched and the time spent during each step of the journey.

Request

{

"command": "report.calljourney",

"data":

{

"CallId" : "<uccx id for call>"

}

}

Success Response

{

"command": "report.calljourney",

"result": "success",

"data" :

{

      "CallJourney" :

[

{

"CallId" : "<source call id>",

"Device" : "<device id>",

"DeviceType" : "<device type>",

"Description" : "<description>",

"Duration" : "<formatted time value>"

},

]

}

}

Failure Response

{

"command": "report.calljourney",

"result": "failure",

"failure":

{

"code": "<error-code-for-failure>",

"message": "<error-message>",

"context": "<stack-trace-if-applicable>"

}

"original":

<Contains the original request JSON structure>

}

report.teamstatus.begin

The team based agent status report provides agent status information for all UCCX team members.

Request

{

"command": "report.teamstatus.begin",

"data":

{

"agentId" : "<uccx id for agent>"

}

}

Success Response

{

"command": "report.teamstatus.begin",

"result": "success",

"data" :

{

}

}

Failure Response

{

"command": "report.teamstatus.begin",

"result": "failure",

"failure":

{

"code": "<error-code-for-failure>",

"message": "<error-message>",

"context": "<stack-trace-if-applicable>"

}

"original":

<Contains the original request JSON structure>

}

report.teamstatus.end

The team based agent status report provides agent status information for all UCCX team members.

Request

{

"command": "report.teamstatus.end",

"data":

{

"agentId" : "<uccx id for agent>"

}

}

Success Response

{

"command": "report.teamstatus.end",

"result": "success",

"data" :

{

}

}

Failure Response

{

"command": "report.teamstatus.end",

"result": "failure",

"failure":

{

"code": "<error-code-for-failure>",

"message": "<error-message>",

"context": "<stack-trace-if-applicable>"

}

"original":

<Contains the original request JSON structure>

}

Report Events

report.teamstatus.teamchanged

Indicates that the team name has changed.

{

"name": "report.teamstatus.teamchanged",

"data":

{

"agentId": "<uccx id of agent>",

"team":

{

"teamId": "<uccx id for team>",

"teamName": "<name for team>"

}

}

}

report.teamstatus.teamremoved

Indicates that the agent has been removed from a team or that the team has been completely removed from uccx.

{

"name": "report.teamstatus.teamremoved",

"data":

{

"agentId": "<uccx id of agent>",

"team":

{

"teamId": "<uccx id for team>",

"teamName": "<name for team>"

}

}

}

report.teamstatus.teamadded

Indicates that the agent has been added to a new team.

{

"name": "report.teamstatus.teamadded",

"data":

{

"agentId": "<uccx id of agent>",

"team":

{

"teamId": "<uccx id for team>",

"teamName": "<name for team>",

"members":

[

{

"memberId": "<uccx id for team member>",

"memberType": <"Agent" | "Supervisor" | "TeamLead">,

"memberName": "<uccx name for member>",

"status": <"ready" | "not_ready" | "ACW">,

"reason": "<uccx reason code>"

},

]

}

}

}

report.teamstatus.memberadded

Indicates that one or more team members were added to a team.

{

"name": "report.teamstatus.memberadded",

"data":

{

"agentId": "<uccx id of agent>",

"team":

{

"teamId": "<uccx id for team>",

"teamName": "<name for team>",

"members":

[

{

"memberId": "<uccx id for team member>",

"memberType": <"Agent" | "Supervisor" | "TeamLead">,

"memberName": "<uccx name for member>",

"status": <"ready" | "not_ready" | "ACW">,

"reason": "<uccx reason code>"

},

]

}

}

}

report.teamstatus.memberstatuschanged

Indicates that one or more team members' status has changed.

{

"name": "report.teamstatus.memberstatuschanged",

"data":

{

"agentId": "<uccx id of agent>",

"team":

{

"teamId": "<uccx id for team>",

"teamName": "<name for team>",

"members":

[

{

"memberId": "<uccx id for team member>",

"memberType": <"Agent" | "Supervisor" | "TeamLead">,

"memberName": "<uccx name for member>",

"status": <"ready" | "not_ready" | "ACW">,

"reason": "<uccx reason code>"

},

]

}

}

}

report.teamstatus.memberremoved

Indicates that one or more team members have been removed from the team.

{

"name": "report.teamstatus.memberremoved",

"data":

{

"agentId": "<uccx id of agent>",

"team":

{

"teamId": "<uccx id for team>",

"teamName": "<name for team>",

"members":

[

{

"memberId": "<uccx id for team member>"

},

]

}

}

}