Skip to main content
Version: 2.7.0

Voice

Configuring Communication Toolbar Adapter

The configuration of the b+s Connects for Siebel Communication Toolbar Adapter is saved in the Siebel database but can be imported from and exported to a Siebel Definition File (*.def). The installer of the b+s Connects for Siebel Communication Toolbar Adapter copies a sample Siebel Definition File into the installation directory of the Communication Toolbar Adapter.

License File and Product Activation Key

The license for the Connects for Siebel is stored in a file named 'BucherSuter.lic' which is located in the Communication Toolbar Adapter's installation directory. It contains the Product Activation Key (PAK) which is unique for every installation. The PAK is used to verify the lawfulness of a Connects for Siebel deployment. The PAK does not prevent the Communication Toolbar Adapter from starting up in case of invalidity or complete absence.

Default path to the license file:
C:\Program Files (x86)\BucherSuter\MCAforSiebel\BucherSuter.lic

[License]-Section

KeyDefaultRangeDescription
PAK<empty>-Product Activation Key entered during installation

Configuration Parameters

For a detailed description of the Siebel configuration parameters see chapter Parameters for Communications Configurations in the Siebel CTI Administration Guide.

KeyDefaultRangeDescription
AutoLogin"FALSE""TRUE", "FALSE"Enables/disables automatic login
CallFromUICommandCallFromUI-Enables/disables click-to-dial
DialingFilter.RuleN--Used to configure the dialing rules.

AutoLogin

For using automatic login please ensure that the agents have a teleset configured in Siebel and set the command parameter 'invokedByAutoLogin' of the used login command to 1.

CallFromUICommand

Siebel Open UI supports click-to-dial which allows agents to perform a call directly by clicking the phone icon next to a number in Siebel CRM.

Example of click-to-dial in Siebel Open UI

Click-to-dial is activated by default. Delete the 'CallFromUICommand' configuration parameter to disable click-to-dial.

Accessibility

When agents use Siebel Web Client in Open UI client mode a parameter named 'Accessibility' must be set in the configuration parameters of the Siebel Definition File and set to 'FALSE'. This avoids the appearance of warning dialogs when an agent logs in.

Siebel Push Keep Alive Driver and ChannelCleanupTimer

It is recommended to configure the Siebel Push Keep Alive driver which helps to solve problems that might be experienced in some environments where push communication sessions between the Siebel Application Object Manager and a user's Siebel Web Client (i.e. the web browser) are sometimes dropped. A connection might be dropped if messages have not been pushed to an agent for a certain period of time. When you use the Siebel Push Keep Alive driver you must also set the Siebel 'ChannelCleanupTimer' configuration parameter to make sure that abandoned connections for communications sessions are dropped promptly. The Siebel 'ChannelCleanupTimer' specifies a timeout value in seconds that can help the Siebel Application Object Manager to clean up orphaned communications sessions. The required steps to configure the Siebel Push Keep Alive Driver and the Siebel 'ChannelCleanupTimer' are described in the Siebel CTI Administration Guide.

  • Push Keep Alive Driver: The Siebel Push Keep Alive driver sends a heartbeat message to the Siebel Application Object Manager and to each user's web browser at a regular interval. This heartbeat message allows the push connection applicable to each agent's Siebel communications toolbar not to be dropped in such cases.

  • ChannelCleanupTimer: Specifies a timeout value in seconds that can help the Siebel Application Object Manager to clean up orphaned communications sessions such as in the event of a web browser failure.

ChannelCleanupTimer recommendation

b+s recommends to set the Siebel 'ChannelCleanupTimer' to '60 seconds' and the Siebel 'PushKeepAliveTimer' to '30 seconds'. The settings depend on your environment! In a large contact center setting this parameter to a small value might have negative performance implications. Please contact your Siebel consultant for assistance.

Siebel Dialing Filters

Siebel dialing filters are used to manipulate telephone numbers for voice calls made, transferred, or for conference calls made. Please refer to the Siebel CTI Administration Guide for more information about configuring dialing filters.

Example

[Configuration Parameters]
...
DialingFilter.Rule1 = "+4131917->"
DialingFilter.Rule2 = "+41->0"
DialingFilter.Rule3 = "+->00"
DialingFilter.Rule4 = "00->+"
DialingFilter.Rule5 = "0->+41"
DialingFilter.Rule6 = "->+4131917"
...

Rules 1, 2 and 3 convert numbers stored in Siebel database to a valid format for dialing outgoing calls.

  • Rule 1 converts internal numbers to short internal numbers
  • Rule 2 converts national numbers without a "+41" prefix but with a leading "0"
  • Rule 3 converts international numbers without a "+" prefix but with a leading "00"

Rules 4, 5 and 6 convert a number to the international format as stored in Siebel database, used for example to perform searches in Siebel database on incoming calls.

  • Rule 4 converts international numbers with a leading "00" to use "+" as prefix
  • Rule 5 converts national numbers with leading "0" to use "+41" as prefix
  • Rule 6 converts short internal numbers to use "+4131917" as prefix
dialing filter in siebel

With the b+s Connects for Siebel, Siebel dialing filters are normally used in combination with the DeviceCommand MakeCall. There are two keywords available that trigger dialing filters in Siebel differently: Lookup and PhoneTypeLookup. Please refer to the Siebel CTI Administration Guide for a detailed description of these keywords. b+s recommends to use the Lookup keyword for the DeviceCommands 'MakeCallToSelectedPhone', 'MakeCallToCurrentPhone' and 'MakeCallToPopupEmployee'.

Example

    [Configuration Parameters]
...

[Command:MakeCallToSelectedPhone]
DeviceCommand = "MakeCall"
Description = "Make call to "{@SelectedText:Lookup}""
CmdData = "MakeCallToSelectedPhoneData"
Hidden = "TRUE"

[CmdData:MakeCallToSelectedPhoneData]
RequiredField.\@SelectedText = "?*"
Param.calledDirectoryNumber = "{@SelectedText:Lookup}"

[Command:MakeCallToCurrentPhone]
DeviceCommand = "MakeCall"
Description = "Make call to "{@Phone:Lookup}""
CmdData = "MakeCallToCurrentPhoneData"
Hidden = "TRUE"

[CmdData:MakeCallToCurrentPhoneData]
RequiredField.@Phone = "?*"
Param.calledDirectoryNumber = "{@Phone:Lookup}"

[Command:MakeCallToPopupEmployee]
DeviceCommand = "MakeCall"
Title = "Make Call"
Description = "Make call to employee selected from popup list"
CmdData = "MakeCallToPopupEmployeeData"
Hidden = "TRUE"

[CmdData:MakeCallToPopupEmployeeData]
SelectBusComp = "Employee"
SelectParam = "TRUE"
SelectBusObj = "Employee"
SelectApplet = "ACD Transfer Call Applet"
SelectTitle = "Make Call to:"
Param.calledDirectoryNumber = "[Phone #:Lookup]"
...

Driver Parameters

Take the Siebel sample definition file shipped with the b+s Connects for Siebel as starting ==point== and at a minimum change the values in red or values marked with an arrow (->).

[Driver:MCA_For_Siebel]-Section

NameDescription
Library NameThe full path of the installed driver DLL
Default: <installation_directory\>\Driver\MCA_For_Siebel.dll

[Driver Parameters:MCA_For_Siebel]-Section, Driver Instance Parameters

