Outbound Options Capabilities
Changes for Scheduling a Callback in Siebel UI
Preview Mode
The following commands exist for the Cisco Outbound Option in preview mode:
- PreviewCallAccept
- PreviewCallReject
- PreviewCallRejectClose
- ClassifyOutboundCall
The device commands can be found in the following section of the Connects for Siebel's default Siebel Definition (DEF-file):
;---------------------------------------------------------------------------------------------------
; Device-Commands for outbound option calls
[Command:PreviewCallAccept]
DeviceCommand = "PreviewCallAccept"
Description = "Accept Preview call"
CmdData = "PreviewCallAcceptData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:PreviewCallAcceptData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
[Command:PreviewCallReject]
DeviceCommand = "PreviewCallReject"
Description = "Reject Preview call"
CmdData = "PreviewCallRejectData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:PreviewCallRejectData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
[Command:PreviewCallRejectClose]
DeviceCommand = "PreviewCallRejectClose"
CmdData = "PreviewCallRejectCloseData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:PreviewCallRejectCloseData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
[Command:ClassifyAsVoice]
DeviceCommand = "ClassifyOutboundCall"
CmdData = "ClassifyAsVoiceData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:ClassifyAsVoiceData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
Param.classifyasvoice = "1"
[Command:ClassifyAsAnsweringmachine]
DeviceCommand = "ClassifyOutboundCall"
CmdData = "ClassifyAsAnsweringmachineData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:ClassifyAsAnsweringmachineData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
Param.classifyasansweringmachine = "1"
[Command:ClassifyAsFax]
DeviceCommand = "ClassifyOutboundCall"
CmdData = "ClassifyAsFaxData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:ClassifyAsFaxData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
Param.classifyasfax = "1"
[Command:ClassifyAsInvalid]
DeviceCommand = "ClassifyOutboundCall"
CmdData = "ClassifyAsInvalidData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:ClassifyAsInvalidData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
Param.classifyasinvalid = "1"
[Command:ClassifyAsNotAtHome]
DeviceCommand = "ClassifyOutboundCall"
CmdData = "ClassifyAsNotAtHomeData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:ClassifyAsNotAtHomeData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
Param.classifyasnotathome = "1"
[Command:ClassifyAsWrongNumber]
DeviceCommand = "ClassifyOutboundCall"
CmdData = "ClassifyAsWrongNumberData"
Hidden = "TRUE"
CmdChannelOnFocus = "TRUE"
[CmdData:ClassifyAsWrongNumberData]
Param.trackingId = "{@SelectedWorkItem:DriverWorkTrackID}"
Param.classifyaswrongnumber = "1"
Commands Mapped to Existing Buttons
To accept or reject a preview call with a simple click, two commands are mapped to the "Answer-Call" and "Release-Call" buttons:
The command "PreviewCallAccept" was added as the 3rd sub-command in the AnswerCallGroup command section.
[Command:AnswerCallGroup]
SubCommand_1 = "AnswerCall"
SubCommand_2 = "AgentEndAfterCallWorkReady"
SubCommand_3 = "PreviewCallAccept"
Description = "Answer call"
CmdData = ""
Hidden = "TRUE"
The command "PreviewCallReject" was added as the 1st sub-command in the ReleaseCallGroup command section.
[Command:ReleaseCallGroup]
SubCommand_1 = "PreviewCallReject"
SubCommand_2 = "ReleaseCall"
SubCommand_3 = "AgentEndAfterCallWorkNotReady"
CmdData = ""
Hidden = "TRUE"
Commands Added to the Menu
The three commands to handle preview calls are added as menu selections in Tools Communications in the submenu "Dialer calls":
[Command:OutboundOptionGroupInMenu]
SubCommand_1 = "PreviewCallAccepInMenu"
SubCommand_2 = "PreviewCallRejectInMenu"
SubCommand_3 = "PreviewCallRejectCloseInMenu"
SubCommand_4 = "ClassifyOutboundCallInMenu"
MenuPosition = "60"
Title = "Dialer calls"
Description = "Dialer calls"
CmdData = ""
[Command:PreviewCallAcceptInMenu]
SubCommand_1 = "PreviewCallAccept"
Title = "Accept Preview Call"
Description = "Accept Preview Call"
MenuPosition = "60.1"
[Command:PreviewCallRejectInMenu]
SubCommand_1 = "PreviewCallReject"
Title = "Reject Preview Call"
Description = "Reject Preview Call"
MenuPosition = "60.2"
[Command:PreviewCallRejectCloseInMenu]
SubCommand_1 = "PreviewCallRejectClose"
Title = "Reject/Close Preview Call"
Description = "Reject/Close Preview Call"
MenuPosition = "60.3"
[Command:ClassifyOutboundCallInMenu]
SubCommand_1 = "ClassifyAsVoiceInMenu"
SubCommand_2 = "ClassifyAsAnsweringmachineInMenu"
SubCommand_3 = "ClassifyAsFaxInMenu"
SubCommand_4 = "ClassifyAsInvalidInMenu"
SubCommand_5 = "ClassifyAsNotAtHomeInMenu"
SubCommand_6 = "ClassifyAsWrongNumberInMenu"
Title = "Classify Outbound Call"
Description = "Classify Outbound Call"
MenuPosition = "60.5"
[Command:ClassifyAsVoiceInMenu]
SubCommand_1 = "ClassifyAsVoice"
Title = "Classify As Voice"
Description = "Classify As Voice"
MenuPosition = "60.5.1"
[Command:ClassifyAsAnsweringmachineInMenu]
SubCommand_1 = "ClassifyAsAnsweringmachine"
Title = "Classify As Answering Machine"
Description = "Classify As Answering Machine"
MenuPosition = "60.5.2"
[Command:ClassifyAsFaxInMenu]
SubCommand_1 = "ClassifyAsFax"
Title = "Classify As Fax"
Description = "Classify As Fax"
MenuPosition = "60.5.3"
[Command:ClassifyAsInvalidInMenu]
SubCommand_1 = "ClassifyAsInvalid"
Title = "Classify As Invalid"
Description = "Classify As Invalid"
MenuPosition = "60.5.4"
[Command:ClassifyAsNotAtHomeInMenu]
SubCommand_1 = "ClassifyAsNotAtHome"
Title = "Classify As Not At Home"
Description = "Classify As Not At Home"
MenuPosition = "60.5.5"
[Command:ClassifyAsWrongNumberInMenu]
SubCommand_1 = "ClassifyAsWrongNumber"
Title = "Classify As Wrong Number"
Description = "Classify As Wrong Number"
MenuPosition = "60.5.6"
Event Mapping to Preview Customer Contact
To open the Customer Contact on a preview call, an EventHandler for the
"CallVarUpdated" event on calls with the corresponding call type was added.
Please be aware that you should modify the EventLog section to write what you
need into the Call Activity record, i.e. in the Description and Comment fields.
[EventHandler:PreviewOutboundCampaignReservationCall]
Filter.callingDevice = "?*"
FilterSpec = "[callType] >= '27' AND [callType] <= '31' AND NOT [callType] ='29' AND [ECC.BAResponse] IS NULL"
Filter.callDirection = "INCOMING"
DeviceEvent = "CallVarUpdated"
Response = "OnPreviewCampaignCallReserved"
Order = "1"
[EventResponse:OnPreviewCampaignCallReserved]
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"
Event Mapping to Log a Call Activity Record
To write a Call Activity record, an EventHandler for the "CallEstablished" event
on calls with the corresponding call type was added.
Please be aware that you should modify the EventLog section to write what you
need into the Call Activity record.
[EventHandler:PreviewOutboundCampaignCallAnswered]
FilterSpec = "[callType] >= '32' AND [callType] <= '37' AND NOT [callType] = '34'"
DeviceEvent = "CallEstablished"
Response = "OnPreviewOutboundCampaignCallAnswered"
Order = "4"
[EventResponse:OnPreviewOutboundCampaignCallAnswered]
QueryAfterAnswer = "TRUE"
QueryBusObj = "Contact"
QueryBusComp = "Contact"
QuerySpec = "'Work Phone #'='{callingDevice:Lookup}'"
SingleLog = "LogPreviewCampaignCallContactFound"
MultiLog = "LogPreviewCampaignCallMultiContactFound"
Log = "LogPreviewCampaignCallContactNotFound"
UseCtxData = "TRUE"
[EventLog:LogPreviewCampaignCallContactFound]
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},..."
LogField.Description = "Preview Campaign call contact found"
LogField.Type = "Call - Outbound"
ServiceMethod = "Persistent Customer Dashboard.Update Dashboard from CTI"
ServiceParam.Field = "Id"
ServiceParam.Value = "{Contact.Id}"
Comments = ""
[EventLog:LogPreviewCampaignCallMultiContactFound]
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},..."
LogField.Description = "Preview Campaign call multiple contacts found"
LogField.Type = "Call - Outbound"
ServiceMethod = "Persistent Customer Dashboard.CleanDashBoard_UI"
Comments = ""
[EventLog:LogPreviewCampaignCallContactNotFound]
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},..."
LogField.Description = "Preview Campaign call no contact found"
LogField.Type = "Call - Outbound"
ServiceMethod = "Persistent Customer Dashboard.CleanDashBoard_UI"
Comments = ""
Predictive / Progressive Mode
Event Mapping to Open the Customer Contact and Log Call Activity
To open the customer contact and write a call activity record, an EventHandler
for the "CallDelivered" event on calls with the corresponding call type was
added.
Please be aware that you should modify the EventLog section to write what you
need into the Call Activity record, i.e. in the Description and Comment fields.
[EventHandler:OutboundCampaignCallAnswered]
Filter.callType = "34"
DeviceEvent = "CallDelivered"
Response = "OnOutboundCampaignCallAnswered"
Order = "3"
[EventResponse:OnOutboundCampaignCallAnswered]
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 = "LogCampaignCallContactFound"
MultiLog = "LogCampaignCallMultiContactFound"
FindLog = "LogCampaignCallContactNotFound"
UseCtxData = "TRUE"
[EventLog:LogCampaignCallContactFound]
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},..."
LogField.Description = "Campaign (predictive/progressive) call contact found"
LogField.Type = "Call - Outbound"
ServiceMethod = "Persistent Customer Dashboard.Update Dashboard from CTI"
ServiceParam.Field = "Id"
ServiceParam.Value = "{Contact.Id}"
Comments = ""
[EventLog:LogCampaignCallMultiContactFound]
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},..."
LogField.Description = "Campaign (predictive/progressive) multiple contacts found"
LogField.Type = "Call - Outbound"
ServiceMethod = "Persistent Customer Dashboard.CleanDashBoard_UI"
Comments = ""
[EventLog:LogCampaignCallContactNotFound]
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},..."
LogField.Description = "Campaign (predictive/progressive) call no contact found"
LogField.Type = "Call - Outbound"
ServiceMethod = "Persistent Customer Dashboard.CleanDashBoard_UI"
Comments = ""
Connects for Siebel Default Definition File for Cisco Outbound Option
Step-by-Step tutorial for Siebel Tools
It's highly recommended to perform the following changes within this section
on a local Siebel database and to check in the changes finally to the server
database.
The following instructions are all described working with the local Siebel
database.
Prerequisites
Open Siebel Tools (1), enter login credentials for a connection to the local Siebel database (2) and login by press the button "OK".

