Skip to main content
Version: 2.5.0

RoutingAdapter webservice interface

General Architecture

The Routing Adapter is a component of the b+s Connects for Siebel integration product that provides an interface to Siebel, where Siebel can find a target for an unassigned activity. This can be any kind of activity such as an email, SMS, service request etc.

The Routing Adapter listens for NewTask requests from Siebel and routes them via the Cisco CCE/CCH to an available agent. During the startup process, the Routing Adapter requests all not routed tasks from Siebel to update its internal task list. When a new task is added to the Routing Adapter’s internal task list, a routing job is started which then periodically updates the task status back to Siebel.

Interface Specification

Requests

The interface between Siebel and the Routing Adapter consists of the following requests:

RequestResponseDirection (from -> to)Description
NewTask(Task)Empty (Ack/Err)Siebel -> RoutingAdapterThis request is sent by Siebel when a new task should be routed by the Routing Adapter.
RemoveTask(Task)Empty (Ack/Err)Siebel -> RoutingAdapterThis request is sent by Siebel to cancel the routing of a task that was previously sent to the Routing Adapter.
QueryTaskByStatus(RoutingStatus)Task[]RoutingAdapter -> SiebelThis request is used by the Routing Adapter at startup or fail over to get a list of all tasks in a specified state (e.g., “new”,“routing”).
QueryTaskById(MediaURL)TaskRoutingAdapter -> SiebelThis request is used by the Routing Adapter at startup or fail over to get a certain task identified by its MediaURL
UpdateTaskById(TaskToUpdate[])Empty (Ack/Err)RoutingAdapter -> SiebelThis request is used by the Routing Adapter to update a list of tasks in Siebel.

Task Record Parameters

A task record (as used in NewTask, QueryTaskByStatus and RemoveTask) looks as follows (note that for use with RemoveTask, only the field MediaURL is mandatory):

FieldNameMandatorySet byDescription
MediaURLYesSiebelUnique reference to a media item (Activity) used by the Siebel Agent Desktop to identify/display the media. (=activity ID).
ChannelTypeYesSiebelThe type of the routed activity. For emails, it is “Email – Inbound”.
SenderYesSiebelThe sender of a task. Email of the sender.
DestinationYesSiebelThe destination of a task. Email of the recipient.
SubjectYesSiebelThe subject of a task.
TypeSpecific1NoSiebelA field with specific information that exists for the current ChannelType. For emails: Alias (= “friendly name”) of the sender.
TypeSpecific2NoSiebelA field with specific information that exists for the current ChannelType. For emails: Alias (= “friendly name”) of the recipient.
TypeSpecific3NoSiebelA field with specific information that exists for the current ChannelType. For emails: Not used.
TypeSpecific4NoSiebelA field with specific information that exists for the current ChannelType. For emails: Not used.
TypeSpecific5NoSiebelA field with specific information that exists for the current ChannelType. For emails: Not used.
Key1*NoSiebelKey for customer-specific additional field.
Value1NoSiebelValue for customer-specific additional field.
Key2*NoSiebelKey for customer-specific additional field.
Value2NoSiebelValue for customer-specific additional field.
Key3*NoSiebelKey for customer-specific additional field.
Value3NoSiebelValue for customer-specific additional field.
Key4*NoSiebelKey for customer-specific additional field.
Value4NoSiebelValue for customer-specific additional field.
Key5*NoSiebelKey for customer-specific additional field.
Value5NoSiebelValue for customer-specific additional field.
MCA_PreferredAgentID**NoSiebel/Routing AdapterSet to empty value, reserved for later use. (If the task to route already has an owner, the agentID can be provided in this field to route the media to the same agent as last time.)
MCA_RouteTimeStamp**NoSiebel/Routing AdapterThis value can be set to define at what date/time the route request should be executed. (Use default SOAP date/time format “MM/DD/YYYY HH:MM:SS”.)
MCA_RouteStatus**NoSiebel/Routing AdapterThe value should be set to “00” as long as no update by the Routing Adapter has been performed. This value is used to remember the actual state of the task.
MCA_PreviousTaskID**NoRouting AdapterThis value is used to match two route requests in the event of a reroute scenario.
MCA_RerouteReason**NoRouting AdapterThis value will be set in case of rerouting with the reason of rerouting.
MCA_RerouteScript**NoSiebel/Routing AdapterThis value can be set by Siebel, otherwise, the default ScriptSelector from ini-File should be used. In the event of rerouting, if a new script selector is used for the new route request, this value will be changed by the Routing Adapter.