NameDescription
Driver:DataStoreHostAHostname or IP-Address of DataStore Side A
Default: centraltoolserver-a
Driver:DataStoreHostBHostname or IP-Address of DataStore Side B
Default: centraltoolserver-b
Driver:DataStorePortAPort number of DataStore on Side A
Default: 42029
Driver:DataStorePortBPort number of DataStore on Side B
Default: 42029
Driver:LogFilePath to log file.
Default: C:\ProgramData\BucherSuter\logfiles\MCAforSiebel\MCA_For_Siebel.log
Driver:LogTraceMaskLog trace mask of the driver
Default: 0x80000004
Driver:LogTraceCollectMaskMask defining which collected log messages are written to log
Default: 0x00000004
Driver:EventLogLevelLog level to trigger writing into Windows Event Log. Valid values: None, Info, Warn, Error, Fatal
Default: Fatal
Driver:MaxLogFileSizeSpecifies the maximum size of a log file
Default: 100000KB
Driver:MaxLogFileRollBackupsSpecifies the number of roll files that are used by the file logger.
Default: 10
Driver:RemoteConsoleBasePortPort number of command-line interface (aka remote console) service of the first instance of Communication Toolbar Adapter. The Driver uses one remote console port for each CommSessionMgr process.
Default: 8040
Driver:MaxRemoteConsoleInstancesThe maximum count of ports that the command-line interface (aka remote console) can occupy (starting from RemoteConsoleBasePort)
Default: 10
Driver:BookMarkVariableVariable of the reference for the Siebel bookmark that it stored on the DataStore for a call transfer/conference. The parameter may contain one of the following values:
- perVar1
- perVar2
- perVar3
- perVar4
- perVar5
- perVar6
- perVar7
- perVar8
- perVar9
- perVar10
- \<ECCVarName> (e.g.'ECC.user.myECCVar')
-> Default: "" (empty)
When using an ECC variable, the minimal size of the variable is 25 characters.
Please be aware that the used ECC variable must also be enabled in configuration file of ConnectMCAL in parameter 'CtiAttachedDataECCVariableName'.
In case, bookmark transfer is enabled (DataStore host/ports are configured) this setting is mandatory, otherwise an error is logged.
Driver:LoggoutWhileVoiceActiveNotAllowedSpecifies if an agent is allowed to logout during an active call
Default:FALSE
Driver:LoggoutWhileMediaActiveNotAllowedSpecifies if an agent is allowed to logout while handling a chat or an email
Default:FALSE

[Driver Parameters:MCA_For_Siebel]-Section, Session Parameters

NameDescription
Driver:MCALHostSideADo not change this setting here, use the profile entry instead.
Driver:MCALHostSideBDo not change this setting here, use the profile entry instead.
Driver:MCALHostPortSideADo not change this setting here, use the profile entry instead.
Driver:MCALHostPortSideBDo not change this setting here, use the profile entry instead.
Driver:MCALUsernameUsername that is used to connect to ConnectMCAL.
Default: 'mcal'
By default this parameter is not visible in the b+s Connects for Siebel's default Siebel DEF-file.
Driver:MCALPasswordPassword that is used to connect to ConnectMCAL.
Default: 'mcal'
By default this parameter is not visible in the b+s Connects for Siebel's default Siebel DEF-file.
Driver:EnableVoiceEnables login for voice. If set to FALSE, a media-only MCAL deployment (ConnectMCAL + MediaManager) is sufficient.
Default: TRUE
Driver:EnableMediaEnables login for media. If set to FALSE, a voice-only MCAL deployment (ConnectMCAL) is sufficient.
Default: FALSE
Driver:MCALHostSideASecuredDo not change this setting here, use the profile entry instead.
Driver:MCALHostWebServiceNameSideADo not change this setting here, use the profile entry instead.
Driver:MCALHostSideBSecuredDo not change this setting here, use the profile entry instead.
Driver:MCALHostWebServiceNameSideBDo not change this setting here, use the profile entry instead.
Driver:MCALSessionTimeoutThe interval to renew the session to ConnectMCAL in milliseconds, heartbeats. This should be smaller than the timeout configured in ConnectMCAL
Default: 10000
Driver:AgentEventMaskMask defining which agent events are sent to Siebel. This Event Mask is intended to avoid sending unused events to Siebel and to prevent unnecessary load on Siebel. Only events for which an Event Handler exists in the Def-File should be sent. See below for a list of bits that have to be set to enable specific events.

(bit 1 = 0x1) AgentLoggedOn
(bit 2 = 0x2) AgentLoggedOff
(bit 3 = 0x4) AgentReady
(bit 4 = 0x8) AgentNotReady
(bit 5 = 0x10) AgentBusyReady
(bit 6 = 0x20) AgentBusyNotReady
(bit 7 = 0x40) AgentWorkAfterCallReady
(bit 8 = 0x80) AgentWorkAfterCallNotReady

The sample Event Handler for logout notifications with logout reason described in chapter 6.2.8 uses the AgentLoggedOff event. To get this event set AgentEventMask to '0x00000002'
Default: 0x00000002
Driver:CallEventMaskMask defining which call events are sent to Siebel. This Event Mask is intended to avoid sending unused events to Siebel and to prevent unnecessary load on Siebel. Only events for which an Event Handler exists in the Def-File should be sent. See below for a list of bits that have to be set to enable specific events.

(bit 1 = 0x1) CallOriginated
(bit 2 = 0x2) CallDelivered
(bit 3 = 0x4) CallEstablished
(bit 4 = 0x8) CallHeld
(bit 5 = 0x10) CallRetrieved
(bit 6 = 0x20) CallWrapup
(bit 7 = 0x40) CallEnded
(bit 8 = 0x80) CallVarUpdated
(bit 9 = 0x100) CallTransferredOut
(bit 10 = 0x200) CallTransferredIn
(bit 11 = 0x400) CallConferenced

The provided sample Def-File has implemented Event Handlers for the Call Events 'CallDelivered', 'CallEstablished', 'CallTransferredOut' and 'CallVarUpdated' to show the caller while ringing or outbound option reservation, search the customer when answered or restore a Siebel bookmark for screen transfer. To get these events and functionality, set the 'CallEventMask' to '0x00000186'
Default: 0x00000186
Driver:TaskEventMaskMask defining which task events are sent to Siebel. This Event Mask is intended to avoid sending unused events to Siebel and to prevent unnecessary load on Siebel. Only events for which an Event Handler exists in the Def-File should be sent. See below for a list of bits that have to be set to enable specific events.

(bit 1 = 0x1) TaskOffered
(bit 2 = 0x2) TaskStarted
(bit 3 = 0x4) TaskPaused
(bit 4 = 0x8) TaskResumed
(bit 5 = 0x10) TaskWrapup
(bit 6 = 0x20) TaskEnded
(bit 7 = 0x40) TaskDeleted
(bit 8 = 0x80) ChatMessage
(bit 9 = 0x100) ChatTyping

The provided sample Def-File has implemented Event Handlers for the Task Events 'TaskOffered' and 'TaskStarted' to show the email sender and subject while offered and search the customer when accepted. To get these events and functionality set the 'TaskEventMask' to '0x00000003' For chat integration the sample Def-File additionally contains Event Handlers for 'TaskPaused', 'TaskResumed', 'TaskWrapup' and 'TaskEnded'. To get these events and chat functionality also, set the 'TaskEventMask' to '0x000001BF'.
Default: 0x000001BF
Driver:PopupNotReadyReasonsSet this to 'TRUE', if you want to select not ready reasons from a popup when changing the state to not ready.
Default: 'FALSE'
Driver:PopupLogoutReasonsSet this to 'TRUE', if you want to select logout reasons from a popup when changing the state to logout
Default: FALSE
Driver:PopupWrapupReasonsSet this to 'TRUE', if you want to select wrap-up reasons from a popup when ending wrap-up after a call.
Default: FALSE
Driver:OverrideSiebelLanguageCodeSet this parameter to a 3-letter language code ("ENU", "DEU", ...) to select another language than the current language of the Siebel instance.
Default: ""
Driver:EnableMediaTypesAdditional setting for enabling/disabling individual media types. Prerequisite for this setting is 'Driver:EnableMedia=TRUE' (see above).
A set of bits.
'Bit 0' controls enabling/disabling of email
'Bit 1' controls enabling/disabling of chat
Default: 0x03 (i.e. email and chat enabled)
Driver:EnableMediaWrapupEnable/disable wrap up for individual media types.
A set of bits.
Bit 0 controls enabling/disabling wrap up for email Bit 1 controls enabling/disabling wrap up for chat
Default: 0x00 (no wrap up at all)
Remark: Email wrap up is not available. Setting Bit 0 to 1 has no effect.
Driver:EnableWrapupTimerSet this to 'TRUE', if you want to reset the work item timer to zero when a voice call enters wrapup state.
Default: 'FALSE'
Driver:ChatClosedByErrorMsgThis is the chat message displayed to the agent, when a chat session is closed by connection failure or system fail over.
Default: 'The chat session was closed by connection error.'