Configure the "Object Explorer" view permissions, to see all needed components and their fields during the configuration of this web service.
a. Open "Development Tools Options" dialog window over menu "View > Options…" (1) and change to tab "Object Explorer" (2)
b. Select in addition the following objects (if not yet enabled).
Object Value Applet (with additional sub-tree object "Applet User Prop") ENABLED
Step 1: Lock the project containing the applet
The changes we will make in this tutorial will modify the "Activity Form Applet" from the project "Activity (SSE)", so first check the current state from the Siebel server and lock the project "Activity (SSE)":
Select the record "Project" in the "Object Explorer" view (1), choose the project record "Activity (SSE)" (2) and lock the project by enabling the parameter "Locked" (3).

Step 2: Set filter for project specific overview
Open project list field on object explorer view (1) and select project "Activity (SSE)" (2) or alternatively project "** My Locked Projects **".

Step 3: Add Fields and Buttons to the Applet
Edit corresponding applet:
First, select the record "Applet" in the "Object Explorer" view (1). Then, select the record "Activity Form Applet" in the applets list (2) and choose "Edit Web Layouts" on context menu of the record (3).

Tide up view hiding the currently not used windows:
Press "auto hide" icon of each not used window (1) to collapse the window (2)

Scale down the existing fields and move them leftwards (1) to create space for new fields (2).

