omni-channel developer guide · apex triggers are supported with agentwork. associated objects this...

84
Omni-Channel Developer Guide Version 49.0, Summer 20 @salesforcedocs Last updated: June 8, 2020

Upload: others

Post on 06-Aug-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Omni-Channel DeveloperGuide

Version 49.0, Summer ’20

@salesforcedocsLast updated: June 8, 2020

Page 2: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

© Copyright 2000–2020 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com, inc.,as are other names and marks. Other marks appearing herein may be trademarks of their respective owners.

Page 3: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

CONTENTS

Chapter 1: Omni-Channel Developer Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Omni-Channel SOAP API Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2AgentWork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3AgentWorkSkill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9OmniSupervisorConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11OmniSupervisorConfigGroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12OmniSupervisorConfigProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13OmniSupervisorConfigUser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14PendingServiceRouting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15PresenceConfigDeclineReason . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19PresenceDeclineReason . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20PresenceUserConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21PresenceUserConfigProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24PresenceUserConfigUser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24QueueRoutingConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25ServiceChannel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28ServiceChannelFieldPriority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31ServiceChannelStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32ServicePresenceStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33ServiceResource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34SkillRequirement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38UserServicePresence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Omni-Channel Metadata API Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Omni-Channel Objects for the Salesforce Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Omni-Channel Objects for the Salesforce Console Integration Toolkit . . . . . . . . . . . . . . . 43Omni-Channel Objects for the Lightning Console JavaScript API . . . . . . . . . . . . . . . . . . 59

External Routing for Omni-Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Technical Architecture and Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Integrate External Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Expected Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Page 4: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in
Page 5: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

CHAPTER 1 Omni-Channel Developer Guide

Customize your Omni-Channel records and console integration with Omni-Channel API objects andconsole methods.

In this chapter ...

• Omni-Channel SOAPAPI Objects

• Omni-ChannelMetadata API Types

• Omni-ChannelObjects for theSalesforce Console

• External Routing forOmni-Channel

1

Page 6: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Omni-Channel SOAP API Objects

Use SOAP API to create, retrieve, update or delete records, such as accounts, leads, and custom objects. The SOAP API includes severalobjects that let you control and customize your Omni-Channel records, including Omni-Channel users, routing configurations, andstatuses.

If you need more information on Salesforce’s SOAP API, see the SOAP API Developer Guide.

AgentWork

Represents a work assignment that’s been routed to an agent. This object is available in API version 32.0 and later.

AgentWorkSkill

Represents a skill used to route a work assignment to an agent. AgentWorkSkill is used for reporting and represents the result of arouting decision. This object is available in API version 42.0 and later.

OmniSupervisorConfig

Represents a configuration that determines a user’s Omni-Channel Supervisor settings. This object is available in API version 41.0and later.

OmniSupervisorConfigGroup

Represents a public group assigned to the Omni-Channel Supervisor configuration that’s visible to a supervisor user. This object isavailable in API version 41.0 and later.

OmniSupervisorConfigProfile

Represents a configuration that determines the Omni-Channel Supervisor settings that are assigned to users who are assigned to aspecific profile. User-level configurations override profile-level configurations. This object is available in API version 41.0 and later.

OmniSupervisorConfigUser

Represents a configuration that determines the Omni-Channel Supervisor settings that are assigned to a user. User-level configurationsoverride profile-level configurations. This object is available in API version 41.0 and later.

PendingServiceRouting

Represents a work assignment that’s waiting to be routed. This object is available in API version 40.0 and later.

PresenceConfigDeclineReason

Represents the settings for a decline reason that a presence user provides when declining work. This object is available in API version37.0 and later.

PresenceDeclineReason

Represents an Omni-Channel decline reason that agents can select when declining work requests. This object is available in APIversion 37.0 and later.

PresenceUserConfig

Represents a configuration that determines a presence user’s settings. This object is available in API version 32.0 and later.

PresenceUserConfigProfile

Represents a configuration that determines the settings that are assigned to presence users who are assigned to a specific profile.User-level configurations override profile-level configurations. This object is available in API version 32.0 and later.

PresenceUserConfigUser

Represents a configuration that determines the settings that are assigned to a presence user. These user-level configurations overrideprofile-level configurations. This object is available in API version 32.0 and later.

QueueRoutingConfig

Represents the settings that determine how work items are routed to agents. This object is available in API version 32.0 and later.

2

Omni-Channel SOAP API ObjectsOmni-Channel Developer Guide

Page 7: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

ServiceChannel

Represents a channel of work items that are received from your organization—for example, cases, chats, or leads. This object isavailable in API version 32.0 and later.

ServiceChannelFieldPriority

Represents a secondary routing priority field-value mapping. This object is available in API version 47.0 and later.

ServiceChannelStatus

Represents the status that’s associated with a specific service channel. This object is available in API version 32.0 and later.

ServicePresenceStatus

Represents a presence status that can be assigned to a service channel. This object is available in API version 32.0 and later.

ServiceResource

Represents a service technician or service crew in field service in Field Service Lightning and Lightning Scheduler. This object isavailable in API version 38.0 and later.

SkillRequirement

Represents a skill that is required to complete a particular task in Field Service Lightning and Lightning Scheduler. Skill requirementscan be added to work types, work orders, and work order line items in Field Service and Lightning Scheduler. This object is availablein API version 38.0 and later. You also can add skill requirements to work items in Omni-Channel skills-based routing using API version42.0 and later.

UserServicePresence

Represents a presence user’s real-time presence status. This object is available in API version 32.0 and later.

AgentWorkRepresents a work assignment that’s been routed to an agent. This object is available in API version 32.0 and later.

Supported Callscreate(), delete(), describeSObjects(), getDeleted(), getUpdated(), query(), retrieve(),undelete(), update(), upsert()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

TypedateTime

AcceptDateTime

PropertiesFilter, Nillable, Sort

DescriptionIndicates when the work item was accepted.

3

AgentWorkOmni-Channel Developer Guide

Page 8: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typeint

ActiveTime

PropertiesFilter, Group, Nillable, Sort

DescriptionThe amount of time an agent actively worked on the work item. Tracks when the item isopen and in focus in the agent’s console.

Typedouble

AgentCapacityWhenDeclined

PropertiesFilter, Nillable, Sort

DescriptionThe agent’s capacity when declining work, either explicitly or through push timeout.

TypedateTime

AssignedDateTime

PropertiesFilter, Nillable, Sort

DescriptionIndicates when the work item was assigned to an agent,

TypedateTime

CancelDateTime

PropertiesFilter, Nillable, Sort

DescriptionIndicates when the work item was canceled.

Typepercent

CapacityPercentage

PropertiesCreate, Filter, Nillable, Sort

DescriptionThe percentage of an agent’s capacity for work items that’s consumed by a specific type ofwork item from this service channel.

When an agent’s combined work items reach 100%, the agent won’t receive new work itemsuntil there is enough open capacity for more work. For example, if you give phone calls acapacity percentage of 100, an agent on a call doesn’t receive new work items until thecall ends.

4

AgentWorkOmni-Channel Developer Guide

Page 9: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typedouble

CapacityWeight

PropertiesCreate, Filter, Nillable, Sort

DescriptionThe amount of an agent’s capacity for work items that’s consumed by a work item from thisservice channel.

For example, if cases are assigned a capacity weight of 2, an agent with a capacity of 6 canaccept up to 3 cases before the agent is at capacity and can’t receive new work items.

TypedateTime

CloseDateTime

PropertiesFilter, Nillable, Sort

DescriptionIndicates when the work item was closed.

TypedateTime

DeclineDateTime

PropertiesFilter, Nillable, Sort

DescriptionDate and time when the agent declined this record.

Typestring

DeclineReason

PropertiesFilter, Group, Nillable, Sort

DescriptionThe provided reason for why an agent declined the work request.

Typeint

HandleTime

PropertiesFilter, Group, Nillable, Sort

DescriptionThe amount of time an agent had the work item open. Calculated by Close Time –Accepted Time.

TypeID

Id

5

AgentWorkOmni-Channel Developer Guide

Page 10: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

PropertiesDefaulted on create, Filter, Group, idLookup, Sort

DescriptionThe ID of the AgentWork object.

Typeboolean

IsDeleted

PropertiesDefaulted on create, Filter, Group, Sort

DescriptionIndicates whether the record has been moved to the Recycle Bin (true) or not (false).

Typestring

Name

PropertiesAutonumber, Defaulted on create, Filter, idLookup, Sort

DescriptionAn automatically generated ID number that identifies the record.

Typereference

OriginalGroupId

PropertiesFilter, Group, Nillable, Sort

DescriptionThe ID of the queue that the work assignment was originally routed to.

Typereference

OriginalQueueId

PropertiesFilter, Group, Nillable, Sort

DescriptionThe ID of the queue that the work assignment was originally routed to. Due to API changes,OriginalQueueId is no longer recommended. Use OriginalGroupId instead.

Typereference

PreferredUserId

PropertiesFilter, Group, Nillable, Sort

DescriptionThe ID of the preferred user to handle the work. This field is available in API v46.0 and later.

6

AgentWorkOmni-Channel Developer Guide

Page 11: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typeint

PushTimeout

PropertiesFilter, Group, Nillable, Sort

DescriptionThe number of seconds set for push timeout. 0 is returned when push timeout isn’t enabled.Available in API version 36.0 and later.

TypedateTime

PushTimeoutDateTime

PropertiesFilter, Nillable, Sort

DescriptionIndicates when the push timeout event occurred. Available in API version 36.0 and later.

TypedateTime

RequestDateTime

PropertiesFilter, Nillable, Sort

DescriptionIndicates when the work was requested.

Typeint

SecondaryRoutingPriority

PropertiesFilter, Group, Nillable, Sort

DescriptionIndicates the secondary routing priority.

Typereference

ServiceChannelId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the service channel that’s associated with the work assignment.

Typeboolean

ShouldSkipCapacityCheck

PropertiesCreate, Defaulted on create, Filter, Group, Sort

7

AgentWorkOmni-Channel Developer Guide

Page 12: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

DescriptionIndicates whether to skip checking an agent’s available capacity (true) or not (false)when an externally routed work item is created. This field is used when agents cansimultaneously handle work from both Omni-Channel queues and queues using externalrouting.

When true, the receiving agent can exceed their set capacity to accept the item, but theydon’t receive more Omni-Channel routed work. When false, the receiving agent can’texceed their set capacity and must have enough open capacity to accept the item.

Typeint

SpeedToAnswer

PropertiesFilter, Group, Nillable, Sort

DescriptionThe amount of time between when the work was requested and when an agent acceptedit.

Typepicklist

Status

PropertiesFilter, Group, Restricted picklist, Sort

DescriptionThe working status of the work item. Valid values are:

• Assigned – The item is assigned to the agent but hasn’t been opened.

• Opened – The agent opened the item.

• Unavailable – The item was assigned to the agent but the agent became unavailable(went offline or lost connection).

• Declined – The item was assigned to the agent but the agent explicitly declined it.

• DeclinedOnPushTimeout – The item was declined because push time-out is enabledand the item request timed out with the agent.

• Closed – The item is closed.

• Canceled – The item no longer needs to be routed. For example: a chat visitor cancelstheir Omni-Channel routed chat request before it reaches an agent.

• Transferred–The item was transferred from an agent to another agent, queue, or skill.

Typereference

UserId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the user that the work item was assigned to.

8

AgentWorkOmni-Channel Developer Guide

Page 13: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typereference

WorkItemId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the object that’s routed to the agent through Omni-Channel.

UsageAgentWork records can only be deleted if they have the status Closed, Declined, or Unavailable. They can’t be deleted if their statusis Assigned or Opened because they’re active in Omni-Channel.

AgentWork records have the status Assigned when they’re created. Once created, the record is automatically pushed to the assignedagent.

While the metadata for AgentWork indicates support for upsert() and update(), these calls aren’t used with AgentWorkbecause none of its fields can be updated.