[Driver Parameters:MCA_For_Siebel]-Section, Agent Parameter

NameDescription
Service:AutoLogoutReasonCodeThe logout reason code Siebel uses to logout the agent when the browser window is closed. Range of possible values: 0-65535
Default: 888

[Profile:MCA_For_Siebel_MultiChannel_1]-Section

NameDescription
Driver:MCALHostSideAHostname or IP-Address of ConnectMCAL Side A
Default: centraltoolserver-a
Driver:MCALHostSideBHostname or IP-Address of ConnectMCAL Side B
Default: centraltoolserver-b
Driver:MCALHostPortSideAPort number of ConnectMCAL service on Side A
Default: 8015
Driver:MCALHostPortSideBPort number of ConnectMCAL service on Side B
Default: 8015
Driver:MCALHostSideASecuredUsed for secured connection to ConnectMCAL Side A
Default: FALSE
Driver:MCALHostWebServiceNameSideAWeb service name on ConnectMCAL Side A
Default: MCAL
Driver:MCALHostSideBSecuredUsed for secured connection to ConnectMCAL Side B
Default: FALSE
Driver:MCALHostWebServiceNameSideBWeb service name on ConnectMCAL Side B
Default: MCAL

Driver:RemoteConsoleBasePort

Only the first instance of the b+s Connects for Siebel Communication Toolbar Adapter will be able to use this port. A later instance will not be able to start a service because it is already in use. On startup the instance will determine an offset for this value by trying to start one of these services and increment the port until it finds one that is not already in use by another process. This resulting offset will be used for both service ports.

Driver:LogFile

The offset that was found for the port number will also be added as a suffix in the logfile-name to have a unique logfile-name for each instance of the b+s MCA for Siebel Communication Toolbar Adapter. Before the offset is determined, a shared log file without this suffix is used.

Driver:AgentEventMask

The mask is defined as follows:

Event Mask (32bit)
AgentLoggedOn 0x00000001
AgentLoggedOff 0x00000002
AgentReady 0x00000004
AgentNotReady 0x00000008
AgentBusyReady 0x00000010
AgentBusyNotReady 0x00000020
AgentWorkAfterCallReady 0x00000040
AgentWorkAfterCallNotReady 0x00000080

Default: No agent events are sent to Siebel.

Driver:CallEventMask

The mask is defined as follows:

Event Mask (32bit)
CallOriginated 0x00000001
CallDelivered 0x00000002
CallEstablished 0x00000004
CallHeld 0x00000008
CallRetrieved 0x00000010
CallWrapup 0x00000020
CallEnded 0x00000040
CallVarUpdated 0x00000080
CallTransferredOut 0x00000100
CallTransferredIn 0x00000200
CallConferenced 0x00000400

Default: No call events are sent to Siebel.

Driver:TaskEventMask

The mask is defined as follows:

Event Mask (32bit)
TaskOffered 0x00000001
TaskStarted 0x00000002
TaskPaused 0x00000004
TaskResumed 0x00000008
TaskWrapup 0x00000010
TaskEnded 0x00000020
TaskDeleted 0x00000040
ChatMessage 0x00000080
ChatTyping 0x00000100

Default: No task events are sent to Siebel.

Change Configuration at Runtime

The Driver Parameters can be changed at runtime in Siebel (navigate to Administration – Communications -> Communications Drivers and Profiles -> Driver Parameters) and are divided into three classes.

  • DriverInstance Parameter: Are set each time a new driver instance is loaded and are fixed until the driver instance is removed (no agents on this instance).

    • 'DataStoreHostA'
    • 'DataStoreHostB'
    • 'DataStorePortA'
    • 'DataStorePortB'
    • 'LogFile'
    • 'LogTraceMask'
    • 'LogTraceCollectMask'
    • 'MaxLogFileSize'
    • 'MaxLogFileRollBackups'
    • 'RemoteConsoleBasePort'
    • 'MaxRemoteConsoleInstances'
    • 'BookMarkVariable'
  • Session Parameter: Are set each time an agent logs into Siebel. The driver creates a new session whenever an agent logs in with a different session parameter.

    • 'MCALHostSideA'
    • 'MCALHostSideB'
    • 'MCALHostPortSideA'
    • 'MCALHostPortSideB'
    • 'MCALHostWebServiceNameSideA'
    • 'MCALHostWebServiceNameSideB'
    • 'MCALHostSideASecured'
    • 'MCALHostSideBSecured'
    • 'MCALUsername'
    • 'MCALPassword'
    • 'MCALSessionTimeout'
    • 'AgentEventMask'
    • 'CallEventMask'
    • 'TaskEventMask'
    • 'PopupNotReadyReasons'
    • 'PopupLogoutReasons'
    • 'PopupWrapupReasons'
    • 'EnableVoice'
    • 'EnableMedia'
    • 'OverrideSiebelLanguageCode'
  • Agent Parameter: Are set each time an agent logs into Siebel. Agents with different agent parameters can log in on the same session.

    • 'AutoLogoutReasonCode'

Agent Login

The b+s Connects for Siebel's default DEF-file offers two ways to log in an agent into the CCE/CCH voice channel: Login with a specified phone extension or login with the teleset extension configured in the Siebel agent preferences. It is highly recommended to configure a teleset extension so that an agent does not have to specify his phone extension each time he logs in. If the teleset extension is configured, the agent can still override the preconfigured teleset extension by specifying a temporary extension at login.

In earlier versions of the b+s Connects for Siebel this chapter described how the entered phone extension from the '[@EditControl]'-variable can be split and manipulated to detect mobile agent login in different modes. It is still possible to do that but the driver can do this now for you (see Mobile Agent)

Automatic Detection of Login Mode. Doing the same by using the Siebel DEF-file is no longer necessary.

Single Sign-On (SSO)

SSO protocol requirements

Not supported with CTI protocol < 20

Cisco's Single Sign-On (SSO) is supported with b+s Connects for Siebel. To leverage this capability, SSO feature has to be enabled for CCE agents and the SSO mode has to be configured in CCE/CCH. Cisco supports two modes of SSO: "Hybrid" and "SSO". The "Hybrid" mode does allow agents to log in with and without SSO feature enabled and the "SSO" mode is for SSO agents only.

In case of SSO, the configuration of agent's password is not required for SSO agents anymore in Siebel CRM.

There are two ways how an agent can log in as SSO: "Agent ID" or "Login name". To log in an agent with "Login name" then the following parameter has to be enabled either for the device command [Command:LoginTextbox], the command [Command:LoginTeleset] or both depending, what agent login type is used in Siebel DEF-file.

[Command:LoginTextbox]
DeviceCommand = "AgentLogon"
FilterSpec = "[@EditControl] LIKE '?*'"
Description = "Login with device {@EditControl}"
Title = "Login"
CmdData = "LoginTextboxData"
Hidden = "TRUE"

[CmdData:LoginTextboxData]
Param.agentId = "{@AgentId}"
Param.password = "{@AgentPin}"
Param.agentDevice = "{@EditControl}"
Param.agentInfo = "{@UserName}"
------> Param.loginByName = "1"