A TaskToUpdate record contains only a subset of the task record:

FieldNameMandatoryDescription
MediaURLYesUsed as a key to identify the record to update.
MCA_PreferredAgentID**NoNew value for the PreferredAgentID field in the activity record. Empty string allowed.
MCA_RouteTimeStamp**NoNew value for the RouteTimeStamp field in the activity record. Empty date allowed.
MCA_RoutingStatus**YesNew value for the RoutingStatus field in the activity record.
MCA_PreviousTaskID**NoNew value for the PreviousTaskID field in the activity record. Empty string allowed.
MCA_RerouteReason**NoNew value for the RerouteReason field in the activity reason. Empty string allowed.
MCA_RerouteScript**NoNew value for the RerouteScript field in the activity reason. Empty string allowed.

(*) Using these fields, additional customer-specific information can be transmitted to Connects for Siebel and can be available in the Cisco UCCE script for routing decisions.

(**) These fields need to be added as customer-specific fields in the activity record in Siebel, and are stored in the activity record. Routing Adapter writes data to these fields and reads it in case of a restart or fail over of Routing Adapter to restore the internal task list.

The following keys are known by the Connects for Siebel and mapped as followed:

KeyValue mapped in Routing Adapter to:
pv1 - pv10CCE/CCH peripheral variable 1 – peripheral variable 10
Keys beginning with “ECC.”CCE/CCH ECC variables

Connects-specific Fields in “Action” Business Component

Connects for Siebel needs some additional fields in the “Action” Business Component to save and read information:

NameJoinColumnPre default ValueText LengthType
MCA_PreferredAgentIDS_EVT_ACT_XATTRIB_xx30DTYPE_TEXT
MCA_RouteTimeStampS_EVT_ACT_XATTRIB_xxDTYPE_DATETIME
MCA_RoutingStatusS_EVT_ACT_XATTRIB_xx30DTYPE_TEXT
MCA_PreviousTaskIDS_EVT_ACT_XATTRIB_xx30DTYPE_TEXT
MCA_RerouteReasonS_EVT_ACT_XATTRIB_xx30DTYPE_TEXT
MCA_RerouteScriptS_EVT_ACT_XATTRIB_xx30DTYPE_TEXT

Make sure to select ATTRIB fields that are not already in use!

MCA_RoutingStatus

CodeNameSet byDescriptionImplemented in RoutingAdapter or Siebel Workflows?
00NewSiebel WorkflowSet by Siebel Workflows for tasks that should be routed. The “NewTask” request has not been sent to the RoutingAdapter yet.Yes
01RoutingRoutingAdapterRoutingAdapter received and accepted the “NewTask” request from Siebel. RoutingAdapter is now responsible for the task.Yes
02RoutedRoutingAdapterThe task was successfully routed to an agent.Yes
03CanceledRoutingAdapterThe task was canceled with a RemoveTask request.Yes
99RoutingFailedRoutingAdapterSet by RoutingAdapter if the RoutingRequest could not be sent to UCCE and retrying makes no sense.Yes

Process

  1. When Siebel decides to send a task for routing to CCE/CCH the MCA_RoutingStatus in is set to 00 (New) by Siebel Workflows.

  2. Siebel tries to send a NewTask for all activities with MCA_RoutingStatus 00 (New).

  3. As soon as Siebel was able to send a NewTask to the RoutingAdapter, the latter updates Siebel by using UpdateTaskById request with state MCA_RoutingStatus 01 (Routing).

  4. When the RoutingAdapter accepts the task he fires a route request towards CCE/CCH.

  5. When CCE/CCH finds an agent and the agent accepts the task, the RoutingAdapter updates Siebel with an UpdateTaskById with MCA_RoutingStatus 02 (Routed). There may be a write conflict if the RoutingAdapter wants to change the state of the activity and the EventHandler for the TaskStarted event wants to change the activity at the same time.

  • Should the selected agent reject the task, reroutes it or does not accept it (reroute on no answer, RONA) the RoutingAdapter sends another route request to CCE/CCH.

  • After a fail-over or restart of the RoutingAdapter, the RoutingAdapter queries Siebel for all activities in MCA_RoutingStatus 01 (Routing) by using QueryTaskByStatus and sends new route requests for these activities to CCE/CCH.