Apex triggers are supported with AgentWork.

Associated ObjectsThis object has the following associated objects. Unless noted, they are available in the same API version as this object.

AgentWorkOwnerSharingRuleSharing rules are available for the object.

AgentWorkShareSharing is available for the object.

AgentWorkSkillRepresents a skill used to route a work assignment to an agent. AgentWorkSkill is used for reporting and represents the result of a routingdecision. This object is available in API version 42.0 and later.

Supported Callsdelete(), describeSObjects(), getDeleted(), getUpdated(), query(), retrieve(), undelete()

Special Access RulesTo access this object, Omni-Channel must be enabled.

9

AgentWorkSkillOmni-Channel Developer Guide

Page 14: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Fields

DetailsField

Typereference

AgentWorkId

PropertiesFilter, Group, Sort

DescriptionThe AgentWork object associated with this skill.

Typeboolean

IsAdditionalSkill

PropertiesDefaulted on create, Filter, Group, Sort

DescriptionAfter a designated timeout period, a skill marked as additional is dropped from Omni-Channelrouting. The case is then routed to the best-matched agent, even if the agent doesn’t haveall the skills. The default value is false. Available in API version 48.0 and later.

Typestring

Name

PropertiesAutonumber, Defaulted on create, Filter, idLookup, Sort

DescriptionAn automatically generated ID number that identifies the record.

Typereference

SkillId

PropertiesFilter, Group, Sort

DescriptionThe skill that is required or additional.

Typedouble

SkillLevel

PropertiesFilter, Sort

DescriptionThe level of the required or additional skill. Skill levels can range from 1 to 10. Depending onyour business needs, you might want the skill level to reflect years of experience, certificationlevels, or license classes.

10

AgentWorkSkillOmni-Channel Developer Guide

Page 15: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typeint

SkillPriority

PropertiesAggregatable, Filter, Group, Nillable, Sort

DescriptionFor additional skills, specifies the order in which skills are dropped if after the specified timeoutno agent with that skill is available. Higher priority-value skills are dropped first. Lowerpriority-value skills, for example 0, are dropped last. Skills with the same priority value aredropped as a group. You can set skill priority using attribute setup for skills-based routing orApex code.

Typeboolean

WasDropped

PropertiesFilter, Group, Sort

DescriptionFor skills marked as additional, indicates if the skill was dropped from Omni-Channel routingbecause an agent with this skill was not available. The default value is false. Available in APIversion 48.0 and later.

OmniSupervisorConfigRepresents a configuration that determines a user’s Omni-Channel Supervisor settings. This object is available in API version 41.0 andlater.