[Command:LoginTeleset]
DeviceCommand = "AgentLogon"
FilterSpec = "[@SelectedDN] LIKE '?*'"
Description = "Login to configured teleset extension {@SelectedDN}"
Title = "Login (configured teleset)"
CmdData = "LoginTelesetData"
Hidden = "TRUE"

[CmdData:LoginTelesetData]
Param.agentId = "{@AgentId}"
Param.password = "{@AgentPin}"
Param.agentDevice = "{@SelectedDN}"
Param.agentInfo = "{@UserName}"
------> Param.loginByName = "1"

Add Channel "b+s MultiChannel" in Siebel

The b+s Connects for Siebel's default Siebel DEF-file uses a custom channel type '"b+s MultiChannel"'. Before you can import the definition file you must add this channel type to the Siebel configuration.

Step 1: Login as administrator in Siebel

Step 2: Select the "Site Map" button

Site Map Button

Step 3: Select "Administration – Data"

Administration Data

Step 4: Scroll down and select "List of Values"

List of Values - LOV

Step 5: Select "Type" in the Dropdown Menu, enter "COMM_MEDIA_TYPE2" in the Text field and press the arrow button

Comm Media Type

STEP 6: Press the plus button and insert the data as follows:

Add Multi Channel

  • Type: "COMM_MEDIA_TYPE"
  • Display Value and Language-Independent Code: "b+s MultiChannel"
  • Language-Name: "English-American"
  • Parent LIC: "COMM"

Importing the Siebel Definition file

Step 1: Login as administrator in Siebel

Step 2: Select the "Site Map" button

Site Map Button

Step 3: Select "Administration – Communications"

Administration Communications

Step 4: Select "Administration – Communications" again

Administration Communications

Step 5: Configure Communication

Select the "+" (plus) button (1) and enter a name for the configuration "Bucher Suter Connects for Siebel" (2). To save the new entry you must remove the focus from the new line. You can do that by clicking in the empty "Parameters" list below (3). Now press the "Import Configuration" button (4)

Import Siebel Def File

Step 6: Select "Next" in the popup window

Import Siebel Def File Wizard

Step 7: Select the edited definition file and check all boxes in the next window, then select OK.

Import Siebel Configuration Selection

Step 8: If the import was successful, you can see some parameters in the "Parameters" list.

Import Siebel Configuration Parameter List

If you want to see the parameters you edited in the Siebel DEF-file, click the "Profiles" tab, then click the link "MCA_For_Siebel" in the column "Driver" and finally click the "Driver Parameters" tab. Keep the Siebel DEF-file for later use.

recommendation about definition file handling

Once you have imported the definition file in Siebel it is possible to change settings directly by using a modern web browser. It is also possible to re-generate a definition file with the button "Export Configuration". Because the comments and the order of the lines in the definition file are lost while importing, the re-generated definition file is hard to read. We recommend to always make changes in the definition file and then importing the settings again from the changed definition file. To reimport changed settings just follow the same steps described before but select the existing configuration entry instead of creating a new one.

Agent Configuration

Agents must already exist as employees in Siebel (Administration- User Employees) and must already be able to log in into the Siebel application.

Step 1: Login as administrator in Siebel

Step 2: Select the "Site Map" button

Site Map Button

Step 3: Select "Administration – Communications"

Administration Communications

Step 4: Select "Administration – Communications" again

Administration Communications

Step 5: Select the desired configuration (in this example "Bucher + Suter MCA for Siebel")

Step 6: Select the "Agents" tab and select the "+" (plus) button

Add Cisco Agent

Step 7: In the popup window select an agent and press "OK".

The agent is now inserted into the "Agents" tab of the "Bucher + Suter MCA for Siebel" configuration. Click on the link in the column "Agent" to open the details of the agent.

Confirm Add Cisco Agent

Step 8: Configure Agent login and password

Change the value in column "Agent Login" to the agent ID to use for login into CCE/CCH. Change the value in column "Agent Password" to the password to use for login into CCE/CCH. If the agent was not assigned to another configuration before, only one line appears and the column "Primary" is checked. If the agent was already assigned to another configuration before multiple lines appear. Select the line "Bucher + Suter Connects for Siebel" and check the column "Primary" to set this configuration as the primary configuration for the agent.

Configure Cisco Agent

Repeat these steps for all agents that should use b+s Connects for Siebel.

Agent Login Test

Step 1: Login as an agent in Siebel

If the driver was successfully loaded, the communications panel button changes to red and the login button within the communications panel becomes active.

Driver Loaded Red Sign

Driver Loaded Login Enabled

Step 2: Choose device and login agent on CCE/CCH

Insert the device (phone number) to login in the text field and keep the focus in the field (1).

Click the login button (2).

Agent Login Textbox

The agent is logged into CCE/CCH. An agent state status message is displayed for a few seconds; the make call-button, the not ready-button and the logout-button become enabled.

Agent Logged In Textbox

Configuration for Multi Agent PG Voice Deployments

For a deployment with multiple CCE Agent PGs multiple Siebel Communications configuration entries and a separate Siebel profile for each entry is required. Furthermore, each CCE/CCH Agent PG requires its own redundant ConnectMCAL instance. Hostnames/IP addresses and ports of the ConnectMCAL instances are specified in the different Siebel profiles. Agents can have one primary Siebel Communications configuration entry only. For each Siebel Communications configuration entry you must edit the Siebel DEF-file and import it again. Change the suffix "_1" (see Figure 60) in the profile name to "_2", "_3", etc. then repeat the steps in chapter Importing the Siebel Definition file to import the modified Siebel DEF-file into an additional Siebel Communications configuration.

Multi Agent PG Voice Deployment - High Level Configuration Overview

[Profile:MCA_For_Siebel_MultiChannel_1] <---------
Driver = "MCA_For_Siebel"
Driver:MCALHostSideA = "centraltoolsserver-a"
Driver:MCALHostSideB = "centraltoolsserver-b"
Driver:MCALHostPortSideA = "8015"
Driver:MCALHostPortSideB = "8015"

Configuring Reasons (Not Ready, Logout, Wrap-up)

If one of the driver parameters 'PopupNotReadyReasons', 'PopupLogoutReasons' or 'PopupWrapupReasons' are enabled, the selectable reasons must be configured in Siebel. The b+s Connects for Siebel's default Siebel DEF-file supports Siebel popup applets to select the reasons if these configuration values are set. The values are picked from the Siebel database and need to be configured as follows.

Step 1: Login as administrator in Siebel

Step 2: Select the "Site Map" button

Site Map Button

Step 3: Use the search function of your browser and search for "LOV" to find the "LOV Explorer"

Step 4: Select "Type" in the dropdown and enter the value "REASON" into the text field and press the "Arrow"-Button

List Of Values Search

Step 5: Configure reason codes

Enter new types 'REASON_NOTREADY', 'REASON_LOGOUT', 'REASON_WRAPUP' and add your desired values to these types.

(Use the existing type 'REASON_CODE' and its values as sample.)

List Of Values Reasons

reason values coding

The field Code for not ready and logout reasons must be a numeric value. This is the code that is forwarded to CCE/CCH as reason code. The field Code for wrap-up reasons can be a string and must begin with a prefix W_. The code without the prefix W_ will be sent to CCE/CCH as wrap-up reason.

If you use not ready reasons and wrap-up reasons, you should add Not Ready: and Wrapup: or similar in front of the display values because not ready reasons and wrap-up reasons are displayed in the same list if the agent goes in the not ready state from the wrap-up state.

Reroute On No Answer (RONA) for Voice

For voice calls RONA-settings are configured in CCE/CCH's Agent Desk Settings.

Device Commands and Device Events

The Siebel Communication Server integrates the Siebel Communication Toolbar Adapter. This Adapter enables the Application Interface between Siebel and Connects for Siebel.

Internationalisation