Sample Requests

NewTask

Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:sieb="http://bucher-suter.ch/SiebelRoutingAdapter">
<soapenv:Header/>
<soapenv:Body>
<sieb:NewTask>
<sieb:tasks>
<sieb:RoutingAdapterTask>
<sieb:ChannelType>Email - Inbound</sieb:ChannelType>
<sieb:Destination>siebel.dev@lab.lan</sieb:Destination>
<sieb:Key1></sieb:Key1>
<sieb:Key2></sieb:Key2>
<sieb:Key3></sieb:Key3>
<sieb:Key4></sieb:Key4>
<sieb:Key5></sieb:Key5>
<sieb:MCA_PreferredAgentID></sieb:MCA_PreferredAgentID>
<sieb:MCA_PreviousTaskID></sieb:MCA_PreviousTaskID>
<sieb:MCA_RerouteReason></sieb:MCA_RerouteReason>
<sieb:MCA_RerouteScript></sieb:MCA_RerouteScript>
<sieb:MCA_RouteStatus></sieb:MCA_RouteStatus>
<sieb:MCA_RouteTimeStamp></sieb:MCA_RouteTimeStamp>
<sieb:MediaURL>1-58DME</sieb:MediaURL>
<sieb:Sender>mediarouting@lab.lan</sieb:Sender>
<sieb:Subject>Test email from SOAP-UI</sieb:Subject>
<sieb:TypeSpecific1>Mediarouting</sieb:TypeSpecific1>
<sieb:TypeSpecific2>Siebel Development</sieb:TypeSpecific2>
<sieb:TypeSpecific3></sieb:TypeSpecific3>
<sieb:TypeSpecific4></sieb:TypeSpecific4>
<sieb:TypeSpecific5></sieb:TypeSpecific5>
<sieb:Value1></sieb:Value1>
<sieb:Value2></sieb:Value2>
<sieb:Value3></sieb:Value3>
<sieb:Value4></sieb:Value4>
<sieb:Value5></sieb:Value5>
</sieb:RoutingAdapterTask>
</sieb:tasks>
</sieb:NewTask>
</soapenv:Body>
</soapenv:Envelope>

RemoveTask

Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:sieb="http://bucher-suter.ch/SiebelRoutingAdapter">
<soapenv:Header/>
<soapenv:Body>
<sieb:RemoveTask>
<sieb:tasks>
<sieb:RoutingAdapterTask>
<sieb:ChannelType></sieb:ChannelType>
<sieb:Destination></sieb:Destination>
<sieb:Key1></sieb:Key1>
<sieb:Key2></sieb:Key2>
<sieb:Key3></sieb:Key3>
<sieb:Key4></sieb:Key4>
<sieb:Key5></sieb:Key5>
<sieb:MCA_PreferredAgentID></sieb:MCA_PreferredAgentID>
<sieb:MCA_PreviousTaskID></sieb:MCA_PreviousTaskID>
<sieb:MCA_RerouteReason></sieb:MCA_RerouteReason>
<sieb:MCA_RerouteScript></sieb:MCA_RerouteScript>
<sieb:MCA_RouteStatus></sieb:MCA_RouteStatus>
<sieb:MCA_RouteTimeStamp></sieb:MCA_RouteTimeStamp>
<sieb:MediaURL>1-58DME</sieb:MediaURL>
<sieb:Sender></sieb:Sender>
<sieb:Subject></sieb:Subject>
<sieb:TypeSpecific1></sieb:TypeSpecific1>
<sieb:TypeSpecific2></sieb:TypeSpecific2>
<sieb:TypeSpecific3></sieb:TypeSpecific3>
<sieb:TypeSpecific4></sieb:TypeSpecific4>
<sieb:TypeSpecific5></sieb:TypeSpecific5>
<sieb:Value1></sieb:Value1>
<sieb:Value2></sieb:Value2>
<sieb:Value3></sieb:Value3>
<sieb:Value4></sieb:Value4>
<sieb:Value5></sieb:Value5>
</sieb:RoutingAdapterTask>
</sieb:tasks>
</sieb:RemoveTask>
</soapenv:Body>
</soapenv:Envelope>