Add a "FormSection" web control element with the caption "Scheduled Callback":
Open window "Palettes" (1) and pull a web control element "FormSection" per drag & drop method on the applet form (2). Then, open the context menu on the new element and choose "View Properties Window" (3). On the "Properties" window configure value "Scheduled Callback" for the parameter "Caption – String Override" (4) and configure value "20" for the parameter "HTML Height" (5).

Move the "Due" field under the new form section element and label it with "Time and Date":
Mark the text element "Due" (incl. label field) and move it under the new form section element (1). Then, select the text field (2) and configure "Time and Date" as new value for the parameter "Caption – String Override" on the window "Properties" (3).

Add a "Field" web control element with the caption "Call Me Phone No.":
Open again window "Palettes" (1) and pull a web control element "Field" per drag & drop method on the applet form (2). Then, open the context menu on the new element and choose "View Properties Window" (3) again and configure value "Call Me Phone No." for the parameters "Caption – String Override" (4) and "Field" (5) on the "Properties" window.

Add a "Label" web control element with the caption "Phone Number:":
Open again window "Palettes" (1) and pull a web control element "Label" per drag & drop method on the applet form (2). Then, open the context menu on the new element and choose "View Properties Window" (3) again and configure value "Phone Number:" for the parameter "Caption – String Override" (4) on the "Properties" window.