Customizing Tooltips and Menu Items

Most of the tooltips or menu items shown in Siebel UI origin from the Siebel definition file. If you have a multi-language environment it is recommended to start with a Siebel definition file in one language and implement your functional customizations first. Once the functional customizations work as expected, make a copy of the Siebel definition file for each of your languages and translate the "Title" and "Description" fields of all Commands and Subcommands to your needs.

Customizing Status Text Output

Some of the strings, especially the output of the status bar like "Agent state: Voice ready, Mail ready" origin from the Communication Toolbar Adapter and are already translated. If some of these strings should be changed or a language that does not yet exist in the Communication Toolbar Adapter is required, add a file named CustomizedStrings.txt to the resource folder of the specific language that contains key/value pairs of the strings which should have another value. The format for a key/value-pair is as followed:

"<key>"="<value>";

Make sure that each key/value pair is terminated by a semicolon.

Example

  • You want to change the name for the channel 'Voice' to 'Phone' and for the channel 'Mail' to 'Email'.

  • Create a text-file named CustomizedStrings.txt that contains the following two entries:

    "Gui_Status_Domain_Name_Voice"="Phone";
    "Gui_Status_Domain_Name_Mail"="Email";
  • Save the created CustomizedStrings.txt-file in the appropriate resource folder of the Communication Toolbar Adapter's installation directory. The name of the resource folder must be composed of a valid IETF language tag (see Tags for Identifying Languages).
    The resource folder for American English (en-US) and German (de-DE) are automatically created by the Connects for Siebel Communication Toolbar Adapter installation wizard.

    C:\Program Files(x86)\BucherSuter\MCAforSiebel\Driver\en-US\CustomizedStrings.txt
  • Make sure that the Communication Toolbar Adapter DLL (respectively the Siebel Communications Session Manager) is restarted.

UTF-8 required for CustomizedStrings.txt

The CustomizedStrings.txt-file must be encoded in UTF-8 character set and the Communication Toolbar Adapter DLL (respectively the Siebel Communications Session Manager) must be restarted to activate the customized status text output.

Please refer to the appendix of this document for a list of all strings that can be customized.

Keys for Customizing Status Text Output

The following keys can be used in the CustomizedStrings.txt-files to customize the status text output of the Siebel Communications Toolbar.

  • CSTA_ERROR_operation__generic
  • CSTA_ERROR_operation_callTypeNotSupported
  • CSTA_ERROR_operation_forwardingDestinationNotSupported
  • CSTA_ERROR_operation_invalidAgentIdentifier
  • CSTA_ERROR_operation_invalidAgentPassword
  • CSTA_ERROR_operation_invalidCallID
  • CSTA_ERROR_operation_invalidDeviceID
  • CSTA_ERROR_operation_invalidParameterValue
  • CSTA_ERROR_operation_OutboundCallFailed
  • CSTA_ERROR_stateIncompatibility_invalidAction
  • CSTA_ERROR_stateIncompatibility_invalidObjectState
  • CSTA_ERROR_subscribedResourceAvailability_outstandingReqLimitExceeded
  • CSTA_ERROR_systemResourceAvailibility_noMediaChannelsAvailable 1
  • CSTA_ERROR_systemResourceAvailibility_resourceBusy 1
  • CSTA_ERROR_systemResourceAvailibility_resourceLimitExceeded 1
  • CSTA_ERROR_systemResourceAvailibility_resourceOutOfService 1
  • ERROR_AgentDevice_mustnt_be_empty
  • ERROR_AgentDevice_too_long
  • ERROR_AgentID_too_long
  • ERROR_auto_login_failed
  • ERROR_Cannot_login_media_not_enabled
  • ERROR_Cannot_login_voice_not_enabled
  • ERROR_Mail_offline_logoff
  • ERROR_Mail_offline_logon
  • ERROR_multiple_logout_reasons_selected
  • ERROR_multiple_notready_reasons_selected
  • ERROR_multiple_wrapup_reasons_selected
  • ERROR_no_valid_logout_reason_selected
  • ERROR_no_valid_notready_reason_selected
  • ERROR_no_valid_wrapup_reason_selected
  • Gui_Status_Agent_State_Busy_NotReady
  • Gui_Status_Agent_State_Busy_Ready
  • Gui_Status_Agent_State_Login
  • Gui_Status_Agent_State_Logout
  • Gui_Status_Agent_State_NotReady
  • Gui_Status_Agent_State_Ready
  • Gui_Status_Agent_State_Unknown
  • Gui_Status_Agent_State_Wrapup_NotReady
  • Gui_Status_Agent_State_Wrapup_Ready
  • Gui_Status_Domain_Name_Mail
  • Gui_Status_Domain_Name_Unknown
  • Gui_Status_Domain_Name_Voice
  • Gui_Status_Prefix
  • MCAL_ERROR_operation_invalidSessionId
  • MCAL_ERROR_operation_sendMsgError
  • MCAL_ERROR_operation_sendMsgError_AgentDeviceChars
  • MCAL_ERROR_operation_timeout
  • Object_Call_OutboundType1
  • Object_Call_OutboundType2
  • Object_Call_OutboundType3
  • Object_Call_OutboundType4
  • Object_Call_OutboundType5
  • Object_Call_OutboundType6
  • Object_Call_OutboundType7
  • Objects_Agent_IWcfEventProcessor_ProcessMessage1
  • Objects_Agent_OnSessionStateChange1
  • Objects_Agent_OnSessionStateChange10
  • Objects_Agent_OnSessionStateChange11
  • Objects_Agent_OnSessionStateChange2
  • Objects_Agent_OnSessionStateChange3
  • Objects_Agent_OnSessionStateChange4
  • Objects_Agent_OnSessionStateChange5
  • Objects_Agent_OnSessionStateChange6
  • Objects_Agent_OnSessionStateChange7
  • Objects_Agent_OnSessionStateChange8
  • Objects_Agent_OnSessionStateChange9
  • Objects_Agent_SelectedCall1
  • Objects_Agent_SelectedNone
  • Objects_Agent_SelectedTask1
  • Objects_Call_CallTypeString1
  • Objects_Call_CallTypeString2
  • Objects_Call_CallTypeString3
  • Objects_Call_CallTypeString4
  • Objects_Call_CallTypeString5
  • Objects_Call_CallTypeString6
  • Objects_Call_CallTypeString7
  • Objects_Call_CallTypeString8
  • Objects_Call_SendUpdateObjectInformation1
  • Objects_Call_SendUpdateObjectInformation2
  • Objects_Call_SendUpdateObjectInformation3
  • Objects_Call_SendUpdateObjectInformation4
  • Objects_Call_SendUpdateObjectInformation5
  • Objects_Call_SendUpdateObjectInformation6
  • Objects_Call_SendUpdateObjectInformation7
  • Objects_Call_SendUpdateObjectInformation8
  • Objects_Call_SendUpdateObjectInformation9
  • Objects_Task_TaskDescription_Mail1
  • Siebel_SiebelRequests_Action_OnTimeout1
  • Siebel_SiebelRequests_Action_ToString1
  • Siebel_SiebelRequests_AgentStartMonitorAction1
  • Siebel_SiebelRequests_OnActionFailure1
  • Siebel_SiebelRequests_OnActionFailure2
  • Siebel_SiebelRequests_OnRequestComplete1
  • Siebel_SiebelRequests_OnRequestFailure1
  • Siebel_SiebelRequests_OnRequestFailure2
  • Siebel_SiebelRequests_OnRequestFailure3
  • Siebel_SiebelRequests_OnRequestFailure4
  • Siebel_SiebelRequests_OnRequestFailure5
  • Siebel_SiebelRequests_OnRequestFailure6
  • Siebel_SiebelRequests_OnTimeout1
  • Siebel_SiebelRequests_OnTimeout2
  • Siebel_SiebelRequests_StartProcessing1
  • Siebel_SiebelRequests_StartProcessing2
  • Siebel_SiebelRequests_StartProcessing3
  • Siebel_SiebelRequests_StartProcessing4
  • Siebel_SiebelRequests_StartProcessing5
  • Siebel_SiebelRequests_StartProcessing6
  • Siebel_SiebelRequests_TaskOffered1
  • State_CallStates_AgentOutboundCampaignCall1
  • State_CallStates_AgentReservedOutbound1
  • State_CallStates_AgentReservedOutbound2
  • State_CallStates_StatusTextOutbound1
  • State_CallStates_TextCallFrom1
  • State_CallStates_TextCallTo1
  • State_CallStates_TextConsultCallTo1
  • State_SystemStates_SystemStateARM
  • State_SystemStates_SystemStateCTI
  • State_SystemStates_SystemStateInstrument
  • State_SystemStates_SystemStateMediaManager
  • State_SystemStates_SystemStateMRI
  • State_SystemStates_SystemStateOfflineState
  • State_SystemStates_SystemStateOnlineState
  • State_SystemStates_SystemStatePeripheral
  • State_SystemStates_SystemStatePG
  • State_SystemStates_SystemStatePIM
  • State_SystemStates_SystemStateReconnectState
  • State_SystemStates_SystemStateUnknown
  • State_SystemStates_SystemStateUnknownState