Supported Callscreate(), delete(), query(), update(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typestring

DeveloperName

PropertiesCreate, Filter, Group, Sort

11

OmniSupervisorConfigOmni-Channel Developer Guide

Page 16: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

DescriptionThe unique name of the object in the API. This name can contain only underscores andalphanumeric characters, and must be unique in your org. It must begin with a letter, notinclude spaces, not end with an underscore, and not contain two consecutive underscores.In managed packages, this field prevents naming conflicts on package installations. Withthis field, a developer can change the object’s name in a managed package and the changesare reflected in a subscriber’s organization.

Note: When creating large sets of data, always specify a unique DeveloperNamefor each record. If no DeveloperName is specified, performance may slow whileSalesforce generates one for each record.

Typepicklist

Language

PropertiesCreate, Defaulted on create, Filter, Group, Nillable, Restricted picklist, Sort

DescriptionThe language of the Omni-Channel Supervisor configuration.

Typestring

MasterLabel

PropertiesCreate, Filter, Group, Sort

DescriptionThe master label for the the OmniSupervisorConfig.

OmniSupervisorConfigGroupRepresents a public group assigned to the Omni-Channel Supervisor configuration that’s visible to a supervisor user. This object isavailable in API version 41.0 and later.

Supported Callscreate(), delete(), query(), update(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

12

OmniSupervisorConfigGroupOmni-Channel Developer Guide

Page 17: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Fields

DetailsField

Typereference

GroupId

PropertiesCreate, Filter, Group, Nillable, Sort

DescriptionThe ID of the group that’s made visible to the supervisor user in the Omni-Channel Supervisorconfiguration.

Typereference

OmniSupervisorConfigId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the Omni-Channel Supervisor configuration.

OmniSupervisorConfigProfileRepresents a configuration that determines the Omni-Channel Supervisor settings that are assigned to users who are assigned to aspecific profile. User-level configurations override profile-level configurations. This object is available in API version 41.0 and later.

Supported Callscreate(), delete(), query(), update(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typereference

OmniSupervisorConfigId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the Omni-Channel Supervisor configuration.

13

OmniSupervisorConfigProfileOmni-Channel Developer Guide

Page 18: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typereference

ProfileId

PropertiesCreate, Filter, Group, Nillable, Sort

DescriptionThe ID of the profile associated with this Omni-Channel Supervisor configuration. A profilecan be associated with only one Omni-Channel Supervisor configuration.

OmniSupervisorConfigUserRepresents a configuration that determines the Omni-Channel Supervisor settings that are assigned to a user. User-level configurationsoverride profile-level configurations. This object is available in API version 41.0 and later.

Supported Callscreate(), delete(), query(), update(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typereference

OmniSupervisorConfigId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the Omni-Channel Supervisor configuration.

Typereference

UserId

PropertiesCreate, Filter, Group, Nillable, Sort

DescriptionID of the user associated with this Omni-Channel Supervisor configuration. A user can beassociated with only one Omni-Channel Supervisor configuration.

14

OmniSupervisorConfigUserOmni-Channel Developer Guide

Page 19: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

PendingServiceRoutingRepresents a work assignment that’s waiting to be routed. This object is available in API version 40.0 and later.

Supported Callsquery(), getDeleted(), getUpdated(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typedouble

CapacityPercentage

PropertiesFilter, Nillable, Sort, Update

Description

Indicates the amount of work that this item represents as a percentage. Valid values are0–100.

Typedouble

CapacityWeight

PropertiesFilter, Nillable, Sort, Update

Description

Indicates the amount of work that this work item represents as a whole number.

TypedateTime

CustomRequestedDatetime

PropertiesFilter, Nillable, Sort, Update

DescriptionRetains the datetime of a work item’s initial request, so work items are rerouted using thedatetime of the initial work request. When left blank, work items are rerouted using thedatetime when they were rerouted.

Typeint

DropAdditionalSkillsTimeout

PropertiesCreate, Filter, Nillable, Sort, Update

15

PendingServiceRoutingOmni-Channel Developer Guide

Page 20: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Description

The period of time to wait before a skill marked as additional is dropped from Omni-Channelrouting. The case is then routed to the best-matched agent even if they don’t have all theskills.

Typereference

GroupId

PropertiesFilter, Group, Nillable, Sort

DescriptionThe ID of the Omni-Channel queue.

Typeboolean

IsPushAttempted

PropertiesDefaulted on create, Filter, Group, Sort

DescriptionIndicates whether a push has been attempted. true if an agent was chosen at least onceto route this PendingServiceRouting; false otherwise.

Typeboolean

IsPushed

PropertiesDefaulted on create, Filter, Group, Sort

DescriptionIndicates whether the PendingServiceRouting is pushed to an agent.

Typeboolean

IsReadyforRouting

PropertiesDefaulted on create, Filter, Group, Sort

Description

Indicates whether the work item is ready to be routed to an agent. You can’t edit aPendingServiceRouting object that is set to True.

Typeboolean

IsTransfer

PropertiesDefaulted on create, Filter, Group, Sort

DescriptionIndicates whether this PendingServiceRouting is a transfer request.

16

PendingServiceRoutingOmni-Channel Developer Guide

Page 21: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typestring

LastDeclinedAgentSession

PropertiesFilter, Group, Nillable, Sort

DescriptionChat Session ID of the agent who last declined this work item.

Typestring

Name

PropertiesDefaulted on create, Filter, Sort

DescriptionName of the PendingServiceRouting.

Typereference

OwnerId

PropertiesFilter, Group, Sort

DescriptionThe ID of the owner of this PendingServiceRouting.

Typereference

PreferredUserId

PropertiesCreate. Filter, Group, Nillable, Sort, Update.

DescriptionThe ID of the preferred user to handle the work.

Typereference

QueueId

PropertiesFilter, Group, Nillable, Sort

DescriptionThe ID of the Omni-Channel queue. Due to API changes, QueueId is no longer recommended.Use GroupId instead.

Typepicklist

RoutingModel

PropertiesFilter, Group, Nillable, Sort

17

PendingServiceRoutingOmni-Channel Developer Guide

Page 22: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

DescriptionType of routing model. For a queue configured with a queue routing configuration, therouting model is ExternalRouting for all external routingPendingServiceRouting.

Typeint

RoutingPriority

PropertiesFilter, Group, Nillable, Sort

Description

The order in which work items are routed to agents.

Typestring

RoutingType

PropertiesFilter, Group, Nillable, Sort

Description

Indicates whether the work item is routed by queue or by skills-based routing. Valid valuesare QueueBased and SkillsBased.

Typeint

SecondaryRoutingPriority

PropertiesCreate, Filter, Group, Nillable, Sort, Update

DescriptionIndicates the secondary routing priority.

Typeint

Serial

PropertiesFilter, Group, Nillable, Sort

DescriptionSerial number of the PendingServiceRouting. The serial number is automaticallyincremented each time the PendingServiceRouting is modified.

Typereference

ServiceChannelId

PropertiesFilter, Group, Sort

DescriptionID of the Service Channel.

18

PendingServiceRoutingOmni-Channel Developer Guide

Page 23: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typereference

WorkItemId

PropertiesFilter, Group, Sort

DescriptionID of the work item.

UsageWhen you use PendingServiceRouting objects for queue-based routing, the PendingServiceRouting objects don’tinvoke triggers before or after insert, or any action (trigger, workflow rule, validation) that could interfere with the creation of thePendingServiceRouting object.

Associated ObjectsThis object has the following associated objects. Unless noted, they are available in the same API version as this object.

PendingServiceRoutingOwnerSharingRuleSharing rules are available for the object.

PendingServiceRoutingShareSharing is available for the object.

PresenceConfigDeclineReasonRepresents the settings for a decline reason that a presence user provides when declining work. This object is available in API version37.0 and later.

Supported Callscreate(), delete(), describeSObjects(), update(), query(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typereference

PresenceDeclineReasonId

PropertiesCreate, Filter, Group, Nillable, Sort

19

PresenceConfigDeclineReasonOmni-Channel Developer Guide

Page 24: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

DescriptionThe ID of the PresenceDeclineReason record.

Typereference

PresenceUserConfigId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the PresenceUserConfig record where the decline reasons are added.

PresenceDeclineReasonRepresents an Omni-Channel decline reason that agents can select when declining work requests. This object is available in API version37.0 and later.

Supported Callscreate(), delete(), describeSObjects(), update(), query(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typestring

DeveloperName

PropertiesCreate, Filter, Group, Sort

DescriptionThe unique name of the object in the API. This name can contain only underscores andalphanumeric characters, and must be unique in your org. It must begin with a letter, notinclude spaces, not end with an underscore, and not contain two consecutive underscores.In managed packages, this field prevents naming conflicts on package installations. Withthis field, a developer can change the object’s name in a managed package and the changesare reflected in a subscriber’s organization.

Note: When creating large sets of data, always specify a unique DeveloperNamefor each record. If no DeveloperName is specified, performance may slow whileSalesforce generates one for each record.

20

PresenceDeclineReasonOmni-Channel Developer Guide

Page 25: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typepicklist

Language

PropertiesCreate, Filter, Group, Nillable, Restricted picklist, Sort

DescriptionThe language of the PresenceDeclineReason.

Typestring

MasterLabel

PropertiesCreate, Filter, Group, Sort

DescriptionThe master label for the PresenceDeclineReason.

PresenceUserConfigRepresents a configuration that determines a presence user’s settings. This object is available in API version 32.0 and later.

Supported Callscreate(), delete(), describeSObjects(), update(), query(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typeint

Capacity

PropertiesCreate, Filter, Group, Sort

DescriptionThe maximum number of work assignments that can be pushed to an agent at a time.

Typestring

DeveloperName

PropertiesCreate, Filter, Group, Sort

21

PresenceUserConfigOmni-Channel Developer Guide

Page 26: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

DescriptionThe unique name of the object in the API. This name can contain only underscores andalphanumeric characters, and must be unique in your org. It must begin with a letter, notinclude spaces, not end with an underscore, and not contain two consecutive underscores.In managed packages, this field prevents naming conflicts on package installations. Withthis field, a developer can change the object’s name in a managed package and the changesare reflected in a subscriber’s organization.

Note: When creating large sets of data, always specify a unique DeveloperNamefor each record. If no DeveloperName is specified, performance may slow whileSalesforce generates one for each record.

Typepicklist

Language

PropertiesCreate, Filter, Group, Nillable, Restricted picklist, Sort

DescriptionThe language of the presence configuration.

Typestring

MasterLabel

PropertiesCreate, Filter, Group, Sort

DescriptionThe label of the presence configuration.

Typeboolean

OptionsIsAutoAcceptEnabled

PropertiesCreate, Filter

DescriptionIndicates whether work items that are routed to agents are automatically accepted (true)or not (false). Available only if OptionsIsDeclineEnabled is set to false.

Typeboolean

OptionsIsDeclineEnabled

PropertiesCreate, Filter

DescriptionIndicates whether agents can decline work items that are routed to them (true) or not(false). Available only if OptionsIsAutoAcceptEnabled is set to false.

22

PresenceUserConfigOmni-Channel Developer Guide

Page 27: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typeboolean

OptionsIsDeclineReasonEnabled

PropertiesCreate, Filter

DescriptionIndicates whether agents can select a reason for declining work requests (true) or not(false). This can be selected only if decline reasons are enabled.

Typeboolean

OptionsIsDisconnectSoundEnabled

PropertiesCreate, Filter

DescriptionIndicates whether a sound is played when agents are disconnected from Omni-Channel(true) or not (false).

Typeboolean

OptionsIsRequestSoundEnabled

PropertiesCreate, Filter

DescriptionIndicates whether a sound plays with incoming work requests (true) or not (false). Setto true by default.

Typereference

PresenceStatusOnDeclineId

PropertiesCreate, Filter, Group, Nillable, Sort

DescriptionThe ID of the presence status that’s automatically assigned to the agent when the agentdeclines a work item. Available only if OptionsIsDeclineEnabled is set to true.

Typereference

PresenceStatusOnPushTimeoutId

PropertiesCreate, Filter, Group, Nillable, Sort

DescriptionThe ID of the presence status that’s automatically assigned to the agent when the agentdoesn’t respond to a work item before push timeout occurs. Available in API version 36.0and later.

23

PresenceUserConfigOmni-Channel Developer Guide

Page 28: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

PresenceUserConfigProfileRepresents a configuration that determines the settings that are assigned to presence users who are assigned to a specific profile.User-level configurations override profile-level configurations. This object is available in API version 32.0 and later.

Supported Callscreate(), delete(), query(), update(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typereference

PresenceUserConfigId

PropertiesCreate, Filter, Group, Sort

DescriptionIf an individual user is also assigned a presence configuration through thePresenceUserConfigProfile, this configuration will override that.

Typereference

ProfileId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the profile that’s associated with this presence configuration. A profile can beassociated with only one presence configuration.

PresenceUserConfigUserRepresents a configuration that determines the settings that are assigned to a presence user. These user-level configurations overrideprofile-level configurations. This object is available in API version 32.0 and later.

Supported Callscreate(), delete(), query(), update(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

24

PresenceUserConfigProfileOmni-Channel Developer Guide

Page 29: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Fields

DetailsField

Typereference

PresenceUserConfigId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the presence configuration.

Typereference

UserId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the user who’s associated with this presence configuration. A user can be associatedwith only one presence configuration.

QueueRoutingConfigRepresents the settings that determine how work items are routed to agents. This object is available in API version 32.0 and later.

Supported Callscreate(), delete(), query(), retrieve(), update()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typepercent

CapacityPercentage

PropertiesCreate, Filter, Nillable, Sort, Update

DescriptionThe percentage of an agent’s capacity for work items that’s consumed by a specific type ofwork item from this service channel.

25

QueueRoutingConfigOmni-Channel Developer Guide

Page 30: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

For example, you might give phone calls a capacity percentage of 100. If an agent receivesa phone call, the agent won’t receive new work items until the call ends, because at thatpoint the agent’s capacity will have reached 100%.

This field is available in API version 33.0 and later.

Typedouble

CapacityWeight

PropertiesCreate, Filter, Nillable, Sort, Update

DescriptionThe amount of an agent’s capacity for work items that’s consumed by a work item from thisservice channel.

For example, if an agent has a capacity of 6, and cases are assigned a capacity weight of 2,an agent can be assigned up to 3 cases before the agent is at capacity and can’t receive newwork items.

This field is available in API version 33.0 and later.

Typestring

DeveloperName

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe unique name of the object in the API. This name can contain only underscores andalphanumeric characters, and must be unique in your org. It must begin with a letter, notinclude spaces, not end with an underscore, and not contain two consecutive underscores.In managed packages, this field prevents naming conflicts on package installations. Withthis field, a developer can change the object’s name in a managed package and the changesare reflected in a subscriber’s organization.

Note: When creating large sets of data, always specify a unique DeveloperNamefor each record. If no DeveloperName is specified, performance may slow whileSalesforce generates one for each record.

Typeint

DropAdditionalSkillsTimeout

PropertiesCreate, Filter, Group Nillable, Sort, Update

Description

The number of seconds to wait before a skill marked as Additional Skill is dropped fromOmni-Channel routing. The case is then routed to the best-matched agent even if they don’thave all the skills.

26

QueueRoutingConfigOmni-Channel Developer Guide

Page 31: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Typeboolean

IsAttributeBased

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

DescriptionIndicates whether this routing is attribute-based. Available in API version 45.0 and later.

Typepicklist

Language

PropertiesCreate, Filter, Group, Nillable, Restricted picklist, Sort, Update

DescriptionThe language of the presence status.

Typestring

MasterLabel

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe label of the presence status.

Typereference

OverflowAssigneeId

PropertiesCreate, Filter, Group, Nillable, Sort, Update

DescriptionThe ID of the user or queue that’s set as the Overflow Assignee.

Typeint

PushTimeout

PropertiesCreate, Filter, Group, Nillable, Sort, Update

DescriptionThe number of seconds set for push timeout. 0 is returned when push timeout isn’t enabled.Available in API version 36.0 and later.

Typepicklist

RoutingModel

PropertiesCreate, Filter, Group, Restricted picklist, Sort, Update

27

QueueRoutingConfigOmni-Channel Developer Guide

Page 32: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

DescriptionThe routing type that determines how work items are routed (pushed) to agents. Possiblevalues are Least Active and Most Available.

Typeint

RoutingPriority

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe priority in which work items from the service channels that are related to this routingconfiguration are routed to agents. Work items from routing configurations that have lowerpriority values (for example, 0) are routed to agents first.

Typereference

ServiceChannelId

PropertiesCreate, Filter, Group, Nillable, Sort, Update

DescriptionThe ID of the service channel that’s associated with this configuration. This field is availablein API version 32.0 and earlier.

ServiceChannelRepresents a channel of work items that are received from your organization—for example, cases, chats, or leads. This object is availablein API version 32.0 and later.

Supported Callscreate(), delete(), describeSObjects(), query(), retrieve(), update(), upsert()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typepicklist

CapacityModel

PropertiesCreate, Filter, Group, Nillable, RestrictedPicklist, Sort, Update

28

ServiceChannelOmni-Channel Developer Guide

Page 33: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

DescriptionThe method that determines when an agent's capacity for a work item is released. With theStatus-Based capacity routing model, work remains assigned and applied to an agent’scapacity until the work is completed or reassigned to a different agent. In contrast, thetab-based capacity model releases an agent’s capacity when a work tab is closed in theservice console. Possible values are StatusBased and TabBased.

Typepercent

CapacityPercentage

PropertiesCreate, Filter, Nillable, Sort

DescriptionThe percentage of an agent’s capacity for work items that’s consumed by a specific type ofwork item from this service channel.

For example, you might give phone calls a capacity percentage of 100. If an agent receivesa phone call, the agent won’t receive new work items until the call ends, because at thatpoint the agent’s capacity will have reached 100%.

This field is available in API version 32.0 and earlier. For later API versions, you can set thecapacity percentage of work items on the QueueRoutingConfig object. TheCapacityPercentage field was removed in API version 33.0.

Typedouble

CapacityWeight

PropertiesCreate, Filter, Nillable, Sort

DescriptionThe amount of an agent’s capacity for work items that’s consumed by a work item from thisservice channel.

For example, if an agent has a capacity of 6, and cases are assigned a capacity weight of 2,an agent can be assigned up to 3 cases before the agent is at capacity and can’t receive newwork items.

This field is available in API version 32.0 and earlier. For later API versions, you can set thecapacity weight of work items on the QueueRoutingConfig object. The CapacityWeight fieldwas removed in API version 33.0.

Typestring

DeveloperName

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe unique name of the object in the API. This name can contain only underscores andalphanumeric characters, and must be unique in your org. It must begin with a letter, notinclude spaces, not end with an underscore, and not contain two consecutive underscores.

29

ServiceChannelOmni-Channel Developer Guide

Page 34: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

In managed packages, this field prevents naming conflicts on package installations. Withthis field, a developer can change the object’s name in a managed package and the changesare reflected in a subscriber’s organization.

Note: When creating large sets of data, always specify a unique DeveloperNamefor each record. If no DeveloperName is specified, performance may slow whileSalesforce generates one for each record.

Typeboolean

DoesCheckCapOnOwnerChange

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

DescriptionIn the Status-Based capacity routing model, when work is reassigned to a specific agent, youcan choose to override the capacity check and keep the work assigned to the agent. Thedefault value is false.

Typeboolean

DoesCheckCapOnStatusChange

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

DescriptionIn the Status-Based capacity routing model, when work is reopened, you can choose tooverride the capacity check and keep the work assigned to a specific agent. The default valueis false.

Typeboolean

DoesMinimizeWidgetOnAccept

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

DescriptionAutomatically minimizes the Omni-Channel widget when an agent accepts work. The defaultvalue is false.

Typepicklist

Language

PropertiesCreate, Defaulted on create, Filter, Group, Nillable, Restricted picklist, Sort, Update

DescriptionThe language of the service channel.

Typestring

MasterLabel

30

ServiceChannelOmni-Channel Developer Guide

Page 35: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe label of the service channel.

Typepicklist

RelatedEntity

PropertiesCreate, Filter, Group, Restricted picklist, Sort, Update

DescriptionThe type of object that’s associated with this service channel. This field is unique within yourorganization.

Typepicklist

SecRoutingPriorityField

PropertiesCreate, Filter, Group, Nillable, Restricted picklist, Sort, Update

DescriptionThe name of the standard field or the id of the custom field that is used for secondary routingpriority. This field is unique within your organization.

Typepicklist

StatusField

PropertiesCreate, Filter, Group, Nillable, Restricted picklist, Sort, Update

DescriptionThe picklist field that you use to track work status in the Status-Based capacity routing model.Use ServiceChannelStatusField to specify the values that indicate completed and in-progresswork-item status.

ServiceChannelFieldPriorityRepresents a secondary routing priority field-value mapping. This object is available in API version 47.0 and later.

Supported Callscreate(), delete(), describeSObjects(), query(), retrieve(), update(), upsert()

Special Access RulesTo access this object, Omni-Channel must be enabled.

31

ServiceChannelFieldPriorityOmni-Channel Developer Guide

Page 36: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Fields

DetailsField

Typeint

Priority

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe priority number assigned to the mapped field value.

Typereference

ServiceChannelId

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the service channel.

Typestring

Value

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe value of the SecRoutingPriorityField field defined in parent ServiceChannel.

ServiceChannelStatusRepresents the status that’s associated with a specific service channel. This object is available in API version 32.0 and later.

Supported Callscreate(), delete(), query(), update(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typereference

ServiceChannelId

32

ServiceChannelStatusOmni-Channel Developer Guide

Page 37: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

PropertiesCreate, Filter, Group, Sort

DescriptionThe ID of the service channel.

Typereference

ServicePresenceStatusId

PropertiesCreate, Filter, Group, Nillable, Sort

DescriptionThe ID of the presence status that’s associated with the service channel that’s specified bythe ServicePresenceChannelId.

ServicePresenceStatusRepresents a presence status that can be assigned to a service channel. This object is available in API version 32.0 and later.

Supported Callscreate(), delete(), query(), update(), retrieve()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typestring

DeveloperName

PropertiesCreate, Filter, Group, Sort

DescriptionThe unique name of the object in the API. This name can contain only underscores andalphanumeric characters, and must be unique in your org. It must begin with a letter, notinclude spaces, not end with an underscore, and not contain two consecutive underscores.In managed packages, this field prevents naming conflicts on package installations. Withthis field, a developer can change the object’s name in a managed package and the changesare reflected in a subscriber’s organization.

33

ServicePresenceStatusOmni-Channel Developer Guide

Page 38: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

Note: When creating large sets of data, always specify a unique DeveloperNamefor each record. If no DeveloperName is specified, performance may slow whileSalesforce generates one for each record.

Typepicklist

Language

PropertiesCreate, Filter, Group, Nillable, Restricted picklist, Sort

DescriptionThe language of the presence status.

Typestring

MasterLabel

PropertiesCreate, Filter, Group, Sort

DescriptionThe label of the presence status.

ServiceResourceRepresents a service technician or service crew in field service in Field Service Lightning and Lightning Scheduler. This object is availablein API version 38.0 and later.

Supported Callscreate(), describeLayout(), describeSObjects(), getDeleted(), getUpdated(), query(), retrieve(),search(), update(), upsert()

Special Access RulesField Service Lightning must be enabled.

Fields

DetailsField Name

Typetextarea

Description

PropertiesCreate, Nillable, Update

DescriptionThe description of the resource.

34

ServiceResourceOmni-Channel Developer Guide

Page 39: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField Name

Typeboolean

IsActive

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

DescriptionWhen selected, this option means that the resource can be assigned to workorders. For service tracking purposes, resources can’t be deleted, so deactivatinga resource is the best way to send them into retirement.

Deactivating a user deactivates the related service resource. You can’t create aservice resource that is linked to an inactive user.

Typeboolean

IsCapacityBased

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

DescriptionCapacity-based resources are limited to a certain number of hours orappointments in a specified time period.

Tip: The Capacities related list shows a resource’s capacity.

Typeboolean

IsOptimizationCapable

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

DescriptionThis field is reserved for Field Service Lightning and the managed package. Createa custom field instead of using this field to indicate whether optimization shoulduse a service resource.

Typedouble

LastKnownLatitude

PropertiesCreate, Filter, Nillable, Sort, Update

DescriptionThe latitude of the last known location.

Typedouble

LastKnownLongitude

PropertiesCreate, Filter, Nillable, Sort, Update

35

ServiceResourceOmni-Channel Developer Guide

Page 40: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField Name

DescriptionThe longitude of the last known location.

Typelocation

LastKnownLocation

PropertiesNillable

DescriptionThe service resource’s last known location. You can configure this field to displaydata collected from a custom mobile app. This field is not visible in the userinterface, but you can expose it on service resource page layouts or set up fieldtracking to be able to view a resource’s location history.

TypedateTime

LastKnownLocationDate

PropertiesFilter, Nillable, Sort

DescriptionThe date and time of the last known location.

TypedateTime

LastReferencedDate

PropertiesFilter, Nillable, Sort

DescriptionThe date when the service resource was last modified. Its label in the user interfaceis Last Modified Date.

TypedateTime

LastViewedDate

PropertiesFilter, Nillable, Sort

DescriptionThe date when the service resource was last viewed.

Typereference

LocationId

PropertiesCreate, Filter, Group, Sort, Nillable, Update

DescriptionThe location associated with the service resource. For example, a service vehicledriven by the service resource.

36

ServiceResourceOmni-Channel Developer Guide

Page 41: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField Name

Typestring

Name

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe resource’s name. You’ll likely want this to be the name or title of the associateduser or service crew.

Typereference

OwnerId

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

DescriptionThe owner of the service resource.

Typereference

RelatedRecordId

PropertiesCreate, Filter, Group, Sort, Nillable

DescriptionThe associated user. Its label in the UI is User. If the service resource representsa service crew rather than a user, leave the User field blank and select therelated crew in the ServiceCrewId field.

Typepicklist

ResourceType

PropertiesCreate, Defaulted on create, Filter, Group, Nillable, Restricted picklist, Sort, Update

DescriptionIndicates whether the resource is a Technician (T), Dispatcher (D), Crew (C), Asset(S), Agent (A), or Planner (P). The default value is Technician (T). Resources whoare dispatchers can’t be capacity-based or included in scheduling optimization.Only users with the Field Service Dispatcher permission set license can bedispatchers. You can’t add additional resource types.

Typereference

ServiceCrewId

PropertiesCreate, Filter, Group, Sort, Nillable, Update

DescriptionThe associated service crew. If the service resource represents a crew, select thecrew.

37

ServiceResourceOmni-Channel Developer Guide

Page 42: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField Name

Note: This field is hidden for all users by default. To use it, update itsfield-level security settings in Setup and add it to your service resourcepage layouts.

Associated ObjectsThis object has the following associated objects. Unless noted, they are available in the same API version as this object.

ServiceResourceFeedFeed tracking is available for the object.

ServiceResourceHistoryHistory is available for tracked fields of the object.

ServiceResourceOwnerSharingRuleSharing rules are available for the object.

ServiceResourceShareSharing is available for the object.

SkillRequirementRepresents a skill that is required to complete a particular task in Field Service Lightning and Lightning Scheduler. Skill requirements canbe added to work types, work orders, and work order line items in Field Service and Lightning Scheduler. This object is available in APIversion 38.0 and later. You also can add skill requirements to work items in Omni-Channel skills-based routing using API version 42.0and later.

Supported Callscreate(), delete(), describeLayout(), getDeleted(), getUpdated(), query(), retrieve(), search(),update(), upsert()

Special Access RulesIf you want to use SkillRequirement for Field Service use cases, then Field Service Lightning must be enabled.

If you want to use SkillRequirement only for Omni-Channel skills-based routing use cases, then you don't need Field Service Lightningto be enabled.

Fields

DetailsField Name

Typeboolean

IsAdditionalSkill

PropertiesCreate, Defaulted on create, Filter, Group, Sort, Update

38

SkillRequirementOmni-Channel Developer Guide

Page 43: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField Name

DescriptionIndicates that a skill is additional. After a designated timeout period, a skill markedas additional is dropped from Omni-Channel routing. The case is then routed tothe best-matched agent even if they don’t have all the skills.

TypedateTime

LastReferencedDate

PropertiesFilter, Nillable, Sort

DescriptionThe timestamp for when the current user last viewed a record related to thisrecord.

TypedateTime

LastViewedDate

PropertiesFilter, Nillable, Sort

DescriptionThe timestamp for when the current user last viewed this record. If this value isnull, this record might only have been referenced (LastReferencedDate)and not viewed.

Typereference

RelatedRecordId

PropertiesCreate, Filter, Group, Sort

DescriptionThe record that the skill is required for. The related record can be a work order,work order line item, work type, or pending service routing record.

Typereference

SkillId

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe skill that is required.

Typedouble

SkillLevel

PropertiesCreate, Defaulted on create, Filter, Nillable, Sort, Update

39

SkillRequirementOmni-Channel Developer Guide

Page 44: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField Name

DescriptionThe level of the skill required. Skill levels can range from zero to 99.99. Dependingon your business needs, you might want the skill level to reflect years ofexperience, certification levels, or license classes.

Typestring

SkillNumber

PropertiesAutonumber, Defaulted on create, Filter, idLookup, Sort

DescriptionAn auto-generated number identifying the skill requirement.

Typeint

SkillPriority

PropertiesAggregatable, Create, Filter, Group, Nillable, Sort, Update

DescriptionFor additional skills, specify the order in which skills are dropped if after thespecified timeout no agent with that skill is available. Higher priority-value skillsare dropped first. Lower priority-value skills, for example 0, are dropped last. Skillswith the same priority value are dropped as a group. You can set skill priorityusing attribute setup for skills-based routing or Apex code.

UsageSkill requirements help dispatchers assign work orders to service resources with the proper expertise. You can still assign a work order,work order line item, or related service appointment to a service resource that does not possess the specified skills, so skill requirementsserve more as a suggestion than a rule.

Note: If you’re using the Field Service Lightning managed package, use matching rules to ensure that appointments are onlyassigned to service resources who possess the skills listed on the parent work order.

If many of your work orders require the same skills, add skill requirements to work types to save time and keep your processes consistent.When you add a skill requirement to a work type, work orders and work order line items that use that type automatically inherit the skillrequirement. For example, if all annual maintenance visits for your Classic Refrigerator product require a Refrigerator Maintenance skilllevel of at least 50, add that skill requirement to the Annual Maintenance Visit work type. When you create a work order for a customer’sannual fridge maintenance, applying that work type adds the skill requirement as well.

Associated ObjectsThis object has the following associated objects. Unless noted, they are available in the same API version as this object.

SkillRequirementFeedFeed tracking is available for the object.

40

SkillRequirementOmni-Channel Developer Guide

Page 45: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

SkillRequirementHistoryHistory is available for tracked fields of the object.

UserServicePresenceRepresents a presence user’s real-time presence status. This object is available in API version 32.0 and later.

Supported Callsdelete(), query(), getDeleted(), getUpdated(), retrieve(), undelete()

Special Access RulesTo access this object, Omni-Channel must be enabled.

Fields

DetailsField

Typeint

ConfiguredCapacity

PropertiesFilter, Group, Nillable, Sort

DescriptionThe user’s total configured capacity.

Typeboolean

IsAway

PropertiesDefaulted on create, Filter, Group, Sort

DescriptionIndicates whether the user’s status is Away.

Typestring

Name

PropertiesCreate, Filter, Nillable, Sort, Update

DescriptionAn automatically generated ID number that identifies the record.

Typereference

OwnerId

PropertiesFilter, Group, Sort

41

UserServicePresenceOmni-Channel Developer Guide

Page 46: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DetailsField

DescriptionThe ID of the owner of the UserServicePresence entity. For external routing, allowsthe entity to be used in the Streaming API to listen to events whenever aUserServicePresence record is created, modified, or deleted.

Typereference

ServicePresenceStatusId

PropertiesCreate, Filter, Nillable, Sort, Update

DescriptionThe ID of the presence status that’s associated with the presence user that’s specified by theUserId.

Typestring

UserId

PropertiesCreate, Filter, Group, Sort, Update

DescriptionThe ID of the Omni-Channel user.

UsageApex triggers aren’t supported with UserServicePresence.

Sharing rules aren’t supported with UserServicePresence even if the OwnerId field is enabled.

In API version 41.0 or later, UserServicePresence records can be deleted programmatically. The “Customize Application”permission is required.

Associated ObjectsThis object has the following associated objects. Unless noted, they are available in the same API version as this object.

UserServicePresenceOwnerSharingRuleSharing rules are available for the object.

UserServicePresenceShareSharing is available for the object.

Omni-Channel Metadata API Types

The Metadata API lets you access Omni-Channel feature settings and metadata information.

The following types are available with the Metadata API.

• OmniChannelSettings

• PresenceDeclineReason

42

Omni-Channel Metadata API TypesOmni-Channel Developer Guide

Page 47: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

• PresenceUserConfig

• ServiceChannel

• ServicePresenceStatus

• WorkSkillRouting

• WorkSkillRoutingAttribute

If you need more information on the Salesforce Metadata API, see the Metadata API Developer Guide.

Omni-Channel Objects for the Salesforce Console

Omni-Channel lets your call center route any type of incoming work item to the most qualified, available agents.

Omni-Channel Objects for the Salesforce Console Integration Toolkit

The Salesforce Console Integration Toolkit includes several objects that let you control how Omni-Channel works within the Salesforceconsole for your organization.

Omni-Channel Objects for the Lightning Console JavaScript API

Omni-Channel lets your call center route any type of incoming work item to the most qualified, available agents. The LightningConsole JavaScript API for Lightning Experience includes several objects that let you control how Omni-Channel works within theLightning Service Console for your organization.

Omni-Channel Objects for the Salesforce Console Integration ToolkitThe Salesforce Console Integration Toolkit includes several objects that let you control how Omni-Channel works within the Salesforceconsole for your organization.

If you need more information on the Salesforce Console Integration Toolkit, see Salesforce Console Integration Toolkit for SalesforceClassic.

acceptAgentWork

Accepts a work item that’s assigned to an agent. Available in API versions 32.0 and later.

closeAgentWork

Changes the status of a work item to “Closed” and removes it from the list of work items in the Omni-Channel widget. Available inAPI versions 32.0 and later.

declineAgentWork

Declines a work item that’s assigned to an agent. Available in API versions 32.0 and later.

getAgentWorks

Returns a list of work items that are currently assigned to an agent and open in the agent’s workspace. Available in API versions 32.0and later.

getAgentWorkload

In API version 35.0 and later, we can retrieve an agent’s currently assigned workload. Use this method for rerouting work to availableagents.

getServicePresenceStatusChannels

Retrieves the service channels that are associated with an Omni-Channel user’s current presence status. Available in API versions32.0 and later.

43

Omni-Channel Objects for the Salesforce ConsoleOmni-Channel Developer Guide

Page 48: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

getServicePresenceStatusId

Retrieves an agent’s current presence status. Available in API versions 32.0 and later.

login

Logs an agent into Omni-Channel with a specific presence status. You also can use this method to reconnect to Omni-Channel aftera connection error. Available in API versions 32.0 and later.

logout

Logs an agent out of Omni-Channel. Available in API versions 32.0 and later.

setServicePresenceStatus

Sets an agent's presence status to a status with a particular ID. In API version 35.0 and later, we log the user into presence if that useris not already logged in, so you don’t have to make additional calls. You also can use this method to reconnect to Omni-Channelafter a connection error.

Methods for Console Events

JavaScript can be executed when certain types of events occur in a console, such as when a user closes a tab. In addition to thestandard methods for console events, there are a few events that are specific to Omni-Channel. These events apply to SalesforceClassic only.

acceptAgentWork

Accepts a work item that’s assigned to an agent. Available in API versions 32.0 and later.

Syntax

sforce.console.presence.acceptAgentWork(workId:String, (optional) callback:function)

Arguments

DescriptionTypeName

The ID of the work item the agent accepts.StringworkId

JavaScript method to call when an agent accepts the work item associated with theworkId.

functioncallback

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testAcceptWork();return false;">Accept Assigned Work Item</a>

<script type="text/javascript">function testAcceptWork() {

//First get the ID of the assigned work item to accept itsforce.console.presence.getAgentWorks(function(result) {

if (result.success) {var works = JSON.parse(result.works);var work = works[0];if (!work.isEngaged) {

44

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 49: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

//Now that we have the assigned work item ID, we can accept itsforce.console.presence.acceptAgentWork(work.workId,

function(result) {if (result.success) {

alert('Accepted work successfully');} else {

alert('Accept work failed');}

});} else {

alert('The work item has already been accepted');}

}});

}</script>

</apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if accepting the work item was successful; false if accepting the workitem wasn’t successful.

Booleansuccess

closeAgentWork

Changes the status of a work item to “Closed” and removes it from the list of work items in the Omni-Channel widget. Available in APIversions 32.0 and later.

Syntax

sforce.console.presence.closeAgentWork(workId:String, (optional) callback:function)

Arguments

DescriptionTypeName

The ID of the work item that’s closed.StringworkId

JavaScript method to call when the work item associated with the workId isclosed.

functioncallback

45

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 50: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testCloseWork();return false;">Close Engaged Work Item</a><script type="text/javascript">

function testCloseWork() {//First get the ID of the engaged work item to close itsforce.console.presence.getAgentWorks(function(result) {

if (result.success) {var works = JSON.parse(result.works);var work = works[0];if (work.isEngaged) {

//Now that we have the engaged work item ID, we can close itsforce.console.presence.closeAgentWork(work.workId,function(result)

{if (result.success) {

alert('Closed work successfully');} else {

alert('Close work failed');}

});} else {

alert('The work item should be accepted first');}

}});

}</script>

</apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if closing the work item was successful; false if closing the work itemwasn’t successful.

Booleansuccess

declineAgentWork

Declines a work item that’s assigned to an agent. Available in API versions 32.0 and later.

Syntax

sforce.console.presence.declineAgentWork(workId:String, (optional) declineReason:String,(optional) callback:function)

46

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 51: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Arguments

DescriptionTypeName

The ID of the work item that the agent declines.StringworkId

The provided reason for why the agent declined the work request.StringdeclineReason

JavaScript method to call when an agent declines the work item associated with theworkId.

functioncallback

Sample Code–Visualforce

<apex:page ><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testDeclineWork();return false;">Decline Assigned Work Item</a>

<script type="text/javascript">function testDeclineWork() {

//First, get the ID of the assigned work item to accept itsforce.console.presence.getAgentWorks(function(result) {

if (result.success) {var works = JSON.parse(result.works);var work = works[0];

sforce.console.presence.declineAgentWork(work.workId, function(result){

if (result.success) {alert('Declined work successfully');

} else {alert('Decline work failed');

}});

}});

}</script>

</apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if declining the work item was successful; false if declining the work itemwasn’t successful.

Booleansuccess

47

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 52: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

getAgentWorks

Returns a list of work items that are currently assigned to an agent and open in the agent’s workspace. Available in API versions 32.0 andlater.

Syntax

sforce.console.presence.getAgentWorks(callback:function)

Arguments

DescriptionTypeName

JavaScript method to call when the list of an agent’s work items is retrieved.functioncallback

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testGetWorks();return false;">Get Agent’s Current Work Items</a>

<script type="text/javascript">function testGetWorks() {

//These values are for example purposes only.sforce.console.presence.getAgentWorks(function(result) {

if (result.success) {alert('Get work items successful');var works = JSON.parse(result.works);alert('First Agent Work ID is: ' + works[0].workId);alert('Assigned Entity Id of the first Agent Work is: ' +

works[0].workItemId);alert('Is first Agent Work Engaged: ' + works[0].isEngaged);

} else {alert('Get work items failed');

}});

}</script>

</apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if retrieving the agent’s work items was successful; false if retrieving theagent’s work items wasn’t successful.

Booleansuccess

48

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 53: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DescriptionTypeName

A JSON string of work objects that represents the work items assigned to the agentthat are open in the agent’s workspace.

JSON string ofwork objects

works

work

The work object contains the following properties:

DescriptionTypeName

The ID of the object that’s routed through Omni-Channel. This object becomes awork assignment with a workId when it’s assigned to an agent.

StringworkItemId

The ID of a work assignment that’s routed to an agent.StringworkId

Indicates whether an agent is working on a work item that’s been assigned to them(true) or not (false).

BooleanisEngaged

getAgentWorkload

In API version 35.0 and later, we can retrieve an agent’s currently assigned workload. Use this method for rerouting work to availableagents.

Syntax

sforce.console.presence.getAgentWorkload(callback:function)

Arguments

DescriptionTypeName

JavaScript method to call when the agent’s configured capacity and work retrieved.functioncallback

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testGetAgentWorkload();return false;">

Get Agent’s configured capacity and current workload</a>

<script type="text/javascript">function testGetAgentWorkload() {

sforce.console.presence.getAgentWorkload(function(result) {if (result.success) {

alert('Retrieved Agent Configured Capacity and Current Workloadsuccessfully');

alert('Agent\'s configured capacity is: ' + result.configuredCapacity);

49

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 54: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

alert('Agent\'s currently assigned workload is: ' +result.currentWorkload);

} else {alert('Get Agent Workload failed');

}});

}</script>

</apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if retrieving the agent’s work items was successful; false if retrieving theagent’s work items wasn’t successful.

Booleansuccess

Indicates the agent’s configured capacity (work that’s assigned to the current user)through Presence Configuration.

NumberconfiguredCapacity

Indicates the agent’s currently assigned workload.NumbercurrentWorkload

getServicePresenceStatusChannels

Retrieves the service channels that are associated with an Omni-Channel user’s current presence status. Available in API versions 32.0and later.

Syntax

sforce.console.presence.getServicePresenceStatusChannels(callback:function)

Arguments

DescriptionTypeName

JavaScript method to call when the channels associated with a presence status areretrieved.

functioncallback

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testGetChannels();return false;">

Get Channels Associated with a Presence Status</a>

50

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 55: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

<script type="text/javascript">function testGetChannels() {

//These values are for example purposes only.sforce.console.presence.getServicePresenceStatusChannels(function(result) {

if (result.success) {alert('Retrieved Service Presence Status Channels successfully');var channels = JSON.parse(result.channels);//For example purposes, just retrieve the first channelalert('First channel ID is: ' + channels[0].channelId);

alert('First channel developer name is: ' + channels[0].developerName);

} else {alert('Get Service Presence Status Channels failed');

}});

}</script>

</apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if retrieving the current presence status channels was successful; false ifthe retrieving the current presence status channels wasn’t successful.

Booleansuccess

Returns the IDs and API names of the channels associated with the presence status.JSON string ofchannelobjects

channels

getServicePresenceStatusId

Retrieves an agent’s current presence status. Available in API versions 32.0 and later.

Syntax

sforce.console.presence.getServicePresenceStatusId(callback:function)

Arguments

DescriptionTypeName

JavaScript method to call when the agent’s presence status is retrieved.functioncallback

51

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 56: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testGetStatusId();return false;">Get Omni-Channel Status ID</a>

<script type="text/javascript">function testGetStatusId() {

sforce.console.presence.getServicePresenceStatusId(function(result) {if (result.success) {

alert('Get Status Id successful');alert('Status Id is: ' + result.statusId);

} else {alert('Get Status Id failed');

}});

}</script>

</apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if retrieving the presence status ID was successful; false if the retrievingthe presence status ID wasn’t successful.

Booleansuccess

The name of the agent’s current presence status.StringstatusName

The API name of the agent’s current presence status.StringstatusApiName

The ID of the agent’s current presence status.StringstatusId

login

Logs an agent into Omni-Channel with a specific presence status. You also can use this method to reconnect to Omni-Channel after aconnection error. Available in API versions 32.0 and later.