Add two new "Button" web control elements with the captions "Request" and "Cancel":
Open again window "Palettes" (1) and pull two web control elements "Button" per drag & drop method on the applet form (2).
Then, open the context menu on one of the new elements and choose "View Properties Window" (3).

Configure the following values on the "Properties" window:Button 1:
Parameter Value Caption – String Override Request Method Invoked ScheduleCallback Text Alignment Center Button 2:
Parameter Value Caption – String Override Cancel Method Invoked CancelCallback Text Alignment Center Save and close the editor.
Step 4: Add Named Methods to the Applet
Now we add "Named Methods" to the applet that will be called by the two buttons added in the previous step.
Open "Applet User Prop" list:
First, select the record "Applet" in the "Object Explorer" view (1). Then, select the record "Activity Form Applet" in the applets list (2) and finally select "Applet User Prop" subtree record of "Applet" (3).

Add the following applet user properties opening the context menu in the "Applet User Properties" window and choose "New Record" (1):

Request Button:
Name Value Named Method 1: ScheduleCallback 'INVOKE','WriteRecord' Named Method 2: ScheduleCallback 'INVOKESVC', 'Communications Client', 'ScheduleCallbackFromActivity' Named Method 3: ScheduleCallback 'INVOKESVC', 'Communications Client', 'ShowStatusText', 'Text', '"Callback is scheduled."' Additional information:
- "User Property 1" saves the entered data in the fields to database.
- "User Property 2" searches for and executes the command "ScheduleCallbackFromActivity", which must be defined in the definition file.
- "User Property 3" displays a confirmation message to the agent.
Cancel Button:
Parameter Value Named Method 1: CancelCallback 'INVOKESVC', 'Communications Client', 'CancelCallbackFromActivity' Named Method 2: CancelCallback 'INVOKESVC', 'Communications Client', 'ShowStatusText', 'Text', '"Scheduled callback is cancelled."' Additional information:
"User Property 1" searches for and executes the command "CancelCallbackFromActivity", which must be defined in the definition file.
"User Property 2" displays a confirmation message to the agent.

Step 5: Compile Project
Open record "Project" (1) and unlock the project "Activity (SSE)" (2) by disabling parameter "Locked".

Navigate to menu "Tools > Check In…" (1) and verify if there is something project "Account (SSE)" relevant to upload to the server database.
If yes, select project object(s) and press "Check In". Otherwise, press "Cancel".
Get the new Siebel resource file (.srf) by compiling all projects:
infoDo not compile or modify the default repository that Siebel Tools uses. This file is locked because the Siebel Tools client is currently reading it. If you attempt to compile this repository, then Siebel Tools displays an error message.
To identify the repository you must compile:
a. Use a text editor to open the application configuration file "tools.cfg" which is located in the directory "SIEBEL_TOOLS_ROOT\bin\language_code
b. In the Siebel section, examine the parameter "RepositoryFile" to determine the repository that it references (siebel_sia.srf or siebel.srf).Navigate to menu "Tools > Compile Projects…" (1), select option "All projects" (2), choose repository path & filename (3) and press "Compile" to generate new resource file (4).
Step 6: Deploy Project
Stop the "Siebel Server" service on the Siebel application server(s).

Overwrite the current .srf file on the Siebel application server(s) with the just new compiled .srf file.
In general the .srf files on the Siebel application server(s) are located under the following path:
C:\<siebel_installation_folder>\siebelsrv\OBJECTS\<language>\infoMake a copy of the current .srf file before the replacement.
Start the "Siebel Server" service on the Siebel application server(s) again.