Configure ConnectMCAL

ECC Arrays

CCE/CCH ECC variables of type array can be used to transmit call data from CCE/CCH to ConnectMCAL and vice versa. ConnectMCAL translates the ECC Arrays into a list of ECC variables and forwards this list to the Communication Toolbar Adapter.

Example Configuration

CCE/CCH

CCE/CCH Configuration of an ECC Variable of Type Array

ConnectMCAL

...
[Config]
...
CtiAttachedDataEccVariableName=user.QA.array3x16[0/3]
...

Setting Call Data from Siebel using ECC Arrays

To set a value in an ECC variable of type array from Siebel, the index-number of the array-element to be changed must be added to the name of the ECC variable.

Example Configuration in Siebel DEF-File

[Command:SetCallData]
DeviceCommand = "SetCallData"
CmdData = "SetCallDataData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"

[CmdData:SetCallDataData]
...
------> Param.ECC.user.QA.array3x16[1]= "SomeData"
...
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"

With the Siebel DEF-file sample configuration above, ConnectMCAL stores the set array-value as followed:

user.array3x16[0]=
user.array3x16[1]=SomeData
user.array3x16[2]=

Make Cisco Peripheral Call Key Available in DeviceEvents

The field 'trackingID' in DeviceEvents sent to Siebel contains an internal call identifier generated by ConnectMCAL. If you additionally need the Cisco Peripheral Call Key call identifier (generated by the CUCM) in the DeviceEvents, it can be made available by a configuration change in the configuration file of ConnectMCAL. The Peripheral Call Key will then appear as 'SYS.PeripheralCallKey' in the ConnectMCAL call events CallDeliveredEvent and CallVarUpdateEvent.

...
[Config]
...
EsFlags=0x00000030
...

The following two flags are available to enable the Peripheral Call Key:

FlagDescription
0x10Add the Peripheral Call Key to ConnectMCAL 'CallDelivered' events. This is required for incoming calls.
0x20Add the Peripheral Call Key to ConnectMCAL 'CallVarUpdate' events. This is required for outgoing calls.
ES-Flags coding

Multiple ES-Flags must be combined bitwise OR!

Supported CTI protocol versions

Depending on Cisco CCE, different CTI protocol versions are supported. The following table outlines what CTI Protocol version is supported in the various CCE versions; it may vary depending on installed patches or ES.

CTI Server VersionCTI Protocol Version
8.0(1) and higher14
11.5(1) and higher20
12.0(1) and higher22
CTI Server Protocol Version

Higher protocol version configured in ConnectMCAL than a Cisco CCE supports is NOT supported.

Siebel DEF-File

The Siebel application itself is highly customizable. You can use the Siebel Visual Basic-like or Java-like scripting language for additional customization. The customizable Siebel database tables can be imported or exported from and to plain text definition files (*.DEF). For more details please refer to the Siebel Communications Server Administration Guide. A sample definition file is copied by the Connects for Siebel Communication Toolbar Adapter Installer into the installation directory.

Displaying Call Information when Incoming Call is Ringing

A common customization is to display data about the ringing call in the status bar before the agent answers the call. Depending on the Cisco CallType you can display different information to the agent, i.e. ANI or a Call- or ECC-Variables. You can find a list of available fields in Parameter passed with CallEvents. To display data in the status bar, the SiebelMethod "Communications Client.ShowStatusText" is used. The sample Siebel definition file shipped with the Connects for Siebel already contains the necessary configuration for this use case as documented in the following extract:

    [EventHandler:RoutedCallReceived]
Filter.callingDevice = "?*"
Filter.callType = "2"
Filter.callDirection = "INCOMING"
DeviceEvent = "CallDelivered"
Response = "OnRoutedCallReceived"
Order = "1"

[EventResponse:OnRoutedCallReceived]
QueryAfterAnswer = "TRUE"
Log = "LogOnRoutedCallReceived"

[EventLog:LogOnRoutedCallReceived]
ServiceMethod = "Communications Client.ShowStatusText"
ServiceParam.Text = "Call to Service {perVar2} from {callingDevice}"
Comments = ""

[EventHandler:ConsultCallReceived]
Filter.callingDevice = "?*"
FilterSpec = "[callType] >= '12' AND [callType] <= '14'"
Filter.callDirection = "INCOMING"
DeviceEvent = "CallDelivered"
Response = "OnConsultCallReceived"
Order = "2"

[EventResponse:OnConsultCallReceived]
QueryAfterAnswer = "TRUE"
Log = "LogOnConsultCallReceived"

[EventLog:LogOnConsultCallReceived]
ServiceMethod = "Communications Client.ShowStatusText"
ServiceParam.Text = "Consult call from {callingDevice}"
Comments = ""

[EventHandler:OutboundCampaignCallReceived]
FilterSpec = "[callType] >= '32' AND [callType] <= '36'"
DeviceEvent = "CallDelivered"
Response = "OnOutboundCampaignCallReceived"
Order = "3"

[EventResponse:OnOutboundCampaignCallReceived]
QueryAfterAnswer = "TRUE"
Log = "LogOnOutboundCampaignCallReceived"

[EventLog:LogOnOutboundCampaignCallReceived]
ServiceMethod = "Communications Client.ShowStatusText"
ServiceParam.Text = "Outbound call to Customer {ECC.BABuddyName}"
Comments = ""

[EventHandler:OtherCallReceived]
Filter.callingDevice = "?*"
Filter.callDirection = "INCOMING"
DeviceEvent = "CallDelivered"
Response = "OnOtherCallReceived"
Order = "10"

[EventResponse:OnOtherCallReceived]
QueryAfterAnswer = "TRUE"
Log = "LogOnOtherCallReceived"

[EventLog:LogOnOtherCallReceived]
ServiceMethod = "Communications Client.ShowStatusText"
ServiceParam.Text = "Call from {callingDevice}"
Comments = ""

Screen Pop on Answered Incoming Call (based on ANI)

A common customization is to pop customer data to the agent and insert an activity record when an agent answers a call. The sample Siebel definition file shipped with the Connects for Siebel already contains the necessary configuration for this use case as documented in the following extract:

    [EventHandler:ScreenTransferCallAnswered]
Filter.SiebelViewBmk = "?*"
Filter.callDirection = "INCOMING"
DeviceEvent = "CallEstablished"
Response = "OnScreenTransferCallAnswered"
Order = "0"

[EventResponse:OnScreenTransferCallAnswered]
QueryAfterAnswer = "TRUE"
Log = "LogOnScreenTransferCallAnswered"
UseCtxData = "TRUE"