Syntax

sforce.console.presence.login(statusId:String, (optional) callback:function)

Arguments

DescriptionTypeName

The ID of the presence status. Agents must be given access to this presence statusthrough their associated profile or permission set.

StringstatusId

52

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 57: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DescriptionTypeName

JavaScript method to call when the agent is logged in with the presence statusassociated with statusId.

functioncallback

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testLogin('0N5xx00000000081');return false;">Log In to

Omni-Channel</a>

<script type="text/javascript">function testLogin(statusId) {

//Gets the Salesforce ID of the presence status entity which the current userhas been assigned through their permission set or profile.

//These values are for example purposes only.sforce.console.presence.login(statusId, function(result) {

if (result.success) {alert('Login successful');

} else {alert('Login failed');

}});

}</script>

</apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if the login was successful; false if the login wasn’t successful.Booleansuccess

logout

Logs an agent out of Omni-Channel. Available in API versions 32.0 and later.

Syntax

sforce.console.presence.logout((optional) callback:function)

53

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 58: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Arguments

DescriptionTypeName

JavaScript method to call when the agent is logged out of Omni-Channel.functioncallback

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testLogout();return false;">Log out of Omni-Channel</a>

<script type="text/javascript">function testLogout() {

sforce.console.presence.logout(function(result) {if (result.success) {

alert('Logout successfully');} else {

alert('Logout failed');}

});}