QueryTaskById

Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:cus="http://siebel.com/CustomUI">
<soapenv:Header/>
<soapenv:Body>
<cus:QueryTaskById_Input>
<cus:MediaURL>1-1O3TY</cus:MediaURL>
</cus:QueryTaskById_Input>
</soapenv:Body>
</soapenv:Envelope>

Response

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns:QueryTaskById_Output xmlns:ns="http://siebel.com/CustomUI">
<NewTask xmlns="http://bucher-suter.ch/SiebelRoutingAdapter">
<tasks>
<RoutingAdapterTask>
<ChannelType>Email - Inbound</ChannelType>
<Destination>siebel.dev@lab.lan</Destination>
<MCA_PreferredAgentID/>
<MCA_PreviousTaskID/>
<MCA_RerouteReason/>
<MCA_RerouteScript/>
<MCA_RouteStatus>00</MCA_RouteStatus>
<MCA_RouteTimeStamp/>
<MediaURL>1-1O3TY</MediaURL>
<Sender>mediarouting@lab.lan</Sender>
<Subject>testmail mediarouting --> siebel.dev</Subject>
<TypeSpecific1>Mediarouting</TypeSpecific1>
<TypeSpecific2>siebel.dev</TypeSpecific2>
</RoutingAdapterTask>
</tasks>
</NewTask>
</ns:QueryTaskById_Output>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

QueryTaskByStatus

Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:cus="http://siebel.com/CustomUI">
<soapenv:Header/>
<soapenv:Body>
<cus:QueryTaskByStatus_Input>
<cus:MCA_RoutingStatus>00</cus:MCA_RoutingStatus>
</cus:QueryTaskByStatus_Input>
</soapenv:Body>
</soapenv:Envelope>

Response

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns:QueryTaskByStatus_Output xmlns:ns="http://siebel.com/CustomUI">
<NewTask xmlns="http://bucher-suter.ch/SiebelRoutingAdapter">
<tasks>
<RoutingAdapterTask>
<ChannelType>Email - Inbound</ChannelType>
<Destination>siebel.dev@lab.lan</Destination>
<MCA_PreferredAgentID/>
<MCA_PreviousTaskID/>
<MCA_RerouteReason/>
<MCA_RerouteScript/>
<MCA_RouteStatus>00</MCA_RouteStatus>
<MCA_RouteTimeStamp/>
<MediaURL>1-1O3TO</MediaURL>
<Sender>mediarouting@lab.lan</Sender>
<Subject>testmail</Subject>
<TypeSpecific1>Mediarouting</TypeSpecific1>
<TypeSpecific2>siebel.dev</TypeSpecific2>
</RoutingAdapterTask>
</tasks>
</NewTask>
<NewTask xmlns="http://bucher-suter.ch/SiebelRoutingAdapter">
<tasks>
<RoutingAdapterTask>
<ChannelType>Email - Inbound</ChannelType>
<Destination>siebel.dev@lab.lan</Destination>
<MCA_PreferredAgentID/>
<MCA_PreviousTaskID/>
<MCA_RerouteReason/>
<MCA_RerouteScript/>
<MCA_RouteStatus>00</MCA_RouteStatus>
<MCA_RouteTimeStamp/>
<MediaURL>1-1O3TY</MediaURL>
<Sender>mediarouting@lab.lan</Sender>
<Subject>testmail mediarouting --> siebel.dev</Subject>
<TypeSpecific1>Mediarouting</TypeSpecific1>
<TypeSpecific2>siebel.dev</TypeSpecific2>
</RoutingAdapterTask>
</tasks>
</NewTask>
</ns:QueryTaskByStatus_Output>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

UpdateTaskById

Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cus="http://siebel.com/CustomUI" xmlns:data="http://www.siebel.com/xml/UpdateTask/Data">
<soapenv:Header/>
<soapenv:Body>
<cus:UpdateTaskById_Input>
<data:ListOfUpdatetask lastpage="?" recordcount="?">
<data:Action>
<data:MediaURL>1-1O3TY</data:MediaURL>
<data:MCA_RoutingStatus>99</data:MCA_RoutingStatus>
</data:Action>
</data:ListOfUpdatetask>
</cus:UpdateTaskById_Input>
</soapenv:Body>
</soapenv:Envelope>

Response

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns:UpdateTaskById_Output xmlns:ns="http://siebel.com/CustomUI">
<ns:MediaURL>1-1O3TY</ns:MediaURL>
</ns:UpdateTaskById_Output>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>