[EventLog:LogOnScreenTransferCallAnswered]
AfterWork.'ACD Call Duration' = "{@WorkDuration}"
AfterWork.'Done' = "{@Now}"
AfterWork.'Planned' = "{@WorkStartTime}"
AfterWork.'Started' = "{@WorkStartTime}"
BusComp = "Action"
BusObj = "Action"
Display = "TRUE"
LogField.'Call Id' = "{trackingID}"
LogField.'Planned' = "{@WorkStartTime}"
LogField.'Started' = "{@WorkStartTime}"
LogField.Comment = "Time={@Now},CT={callType},{callingDevice}->{calledDevice}"
LogField.Description = "Screen transferred"
LogField.Type = "Call - Inbound"
Comments = ""

[EventHandler:RoutedCallAnswered]
Filter.callingDevice = "?*"
Filter.callType = "2"
Filter.callDirection = "INCOMING"
DeviceEvent = "CallEstablished"
Response = "OnRoutedCallAnswered"
Order = "1"

[EventResponse:OnRoutedCallAnswered]
QueryAfterAnswer = "TRUE"
QueryBusObj = "Contact"
QueryBusComp = "Contact"
QuerySpec = "'Work Phone #'='{callingDevice:Lookup}'"
SingleView = "Contact Detail View"
MultiView = "Contact List View"
FindDialog = "Contact"
FindField.CSN = "Ask Caller"
SingleLog = "LogRoutedCallContactFound"
MultiLog = "LogRoutedCallMultiContactFound"
FindLog = "LogRoutedCallContactNotFound"
UseCtxData = "TRUE"

[EventLog:LogRoutedCallContactFound]
AfterWork.'ACD Call Duration' = "{@WorkDuration}"
AfterWork.'Done' = "{@Now}"
AfterWork.'Planned' = "{@WorkStartTime}"
AfterWork.'Started' = "{@WorkStartTime}"
BusComp = "Action"
BusObj = "Contact"
Display = "TRUE"
LogField.'Call Id' = "{trackingID}"
LogField.'Planned' = "{@WorkStartTime}"
LogField.'Started' = "{@WorkStartTime}"
LogField.Comment = "Time={@Now},CT={callType},{callingDevice}->
{calledDevice}->{alertingDevice},Redir={lastRedirectionDevice},
V1='{perVar1}',V2='{perVar2}',V3='{perVar3}',V4='{perVar4}',
V5='{perVar5}',V6='{perVar6}',V7='{perVar7}',V8='{perVar8}',
V9='{perVar9}', V10='{perVar10}'"
LogField.Description = "Routed call found contact"
LogField.Type = "Call - Inbound"
ServiceParam.Field = "Id"
ServiceParam.Value = "{Contact.Id}"
WorkTrackingObj.ContactId = "{Contact.Id}"
Comments = ""

[EventLog:LogRoutedCallMultiContactFound]
AfterWork.'ACD Call Duration' = "{@WorkDuration}"
AfterWork.'Done' = "{@Now}"
AfterWork.'Planned' = "{@WorkStartTime}"
AfterWork.'Started' = "{@WorkStartTime}"
BusComp = "Action"
BusObj = "Contact"
Display = "TRUE"
LogField.'Call Id' = "{trackingID}"
LogField.'Planned' = "{@WorkStartTime}"
LogField.'Started' = "{@WorkStartTime}"
LogField.Comment = "Time={\@Now},CT={callType},
{callingDevice}->{calledDevice}->{alertingDevice},Redir={lastRedirectionDevice},V1='{perVar1}',
V2='{perVar2}',V3='{perVar3}',V4='{perVar4}',V5='{perVar5}',V6='{perVar6}',V7='{perVar7}',
V8='{perVar8}',V9='{perVar9}', V10='{perVar10}'"
LogField.Description = "Routed call multiple contacts found"
LogField.Type = "Call - Inbound"
ServiceMethod = "Persistent Customer
Dashboard.CleanDashBoard_UI"
Comments = ""

[EventLog:LogRoutedCallContactNotFound]
AfterWork.'ACD Call Duration' = "{@WorkDuration}"
AfterWork.'Done' = "{@Now}"
AfterWork.'Planned' = "{@WorkStartTime}"
AfterWork.'Started' = "{@WorkStartTime}"
BusComp = "Action"
BusObj = "Contact"
Display = "TRUE"
LogField.'Call Id' = "{trackingID}"
LogField.'Planned' = "{@WorkStartTime}"
LogField.'Started' = "{@WorkStartTime}"
LogField.Comment = "Time={@Now},CT={callType},{callingDevice}->{calledDevice}->{alertingDevice},
Redir={lastRedirectionDevice},V1='{perVar1}',V2='{perVar2}',V3='{perVar3}',V4='{perVar4}',V5='{perVar5}',
V6='{perVar6}',V7='{perVar7}',V8='{perVar8}',V9='{perVar9}', V10='{perVar10}'"
LogField.Description = "Routed call no contact found"
LogField.Type = "Call - Inbound"
ServiceMethod = "Persistent Customer
Dashboard.CleanDashBoard_UI"
Comments = ""

Screen Pop on Answered Incoming Call (based on Service Request Number)

A common customization is to pop service request data to the agent and insert an activity record when an agent answers a call. The sample Siebel definition file shipped with the Connects for Siebel already contains the necessary configuration for this use case as documented in the following extract, but comment out. Example uses perVar6 as Service Request Number provider:

    [EventHandler:InboundCallReceivedWithSRNumber]
Filter.perVar6 = "*"
DeviceEvent = "CallEstablished"
Order = "3"
Response = "OnInboundCallReceivedWithSRNumber"

[EventResponse:OnInboundCallReceivedWithSRNumber]
QueryBusObj = "Service Request"
QueryBusComp = "Service Request"
QuerySpec = "'SR Number'='{perVar6}'"
Log = "LogIncomingCallSRNotFound"
SingleLog = "LogIncomingCallSRFound"
SingleView = "Service Request Detail View"
FindField.CSN = "Ask Caller"
FindDialog = "Service Request"

[EventLog:LogIncomingCallSRNotFound]
AfterWork.'ACD Call Duration' = "{@WorkDuration}"
BusObj = "Action"
BusComp = "Action"
Display = "TRUE"
LogField.Description = "SR not found"
LogField.Comment = "SR Number: {perVar6};Time: {@Now}"
LogField.Type = "Call - Inbound"

[EventLog:LogIncomingCallSRFound]
AfterWork.'ACD Call Duration' = "{@WorkDuration}"
AfterWork.'Started' = "{@WorkStartTime}"
AfterWork.'Planned' = "{@WorkStartTime}"
AfterWork.'Done' = "{@Now}"
AfterWork.'Planned Completion' = "{@Now}"
BusObj = "Service Request"
BusComp = "Action"
Display = "TRUE"
LogField.Description = "Call from {callingDevice} for existing SR"
LogField.Comment = "SR Number: {perVar6};
WorkDuration: {@WorkDuration};Time: {@Now}"
LogField.Type = "Call - Inbound"

Screen Pop on Completed Call Transfer

A possible customization is to pop the transferred screen (of agent 1) on agent 2 when the call transfer is completed. Normally, the screen pop of the transferred screen is done when the consultation call is established. To pop the transferred screen at call transfer completion a new EventHandler must be created that checks for the availability of the Siebel bookmark (Filter.SiebelViewBmk), checks for an incoming call (Filter.callDirection) and uses the DeviceEvent CallVarUpdated. Furthermore, the parameter UseCtxData in the appropriate EventResponse must be set to TRUE.

    [EventHandler:ScreenTransferCallCompleted]
Filter.SiebelViewBmk = "?*"
Filter.callDirection = "INCOMING"
DeviceEvent = "CallVarUpdated"
Response = "OnScreenTransferCallCompleted"
Order = "0"