</script></apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if the logout was successful; false if the logout wasn’t successful.Booleansuccess

setServicePresenceStatus

Sets an agent's presence status to a status with a particular ID. In API version 35.0 and later, we log the user into presence if that user isnot already logged in, so you don’t have to make additional calls. You also can use this method to reconnect to Omni-Channel after aconnection error.

Syntax

sforce.console.presence.setServicePresenceStatus(statusId:String,(optional) callback:function)

54

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 59: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Arguments

DescriptionTypeName

The ID of the presence status you want to set the agent to. Agents must be givenaccess to this presence status through their associated profile or permission set.

StringstatusId

JavaScript method to call when the agent’s status is changed to the presence statusassociated with statusId.

functioncallback

Sample Code–Visualforce

<apex:page><apex:includeScript value="/support/console//integration.js"/><a href="#" onClick="testSetStatus('0N5xx00000000081');return false;">Set Presence

Status</a>

<script type="text/javascript">function testSetStatus(statusId) {

//Sets the user’s presence status to statusID. Assumes that the user wasassigned this presence status through Setup.

//These values are for example purposes onlysforce.console.presence.setServicePresenceStatus(statusId, function(result) {

if (result.success) {alert('Set status successful');alert('Current statusId is: ' + result.statusId);alert('Channel list attached to this status is: ' + result.channels);

//printout in console for lists} else {

alert('Set status failed');}

});}

</script></apex:page>

ResponseThis method is asynchronous so it returns its response in an object in a callback method. The response object contains the followingproperties:

DescriptionTypeName

true if setting the agent’s status was successful; false if setting the agent’sstatus wasn’t successful.

Booleansuccess

The name of the agent’s current presence status.StringstatusName

The API name of the agent’s current presence status.StringstatusApiName

The ID of the agent’s current presence status.StringstatusId

55

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 60: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DescriptionTypeName

Returns the IDs and API names of the channels associated with the presence status.JSON string ofchannelobjects

channels

Methods for Console EventsJavaScript can be executed when certain types of events occur in a console, such as when a user closes a tab. In addition to the standardmethods for console events, there are a few events that are specific to Omni-Channel. These events apply to Salesforce Classic only.

Standard Console Events

PayloadDescriptionEvent

Fired when a primary tab or subtab is opened.Available in API version 30.0 or later.

sforce.console.ConsoleEvent.OPEN_TAB

• id—the ID of the opened tab

• objectId—the object ID of theopened tab, if available

Fired when a primary tab or subtab with aspecified ID in the additionalParams

sforce.console.ConsoleEvent.CLOSE_TAB

• id—the ID of the closed tab

• objectID—the object ID of theclosed tab, if available

argument is closed. Or, fired when a primarytab or subtab with no specified ID is closed.Available in API version 30.0 or later.

NoneDelays the execution of logging out of aconsole when a user clicks Logout. WhenLogout is clicked:

sforce.console.ConsoleEvent.CONSOLE_LOGOUT

1. An overlay appears, which tells a user thatlogout is in progress.

2. Callbacks are executed that have beenregistered by usingsforce.console.ConsoleEvent.CONSOLE_LOGOUT.

3. Console logout logic is executed.

If the callback contains synchronous blockingcode, the console logout code isn’t executeduntil the blocking code is executed. As a bestpractice, avoid synchronous blocking codeor long code execution during logout.

Available in API version 31.0 or later.

56

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 61: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Omni-Channel Console Events

PayloadDescriptionEvent

Fired when anOmni-Channel user logs

sforce.console.ConsoleEvent.PRESENCE.LOGIN_SUCCESS

• statusId—the ID of the agent’s current presence status.

into Omni-Channelsuccessfully.

Available in API version32.0 or later.

Fired when a user changeshis or her presence status.

Available in API version32.0 or later.

sforce.console.ConsoleEvent.PRESENCE.STATUS_CHANGED

• statusId—the ID of the agent’s current presence status.

• channels—channelJSON string of channel objects.

• statusName—the name of the agent’s current presencestatus.

• statusApiName—the API name of the agent’s currentpresence status.

NoneFired when a user logs outof Salesforce.

Available in API version32.0 or later.

sforce.console.ConsoleEvent.PRESENCE.LOGOUT

Fired when a user isassigned a new work item.

Available in API version32.0 or later.

sforce.console.ConsoleEvent.PRESENCE.WORK_ASSIGNED

• workItemId—the ID of the object that’s routed throughOmni-Channel. This object becomes a work assignment witha workId when it’s assigned to an agent.

• workId—the ID of a work assignment that’s routed to anagent.

Fired when a user acceptsa work assignment, or

sforce.console.ConsoleEvent.PRESENCE.WORK_ACCEPTED

• workItemId—the ID of the object that’s routed throughOmni-Channel. This object becomes a work assignment witha workId when it’s assigned to an agent.when a work assignment

is automatically accepted.

Available in API version32.0 or later.

• workId—the ID of a work assignment that’s routed to anagent.

Fired when a user declinesa work assignment.

Available in API version32.0 or later.

sforce.console.ConsoleEvent.PRESENCE.WORK_DECLINED

• workItemId—the ID of the object that’s routed throughOmni-Channel. This object becomes a work assignment witha workId when it’s assigned to an agent.

• workId—the ID of a work assignment that’s routed to anagent.

Fired when a user closes atab in the console that’s

sforce.console.ConsoleEvent.PRESENCE.WORK_CLOSED

• workItemId—the ID of the object that’s routed throughOmni-Channel. This object becomes a work assignment witha workId when it’s assigned to an agent.associated with a work

item. When the tab for

57

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 62: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

PayloadDescriptionEvent

that work item is closed,the status of the

• workId—the ID of a work assignment that’s routed to anagent.

AgentWork objectassociated with itautomatically changes to“Closed.”

Available in API version32.0 or later.

Fired when an agent’sworkload changes. This

sforce.console.ConsoleEvent.PRESENCE.WORKLOAD_CHANGED

• ConfiguredCapacity—the configured capacity forthe agent.

includes receiving new• PreviousWorkload—the agent’s workload before the

change.work items, declining workitems, and closing items in

• NewWorkload—the agent’s new workload after thechange.

the console. It’s also firedwhen there’s a change toan agent’s capacity orPresence Configuration orwhen the agent goesoffline in theOmni-Channel widget.

channel

The channel object contains the following properties:

DescriptionTypeName

Retrieves the ID of a service channel that’s associated with a presence status.StringchannelId

Retrieves the developer name of the the service channel that’s associated with thechannelId.

StringdeveloperName

Methods for Console Events

DescriptionMethod

Adds a listener for a custom event type or a standard event type whenthe event is fired. This method adds a listener for custom event types in

addEventListener()

API version 25.0 or later; it adds a listener for standard event types in APIversion 30.0 or later.

Fires a custom event. This method is only available in API version 25.0or later.

fireEvent()

Removes a listener for a custom event type or a standard event type.This method removes a listener for custom event types in API version

removeEventListener()

58

Omni-Channel Objects for the Salesforce Console IntegrationToolkit

Omni-Channel Developer Guide

Page 63: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DescriptionMethod

25.0 or later; it removes a listener for standard event types in API version30.0 or later.

Omni-Channel Objects for the Lightning Console JavaScript APIOmni-Channel lets your call center route any type of incoming work item to the most qualified, available agents. The Lightning ConsoleJavaScript API for Lightning Experience includes several objects that let you control how Omni-Channel works within the LightningService Console for your organization.

If you need more information on the Lightning Console JavaScript API, see Lightning Console JavaScript API.

acceptAgentWork for Lightning Experience

Accepts a work item that’s assigned to an agent.

closeAgentWork for Lightning Experience

Changes the status of a work item to Closed and removes it from the list of work items in the Omni-Channel utility.

declineAgentWork for Lightning Experience

Declines a work item that’s assigned to an agent.

getAgentWorks for Lightning Experience

Returns a list of work items that are assigned to an agent and open in the agent’s workspace.

getAgentWorkload for Lightning Experience

Retrieves an agent’s currently assigned workload. Use this method to reroute work to available agents.

getServicePresenceStatusChannels for Lightning Experience

Retrieves the service channels that are associated with an Omni-Channel user’s current presence status.

getServicePresenceStatusId for Lightning Experience

Retrieves an agent’s current presence status.

login for Lightning Experience

Logs an agent in to Omni-Channel with a specific presence status.

logout for Lightning Experience

Logs an agent out of Omni-Channel.

setServicePresenceStatus for Lightning Experience

Sets an agent's presence status to a status with a particular ID. If the specified agent is not already logged in, we log in the agentwith the presence status. This method removes the need for you to make more calls.

Events for Omni-Channel

JavaScript can be executed when certain types of events occur in a console, such as when a user closes a tab. There are a few eventsthat are specific to Omni-Channel. These events apply to Lightning Experience only.

acceptAgentWork for Lightning ExperienceAccepts a work item that’s assigned to an agent.

59

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 64: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Arguments

DescriptionTypeName

The ID of the work item the agent accepts.stringworkId

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><lightning:button label="Accept" onclick="{! c.acceptWork }" />

</aura:component>

Controller code:

({acceptWork: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.getAgentWorks().then(function(result) {

var works = JSON.parse(result.works);var work = works[0];omniAPI.acceptAgentWork({workId: work.workId}).then(function(res) {

if (res) {console.log("Accepted work successfully");

} else {console.log("Accept work failed");

}}).catch(function(error) {

console.log(error);});

});}

})

ResponseThis method returns a promise that, upon success, resolves to true and is rejected on error.

closeAgentWork for Lightning ExperienceChanges the status of a work item to Closed and removes it from the list of work items in the Omni-Channel utility.

Arguments

DescriptionTypeName

The ID of the work item that’s closed.stringworkId

60

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 65: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><lightning:button label="Close" onclick="{! c.closeWork }" />

</aura:component>

Controller code:

({closeWork: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.getAgentWorks().then(function(result) {

var works = JSON.parse(result.works);var work = works[0];omniAPI.closeAgentWork({workId: work.workId}).then(function(res) {

if (res) {console.log("Closed work successfully");

} else {console.log("Close work failed");

}}).catch(function(error) {

console.log(error);});

});}

})

ResponseThis method returns a promise that, upon success, resolves to true and is rejected on error.

declineAgentWork for Lightning ExperienceDeclines a work item that’s assigned to an agent.

Arguments

DescriptionTypeName

The ID of the work item that the agent declines.stringworkId

The reason that the agent declined the work request.stringdeclineReason

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" />

61

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 66: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

<lightning:button label="Decline" onclick="{! c.declineWork }" /></aura:component>

Controller code:

({declineWork: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.getAgentWorks().then(function(result) {

var works = JSON.parse(result.works);var work = works[0];omniAPI.declineAgentWork({workId: work.workId}).then(function(res) {

if (res) {console.log("Declined work successfully");

} else {console.log("Decline work failed");

}}).catch(function(error) {

console.log(error);});

});}

})

ResponseThis method returns a promise that, upon success, resolves to true and is rejected on error.