[EventResponse:OnScreenTransferCallCompleted]
QueryAfterAnswer = "TRUE"
Log = "LogOnScreenTransferCallCompleted"
UseCtxData = "TRUE"

[EventLog:LogOnScreenTransferCallCompleted]
AfterWork.'ACD Call Duration' = "{@WorkDuration}"
AfterWork.'Done' = "{@Now}"
AfterWork.'Planned' = "{@WorkStartTime}"
AfterWork.'Started' = "{@WorkStartTime}"
BusComp = "Action"
BusObj = "Action"
Display = "TRUE"
LogField.'Call Id' = "{trackingID}"
LogField.'Planned' = "{@WorkStartTime}"
LogField.'Started' = "{@WorkStartTime}"
LogField.Comment = "Time={@Now},CT={callType},{callingDevice}->{calledDevice}->{alertingDevice},
Redir={lastRedirectionDevice},V1='{perVar1}',V2='{perVar2}',V3={perVar3},V4={perVar4},V5={perVar5},
V6='{perVar6}',V7='{perVar7}',V8={perVar8},V9={perVar9},V10={perVar10}"
LogField.Description = "Screen transferred"
LogField.Type = "Call - Inbound"
Comments = ""

Customized Work Item Description

It is also possible to overwrite the work item text which is shown in the dropdown-menu of the Toolbar. The EventHandler simply overwrites the work item description, so to be consistent you need to overwrite the description every time it is written by the driver (e.g. wrap-up, after a conference). We recommend storing the customized description in a custom work-tracking object, so you can reuse it in other event handlers. The sample Siebel definition file shipped with the Connects for Siebel already contains the necessary configuration for this use case as documented in the following extract:

    [EventHandler:OtherCallAnswered]
Filter.callingDevice = "?*"
Filter.callDirection = "INCOMING"
DeviceEvent = "CallEstablished"
Response = "OnOtherCallAnswered"
Order = "10"

[EventResponse:OnOtherCallAnswered]
QueryAfterAnswer = "TRUE"
QueryBusObj = "Contact"
QueryBusComp = "Contact"
QuerySpec = "'Work Phone #'='{callingDevice:Lookup}'"
SingleView = "Contact Detail View"
MultiView = "Contact List View"
FindDialog = "Contact"
FindField.CSN = "Ask Caller"
SingleLog = "LogOtherCallContactFound"
MultiLog = "LogOtherCallMultiContactFound"
FindLog = "LogOtherCallContactNotFound"
UseCtxData = "TRUE"

[EventLog:LogOtherCallContactFound]
AfterWork.'ACD Call Duration' = "{@WorkDuration}"
AfterWork.'Done' = "{@Now}"
AfterWork.'Planned' = "{@WorkStartTime}"
AfterWork.'Started' = "{@WorkStartTime}"
BusComp = "Action"
BusObj = "Contact"
Display = "TRUE"
LogField.'Call Id' = "{trackingID}"
LogField.'Planned' = "{@WorkStartTime}"
LogField.'Started' = "{@WorkStartTime}"
LogField.Comment = "Time=@Now},CT={callType},{callingDevice}->{calledDevice}->{alertingDevice},
Redir={lastRedirectionDevice},V1='{perVar1}',V2='{perVar2}',V3='{perVar3}',V4='{perVar4}',
V5='{perVar5}',V6='{perVar6}',V7='{perVar7}',V8='{perVar8}',V9='{perVar9}',V10='{perVar10}'"
LogField.Description = "Other call contact found"
LogField.Type = "Call - Inbound"
ServiceMethod = "Persistent Customer Dashboard.Update
Dashboard from CTI"
ServiceParam.Field = "Id"
ServiceParam.Value = "{Contact.Id}"
WorkTrackingObj.ContactId = "{Contact.Id}"
;WorkTrackingObj.Description = "Call from {Contact.Last Name}
{Contact.First Name}"
Comments = ""

Displaying Language Independent Logout Notification with logout reason

By default, the b+s Connects for Siebel sends a language dependent status text (see chapter Customizing Status Text Output) to Siebel which is displayed on the Communications Toolbar. This text doesn't contain the logout reason. With the following changes to the 'AgentLoggedOff' DeviceEvent in the Siebel definition file a language independent notification including the CCE logout reason is displayed to the agent when he is logged out. Make also sure that the bit for the DeviceEvent 'AgentLoggedOff' is set in the 'AgentEventMask' (see chapter Driver Parameters). Please note that the following extract is part of the sample Siebel definition file shipped with the b+s Connects for Siebel as of version 2.0. It is no longer part of the sample Siebel definition file shipped with b+s Connects for Siebel as of version 2.0.1 and later since the logout reason is then also displayed in default notification without this handler.

    [EventHandler:AgentLoggedOff]
...
DeviceEvent = "AgentLoggedOff"
Response = "OnAgentLoggedOff"

[EventResponse:OnAgentLoggedOff]
QueryAfterAnswer = "TRUE"
Log = "LogOnAgentLoggedOff"

[EventLog:LogOnAgentLoggedOff]
ServiceMethod = "Communications Client.ShowStatusText"
ServiceParam.Text = "{channel} agent was logged out, reason:{AgentLogoutReasonCode}"
Comments = "Logout event"

Request Wrap-Up

By default, the Command that is used to request wrap-up, 'AgentAfterCallWork', remains enabled. This causes that the menu item in the Siebel Communications Toolbar as well as a potentially added custom button on the Siebel Communications Toolbar remains active. The reason for this is that the Communication Toolbar Adapter does not send a so called CacheCommandInformation to Siebel after it received the invocation of the DeviceCommand 'AgentSetAfterCallWorkVoice' from Siebel. The CacheCommandInformation is used by the Communication Toolbar Adapter to let Siebel know which DeviceCommands are enabled and which are disabled. Since Cisco CCE (or more precisely the CTI Server) allows that the b+s Connects for Siebel can send the request for requesting wrap-up multiple times during the same call, the current behavior of the Communication Toolbar Adapter to not disable the DeviceCommand 'AgentSetAfterCallWorkVoice' automatically by using the CacheCommandInformation is expected.

To disable the request wrap-up button, or more precisely the Command 'AgentAfterCallWork', after it was called, a FilterSpec combined with a custom work item attribute must be added in the Siebel Communications Configuration as shown in the following sample configuration:

    [Command:AgentAfterCallWork]
FilterSpec = "[@SelectedWorkItem:RequestWrapup] = 'Enabled'"
CmdData = "AgentAfterCallWorkData"
DeviceCommand = "AgentSetAfterCallWorkVoice"
Hidden = "TRUE"

[CmdData:AgentAfterCallWorkData]
WorkTrackingObj.RequestWrapup = "Disabled"

Be aware that if the custom work item attribute 'RequestWrapup' does not yet exist when the Command 'AgentAfterCallWork' is called, an error is logged by Siebel. To prevent this from happening, the custom work item attribute must be created when the call arrives at the agent, i.e. in the respective EvenHandler. Here is an example where the EventHandler 'RoutedCallReceived' is used.

    [EventHandler:RoutedCallReceived]
Filter.callDirection = "INCOMING"
Filter.callType = "2"
Filter.callingDevice = "?*"
DeviceEvent = "CallDelivered"
Response = "OnRoutedCallReceived"
Order = "1"

[EventResponse:OnRoutedCallReceived]
QueryAfterAnswer = "TRUE"
Log = "LogOnRoutedCallReceived"

[EventLog:LogOnRoutedCallReceived]
ServiceMethod = "Communications Client.ShowStatusText"
ServiceParam.Text = "Call to Service {perVar2} from {callingDevice}"
WorkTrackingObj.RequestWrapup = "Enabled"

  1. The key includes a typo. As it is coded like this you need to copy the key exactly as shown in this document.