getAgentWorks for Lightning ExperienceReturns a list of work items that are assigned to an agent and open in the agent’s workspace.

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><lightning:button label="Get Agent works" onclick="{! c.getAgentWorks }" />

</aura:component>

Controller code:

({getAgentWorks: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.getAgentWorks().then(function(result) {

var works = JSON.parse(result.works);console.log('First Agent Work ID is: ' + works[0].workId);console.log('Assigned Entity Id of the first Agent Work is: ' +

works[0].workItemId);console.log('Is first Agent Work Engaged: ' + works[0].isEngaged);

}).catch(function(error) {console.log(error);

62

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 67: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

});}

})

ResponseThis method returns a promise that, upon success, resolves to an array of work objects, containing the following fields.

DescriptionTypeName

The ID of the object that’s routed through Omni-Channel. This object becomes awork assignment with a workId when it’s assigned to an agent.

StringworkItemId

The ID of a work assignment that’s routed to an agent.StringworkId

Indicates whether an agent is working on a work item that’s been assigned to them(true) or not (false).

BooleanisEngaged

getAgentWorkload for Lightning ExperienceRetrieves an agent’s currently assigned workload. Use this method to reroute work to available agents.

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><lightning:button label="Get workload" onclick="{! c.getAgentWorkload }" />

</aura:component>

Controller code:

({getAgentWorkload: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.getAgentWorkload().then(function(result) {

console.log('Retrieved Agent Configured Capacity and Current Workloadsuccessfully');

console.log('Agent\'s configured capacity is: ' + result.configuredCapacity);

console.log('Agent\'s currently assigned workload is: ' +result.currentWorkload);

}).catch(function(error) {console.log(error);

});}

})

ResponseThis method returns a promise that, upon success, resolves to an object, containing the following fields.

63

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 68: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DescriptionTypeName

The agent’s configured capacity (work that’s assigned to the current user) throughPresence Configuration.

numberconfiguredCapacity

The agent’s currently assigned workload.numbercurrentWorkload

getServicePresenceStatusChannels for Lightning ExperienceRetrieves the service channels that are associated with an Omni-Channel user’s current presence status.

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><lightning:button label="Get Status Channels" onclick="{! c.getStatusChannels }" />

</aura:component>

Controller code:

({getStatusChannels: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.getServicePresenceStatusChannels().then(function(result) {

var channels = JSON.parse(result.channels);//For example purposes, just retrieve the first channelconsole.log('First channel ID is: ' + channels[0].channelId);console.log('First channel developer name is: ' + channels[0].developerName);

}).catch(function(error) {console.log(error);

});}

})

ResponseThis method returns a promise that, upon success, resolves to an array of channel objects, containing the following fields.

DescriptionTypeName

The ID of the channel.StringchannelId

The name of the channel.StringdeveloperName

getServicePresenceStatusId for Lightning ExperienceRetrieves an agent’s current presence status.

64

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 69: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><lightning:button label="Get Status" onclick="{! c.getStatus }" />

</aura:component>

Controller code:

({getStatus: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.getServicePresenceStatusId().then(function(result) {

console.log('Status Id is: ' + result.statusId);}).catch(function(error) {

console.log(error);});

}})

ResponseThis method returns a promise that, upon success, resolves to an object, containing the following fields.

DescriptionTypeName

The name of the agent’s current presence status.stringstatusName

The API name of the agent’s current presence status.stringstatusApiName

The ID of the agent’s current presence status.stringstatusId

login for Lightning ExperienceLogs an agent in to Omni-Channel with a specific presence status.

Arguments

DescriptionTypeName

The ID of the presence status. Agents must be given access to this presence statusthrough their associated profile or permission set.

stringstatusId

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" />

65

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 70: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

<lightning:button label="Login" onclick="{! c.login }" /></aura:component>

Controller code:

({login: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.login({statusId: "0N5xx0000000001"}).then(function(result) {

if (result) {console.log("Login successful");

} else {console.log("Login failed");

}}).catch(function(error) {

console.log(error);});

}})

ResponseThis method returns a promise that, upon success, resolves to true and is rejected on error.

logout for Lightning ExperienceLogs an agent out of Omni-Channel.

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><lightning:button label="Logout" onclick="{! c.logout }" />

</aura:component>

Controller code:

({logout: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.logout().then(function(result) {

if (result) {console.log("Logout successful");

} else {console.log("Logout failed");

}}).catch(function(error) {

console.log(error);});

}})

66

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 71: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

ResponseThis method returns a promise that, upon success, resolves to true and is rejected on error.

setServicePresenceStatus for Lightning ExperienceSets an agent's presence status to a status with a particular ID. If the specified agent is not already logged in, we log in the agent withthe presence status. This method removes the need for you to make more calls.

Arguments

DescriptionTypeName

The ID of the presence status to which you want to set the agent. Agents must begiven access to this presence status through their associated profile or permissionset.

stringstatusId

Sample CodeComponent code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><lightning:button label="Set Status" onclick="{! c.setStatus }" />

</aura:component>

Controller code:

({setStatus: function(cmp, evt, hlp) {

var omniAPI = cmp.find("omniToolkit");omniAPI.setServicePresenceStatus({statusId: "0N5xx0000000002"}).then(function(result)

{console.log('Current statusId is: ' + result.statusId);console.log('Channel list attached to this status is: ' + result.channels);

}).catch(function(error) {console.log(error);

});}

})

ResponseThis method returns a promise that, upon success, resolves to an object containing the following fields.

DescriptionTypeName

The name of the agent’s current presence status.stringstatusName

The API name of the agent’s current presence status.stringstatusApiName

The ID of the agent’s current presence status.stringstatusId

67

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 72: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DescriptionTypeName

Returns the IDs and API names of the channels associated with the presence status.JSON string ofchannelobjects

channels

Events for Omni-ChannelJavaScript can be executed when certain types of events occur in a console, such as when a user closes a tab. There are a few eventsthat are specific to Omni-Channel. These events apply to Lightning Experience only.

lightning:omniChannelLoginSuccess

Indicates that an agent has been logged into Omni-Channel successfully.

lightning:omniChannelStatusChanged

Indicates that an agent has changed his or her presence status in Omni-Channel.

lightning:omniChannelLogout

Indicates that an agent has logged out of Salesforce.

lightning:omniChannelWorkAssigned

Indicates that an agent has been assigned a new work item.

lightning:omniChannelWorkAccepted

Indicates that an agent has accepted a work assignment, or that a work assignment has been automatically accepted.

lightning:omniChannelWorkDeclined

Indicates that an agent has declined a work assignment.

lightning:omniChannelWorkClosed

Indicates that an agent has closed a tab in the console that’s associated with a work item. When the tab is closed, the status of theAgentWork object associated with it automatically changes to Closed.

lightning:omniChannelWorkloadChanged

Indicates that an agent’s workload has changed. This includes receiving new work items, declining work items, and closing items inthe console. It also indicates that there has been a change to an agent’s capacity or presence configuration, or that the agent hasgone offline in the Omni-Channel utility.

lightning:omniChannelLoginSuccess

Indicates that an agent has been logged into Omni-Channel successfully.

Response

DescriptionTypeName

The ID of the agent’s current presencestatus.

stringstatusId

68

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 73: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Example: This example prints a line to the browser’s developer console when an Omni-Channel user logs into Omni-Channelsuccessfully.

Component code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><aura:handler event="lightning:omniChannelLoginSuccess" action="{! c.onLoginSuccess

}"/></aura:component>

Controller code:

({onLoginSuccess : function(component, event, helper) {

console.log("Login success.");var statusId = event.getParam('statusId');console.log(statusId);

},})

lightning:omniChannelStatusChanged

Indicates that an agent has changed his or her presence status in Omni-Channel.

Response

DescriptionTypeName

The ID of the agent’s current presencestatus.

stringstatusId

JSON string of channel objects.stringchannels

The name of the agent’s current presencestatus.

stringstatusName

The API name of the agent’s currentpresence status.

stringstatusApiName

Example: This example prints status details to the browser’s developer console when an Omni-Channel user's presence statusis changed.

Component code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><aura:handler event="lightning:omniChannelStatusChanged" action="{! c.onStatusChanged

}"/></aura:component>

69

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 74: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Controller code:

({onStatusChanged : function(component, event, helper) {

console.log("Status changed.");var statusId = event.getParam('statusId');var channels = event.getParam('channels');var statusName = event.getParam('statusName');var statusApiName = event.getParam('statusApiName');console.log(statusId);console.log(channels);console.log(statusName);console.log(statusApiName);

},})

channel

The channel object contains the following properties:

DescriptionTypeName

Retrieves the ID of the service channel that’sassociated with a presence status.

stringchannelId

Retrieves the developer name of the servicechannel that’s associated with thechannelId.

stringdeveloperName

lightning:omniChannelLogout

Indicates that an agent has logged out of Salesforce.

Response

None

Example: This example prints a line to the browser’s developer console when an Omni-Channel user logs out of Salesforce.

Component code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><aura:handler event="lightning:omniChannelLogout" action="{! c.onLogout }"/>

</aura:component>

Controller code:

({onLogout : function(component, event, helper) {

console.log("Logout success.");},

})

70

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 75: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

lightning:omniChannelWorkAssigned

Indicates that an agent has been assigned a new work item.

Response

DescriptionTypeName

The ID of the object that’s routed throughOmni-Channel. This object becomes a work

stringworkItemId

assignment with a workId when it’sassigned to an agent.

The ID of a work assignment that’s routedto an agent.

stringworkId

Example: This example prints work details to the browser’s developer console when an Omni-Channel user is assigned a newwork item.

Component code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><aura:handler event="lightning:omniChannelWorkAssigned" action="{! c.onWorkAssigned

}"/></aura:component>

Controller code:

({onWorkAssigned : function(component, event, helper) {

console.log("Work assigned.");var workItemId = event.getParam('workItemId');var workId = event.getParam('workId');console.log(workItemId);console.log(workId);

},})

lightning:omniChannelWorkAccepted

Indicates that an agent has accepted a work assignment, or that a work assignment has been automatically accepted.

Response

DescriptionTypeName

The ID of the object that’s routed throughOmni-Channel. This object becomes a work

stringworkItemId

assignment with a workId when it’sassigned to an agent.

71

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 76: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

DescriptionTypeName

The ID of a work assignment that’s routedto an agent.

stringworkId

Example: This example prints work details to the browser’s developer console when an Omni-Channel user accepts a workassignment, or when a work assignment is automatically accepted.

Component code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><aura:handler event="lightning:omniChannelWorkAccepted" action="{! c.onWorkAccepted

}"/></aura:component>

Controller code:

({onWorkAccepted : function(component, event, helper) {

console.log("Work accepted.");var workItemId = event.getParam('workItemId');var workId = event.getParam('workId');console.log(workItemId);console.log(workId);

},})

lightning:omniChannelWorkDeclined

Indicates that an agent has declined a work assignment.

Response

DescriptionTypeName

The ID of the object that’s routed throughOmni-Channel. This object becomes a work

stringworkItemId

assignment with a workId when it’sassigned to an agent.

The ID of a work assignment that’s routedto an agent.

stringworkId

Example: This example prints work details to the browser’s developer console when an Omni-Channel user declines a workassignment.

Component code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" />

72

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 77: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

<aura:handler event="lightning:omniChannelWorkDeclined" action="{! c.onWorkDeclined}"/></aura:component>

Controller code:

({onWorkDeclined : function(component, event, helper) {

console.log("Work declined.");var workItemId = event.getParam('workItemId');var workId = event.getParam('workId');console.log(workItemId);console.log(workId);

},})

lightning:omniChannelWorkClosed

Indicates that an agent has closed a tab in the console that’s associated with a work item. When the tab is closed, the status of theAgentWork object associated with it automatically changes to Closed.

Response

DescriptionTypeName

The ID of the object that’s routed throughOmni-Channel. This object becomes a work

stringworkItemId

assignment with a workId when it’sassigned to an agent.

The ID of a work assignment that’s routedto an agent.

stringworkId

Example: This example prints work details to the browser’s developer console when an Omni-Channel user closes a tab in theconsole that’s associated with a work item.

Component code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><aura:handler event="lightning:omniChannelWorkClosed" action="{! c.onWorkClosed

}"/></aura:component>

Controller code:

({onWorkClosed : function(component, event, helper) {

console.log("Work closed.");var workItemId = event.getParam('workItemId');var workId = event.getParam('workId');console.log(workItemId);

73

Omni-Channel Objects for the Lightning Console JavaScriptAPI

Omni-Channel Developer Guide

Page 78: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

console.log(workId);},

})

lightning:omniChannelWorkloadChanged

Indicates that an agent’s workload has changed. This includes receiving new work items, declining work items, and closing items in theconsole. It also indicates that there has been a change to an agent’s capacity or presence configuration, or that the agent has goneoffline in the Omni-Channel utility.

Response

DescriptionTypeName

The configured capacity for the agent.numberconfiguredCapacity

The agent’s workload before the change.numberpreviousWorkload

The agent’s new workload after the change.numbernewWorkload

Example: This example prints workload details to the browser’s developer console when an agent’s workload changes.

Component code:

<aura:component implements="flexipage:availableForAllPageTypes" access="global" ><lightning:omniToolkitAPI aura:id="omniToolkit" /><aura:handler event="lightning:omniChannelWorkloadChanged" action="{!

c.onWorkloadChanged }"/></aura:component>

Controller code:

({onWorkloadChanged : function(component, event, helper) {

console.log("Workload changed.");var configuredCapacity = event.getParam('configuredCapacity');var previousWorkload = event.getParam('previousWorkload');var newWorkload = event.getParam('newWorkload');console.log(configuredCapacity);console.log(previousWorkload);console.log(newWorkload);

},})

External Routing for Omni-Channel

Multiple routing options, one console. Integrate third-party routing with Omni-Channel to give your support team more routing optionsfor their work.

74

External Routing for Omni-ChannelOmni-Channel Developer Guide

Page 79: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Before setting up external routing, make sure that you have a working implementation of Omni-Channel. You’ll use version 41.0 or laterof Salesforce standard APIs and streaming APIs to connect Salesforce with an external routing implementation in your routing configuration.Then you can create queues that use either Omni-Channel routing or your external routing implementation.

Are you ready to set up and use external routing? Let’s get started.

External Routing Technical Architecture and Process

See an overview of how external routing works to connect Salesforce with your external routing implementation.

Expected Behavior for External Routing for Omni-Channel

Verify that the behavior you observe while testing and using your implementation of external routing matches the following expectedbehavior scenarios.

Troubleshooting External Routing for Omni-Channel

If you encounter issues with your implementation of External Routing for Omni-Channel, try the following troubleshooting steps.

External Routing Technical Architecture and ProcessSee an overview of how external routing works to connect Salesforce with your external routing implementation.

The following image provides a visual description of how information is shared between Salesforce and your partner application.

Information is shared using Salesforce APIs and the APIs for your partner application using the following process.

1. Salesforce sends events using Salesforce Streaming APIs for the PendingServiceRouting object.

2. Partner application creates a session to authenticate.

3. Partner application queries Salesforce for work details, agent availability, and more.

4. Partner application determines the routing decision.

5. AgentWork is created and pushed to the specified agent in Salesforce.

Salesforce API Resources for External Routing

Use the following resources as you integrate your partner application with Omni-Channel.

75

External Routing Technical Architecture and ProcessOmni-Channel Developer Guide

Page 80: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Salesforce API Resources for External RoutingUse the following resources as you integrate your partner application with Omni-Channel.

• AgentWork

• PendingServiceRouting on page 15

• UserServicePresence

• Streaming API Developer Guide

• Streaming API Message Durability

• Streaming API Limits

Integrate External Routing for Omni-ChannelUse the following steps to integrate your external routing implementation with Omni-Channel.

• Step 1: Create a Routing Configuration and Queue for External Routing

• Step 2: Create a PushTopic for PendingServiceRouting

• Step 3: Listen to the PushTopic

• Step 4: Create AgentWork

Step 1: Create a Routing Configuration and Queue for External RoutingExternal routing requires a separate routing configuration and queue in Omni-Channel. These separate objects define routing behaviorand assign work to agents.

1. In Setup, enter Routing Configurations in the Quick Find box, then select Routing Configurations.

2. Create a routing configuration and select External Routing for the routing model.

3. Enter Queues in the Quick Find box, then select Queues.

4. Create a queue and connect it to the routing configuration you created.

Step 2: Create a PushTopic for PendingServiceRoutingA PushTopic is a query that is the basis for notifying listeners of changes to records in an organization. Create a PushTopic forPendingServiceRouting so partners can receive event notifications.

Reference the following code sample to create a PushTopic using Apex code. If you need help creating a PushTopic, see Create a PushTopicin the Streaming API Developer Guide.

PushTopic events use the following database values to indicate work status:

• ASSIGNED (0, “Assigned”)

• UNAVAILABLE (1, “Unavailable”)

• DECLINED (2, “Declined”)

• OPENED (3, “Opened”)

• CLOSED (4, “Closed”)

• DECLINED_ON_PUSH_TIMEOUT (5, “DeclinedOnPushTimeout”)

• CANCELLED (6, “Canceled”)

76

Integrate External Routing for Omni-ChannelOmni-Channel Developer Guide

Page 81: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

• TRANSFERRED (7, “Transferred”)

PushTopic pushTopic = new PushTopic();pushTopic.Name = PSRPushTopic;pushTopic.Query = 'Select Id, Serial, QueueId, WorkItemId, IsPushed, ServiceChannelId,LastDeclinedAgentSession, CreatedDate from PendingServiceRouting where RoutingModel ='ExternalRouting'';pushTopic.ApiVersion = 39.0;pushTopic.NotifyForOperationCreate = true;pushTopic.NotifyForOperationUpdate = true;pushTopic.NotifyForOperationDelete = true;pushTopic.NotifyForFields = 'Referenced';insert pushTopic;

Step 3: Listen to the PushTopicGive your event notifications somewhere to go by setting up a listener.

Salesforce’s Streaming API uses the HTTP/1.1 request-response model and the Bayeux protocol (CometD implementation). The easiestway to connect to the Streaming API is to use java sdk and Oauth flow to connect to the PushTopic you created.

For reference and a code sample, see Use the Connector with OAuth Bearer Token Login from the Streaming API Developer Guide.

Step 4: Create AgentWorkYour partner application must create an AgentWork record to route the work to an agent in Omni-Channel.

When the external routing implementation receives new PendingServiceRouting creation events (where the routing typeequals External), it uses the standard Salesforce SOAP API to fetch further information based on the PendingServiceRouting. Itmakes a routing decision by creating AgentWork records. This API is existing functionality that partners use to query Salesforce.

Reference the following code sample to create AgentWork using Apex.

AgentWork work = new AgentWork();work.ServiceChannelId = '<ServiceChannelId>;work.WorkItemId = '<WorkItemId>';work.UserId = '<UserId>';work.PendingServiceRoutingId = '<PendingServiceRoutingId>';insert work;

Expected Behavior for External Routing for Omni-ChannelVerify that the behavior you observe while testing and using your implementation of external routing matches the following expectedbehavior scenarios.

Agent accepts the work:

1. Chat visitor initiates a chat request from the external routing button.

2. PendingServiceRouting is created.

3. Partner is notified by a pushTopic event (EventType=Create, isPushed=false).

4. Partner creates AgentWork using the PSR.

5. Agent is routed the chat request (AgentWork Status = Assigned).

6. Agent accepts the chat request (AgentWork Status = Accept).

77

Expected Behavior for External Routing for Omni-ChannelOmni-Channel Developer Guide

Page 82: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

7. Omni-Channel deletes the PendingServiceRouting after Agent accepts the work.

8. Partner is notified by a pushTopic event (EventType=Delete).

Agent declines the work through Omni-Channel:

1. Agent declines the assigned AgentWork.

2. Salesforce updates the PendingServiceRouting.

3. Partner is notified by a pushTopic event (EventType=Update, LastDeclinedAgentSession=agent’s session id in Chat (not theSalesforce session), isPushed=false).

4. Partner creates a new AgentWork using the updated PendingServiceRouting for rerouting.

Agent doesn’t accept the work due to push time-out:

1. Existing PendingServiceRouting is updated.

2. Partner is notified by a pushTopic event (EventType=Update, PSR Fields updated: isPushed=false,LastDeclinedAgentSession=agent’s liveagent session id).

3. Partner creates a new AgentWork for rerouting.

Agent transfers the work to an external routing queue:

1. New PendingServiceRouting for the transfer is created.

2. Partner is notified by a pushTopic event (EventType=Create, isTransfer=true, isPushed=false).

3. The routing process is repeated.

Agent transfers the work to another agent :

1. The PendingServiceRouting from the original chat request is deleted.

2. A new PendingServiceRouting isn’t created when the work is transferred. Subscribe to AgentWork and LiveChatTranscriptto determine whether the work was transferred to an agent.

3. Two AgentWorks are created for the LiveChatTranscript:

a. First AgentWork with the Status = Opened

b. Second AgentWork with the Status = Assigned

4. The LiveChatTranscript is updated with the Status = In Progress and the Owner = second Agent.

5. To determine if the Transfer to Agent has occurred, check that the second AgentWork isn’t inserted into the same LiveChatTranscriptas the first AgentWork.

Important: We don’t recommend using both external routing and Omni-Channel queue-based routing in the same implementation.If the same agent is in both queues, the agent’s capacity could be exceeded. We don't have control over an agent's capacity inexternal routing. If you attempt this combination, there can be unknown issues.

Troubleshooting External Routing for Omni-ChannelIf you encounter issues with your implementation of External Routing for Omni-Channel, try the following troubleshooting steps.

Recover from an External Routing Adaptor RestartWhen the third-party adaptor recovers from restarting, it should leverage the durability feature of the Streaming API (since version 37.0)and replay from the last successful position of the PSR topic.

78

Troubleshooting External Routing for Omni-ChannelOmni-Channel Developer Guide

Page 83: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

Reference the following code sample in Java.

// Register streaming extensionvar replayExtension = new cometdReplayExtension();replayExtension.setChannel(***<Streaming Channel to Subscribe to>***);replayExtension.setReplay(<Event Replay Option>);cometd.registerExtension('myReplayExtensionName', replayExtension);

For more information, see Message Durability in the Streaming API Developer Guide.

Recover from a Salesforce Data Recovery InstanceAn org instance can be recovered from a Salesforce data center switch. The recovery process involves downtime, so all online agentsmust be logged out. All states maintained by the third-party adaptor, such as agent presence, aren’t applicable and must be reset. Thethird-party adaptor should reinitialize as when it first subscribed to the topic.

Test the Client SolutionYou can use the Streaming API to listen to CRUD events for UserServicePresence and PendingServiceRouting. Forexamples, see Code Examples in the Streaming API Developer Guide.

79

Troubleshooting External Routing for Omni-ChannelOmni-Channel Developer Guide

Page 84: Omni-Channel Developer Guide · Apex triggers are supported with AgentWork. Associated Objects This object has the following associated objects. Unless noted, they are available in

INDEX

Eevents 56

MMethods

console events 56events 56

OObjects

OmniSupervisorConfig 11

Objects (continued)OmniSupervisorConfigGroup 12OmniSupervisorConfigProfile 13OmniSupervisorConfigUser 14

Omni-ChannelSalesforce Console Integration 43, 59SOAP API objects 2

OmniSupervisorConfig object 11OmniSupervisorConfigGroup object 12OmniSupervisorConfigProfile object 13OmniSupervisorConfigUser object 14

80