Salesforce Agentforce Voice and Vonage Contact Center
If enabled for your account, using Service Cloud Voice (SCV) with Vonage Contact Center (VCC), you can dial into a Salesforce Agentforce Service Agent (ASA) to assist customers and route to agents when necessary. When configured, the Bot Connector applet notifies Salesforce about calls to be routed to an ASA. The Salesforce ASA then uses the configured topics to assist the customer best.
In cases where the ASA is unable to resolve the request or the customer requests a call to a human agent, the ASA will use the configured escalation flow to determine which VCC interaction plan to route the call to next. This routing will either use a mapped interaction plan (for information on interaction plans, see the Interaction Plans Architect section) or the ID of a VCC agent who is linked to the target Salesforce user.
Configuration
Minimum Version
To use Vonage Premier for Service Cloud Voice with omni-channel flows and Agentforce, you must install:
version 24.141 (or higher) of the Vonage Premier for Service Cloud Voice package
version 24.141 (or higher) of Vonage for Salesforce.
Interaction plan availability
Make interaction plans available for use in Salesforce omni-channel flows:
Go to Interaction plan → Manager.
Make the required interaction plans available for use in the omni-channel flows:
Create a new interaction plan or edit an existing interaction plan.
Click Show in Salesforce Omni-Channel flows.
For information about using Interaction Plan Manager, see Using Interaction Plans Manager.
Note
If you do not enable interaction plans to show in omni-channel flows, you will not see them while creating queue mappings.
Queue mappings map Salesforce queues to VCC interaction plans. For information about creating queue mappings, see the Working with mappings in Interaction Plan Manager section.
Bot connector applet
For information on configuring the Bot connector applet see the Bot connector applet section.
Data router applet
When you have configured both the interaction plan and agent ID data sources in the Bot Connector applet, you need a Data router applet to determine where the call should go next.
If agent ID is available, the call is routed to the agent's personal queue.
If agent ID is not available, the call is routed to the interaction plan.
To route the inbound call based on the availability of Agent ID, perform the following steps:
Create a Data router applet.
For information about creating an applet and about Data Router applets, see Creating applet and Data Router applet. A new Data Router applet appears.In Data source, select the name of the agent ID data source.
In Data type, select the String data type.
In Operator, select Is Null.
In Route to applet, select:
Route to interaction plan if agent ID is unavailable
Personal queue applet if agent ID is available
Click Update to save the applet.
When you have created your Data router applet:
Go back to your Bot Connector applet.
In Agent escalation applet, select your Data router applet.
Click Update to save the change.
Route to interaction plan applet
To route the inbound call to the returned interaction plan, perform the following steps:
Create a Route to interaction plan applet.
For information about creating an applet and about Route to interaction plan applets, see Creating an applet and Route to Interaction Plan applet.Go to Routing options. In the Type field, select Data source.
In the Data source name field, enter the name of the interaction plan data source from your Bot connector applet. Specify the data source using the format $(DataSourceName). The data source contains the name of the interaction plan returned by the omni-channel flow.
Optionally, in Next Applet on Failure, select the applet that the call is routed to if the Route to interaction plan applet fails.
Click Update to save the applet.
If you are configuring flows to return an interaction plan only:
Go back to your Bot connector applet.
In Interaction plan escalation applet, select the Route to interaction plan applet.
Click Update to save the change.
Personal queue
To route an inbound call to the available agent, you need to set up a personal queue. For information about setting up personal queues, see Setting up personal queues.
Where required in the Skill tagger applet, use the agent ID data source that you created in the Bot connector applet.
If you are configuring flows to return an agent ID only:
Go back to your Bot Connector applet.
Select the first applet in your personal queue in Agent escalation applet.
Click Update to save the change.
Example configuration
Salesforce configuration
Note
The following configuration steps are performed in Salesforce. Unlike standard configurations, these settings are specific to the VCC workflow and are not found in Salesforce documentation. You must perform these steps exactly as outlined below to ensure proper integration.
Configure omni-channel flow
To configure omni-channel flows in Salesforce, please see the Configuring Salesforce section in the Configuring Vonage Contact Center to use Salesforce Omni-Channel flows page.
Create the Escalation Target field on the Voice Call Record
You must create a new field called Escalation Target on the Voice Call object. This field will store the ID of the Vonage escalation destination (either an Interaction plan ID or a Salesforce user ID) and will be used to determine where a voice call should be escalated.
Navigate to the Object Manager.
Select Voice Call.
Go to Fields & Relationships.
Click New.
In Data Type, select Text.
Click Next.
Fill in the following fields exactly:
Field Label: Escalation Target.
Length: 50.
Field Name: Escalation_Target.
Check Auto add to custom report type for it to be added to the Voice Call Record.
Click Next.
Make sure Voice Call Layout is checked.
Click Save.
Configure an Agentforce Service Agent
To set up the ASA, please follow the Salesforce Create an Agent from an Agentforce Service Agent Template guide to get started.
If you have not configured or do not need Data Cloud, you can click past the step referring to it.
In addition to a generic Agentforce Service Agent, you can configure an ASA to handle escalations. When the generic ASA cannot resolve the caller's issue, the interaction can be routed to the escalation ASA.
When configuring the topics for your ASA, ensure the Escalation topic is assigned. If the Escalation topic isn't assigned, ASA will not be able to escalate the call.
Configure Required Agentforce omni-channel Flows
You need to configure the following omni-channel flows when you have a Salesforce-provisioned telephone number:
Inbound;
Escalation.
You should already have a Messaging Channel with the Salesforce-provisioned number as the channel's name.
To confirm this, follow these steps:
Navigate to Setup.
In the Quick Find box, search for Messaging Settings.
Check if there is a channel with your Salesforce-provisioned number as its name.
Click the channel's name to open its details.
If already configured, in the Omni-Channel Routing section, click Edit. If not already configured, see the Inbound Flow section later in this page.
In Flow Definition, search for the omni-channel Flow that routes to the required ASA.
Select a Fallback Queue. This queue should be mapped to a Vonage Interaction Plan. For more information, see Map Your Salesforce Queues to Telephony Provider Queues.
Click Save
Inbound Flow
To perform the following steps, you must be logged in as an admin in Salesforce.
This is the minimal Omin-Channel flow setup required for the Agentforce Service Agent. The most important step is adding and configuring a Route Work element, which routes the interaction to the correct Agentforce Service Agent.
Navigate to Setup.
In the Quick Find box, search for Flows.
Click New Flow.
Search for and select the Omni-Channel Flow template.
In the Flow Builder, add a Route Work element to the flow.
Fill in the Label and Description fields.
In Set Input Variables section, select recordId in the Record ID Variable box. If not available, click New Resource:
For Resource Type, select Variable.
In API Name, enter RecordId.
In Data Type, select Text.
Check the Available for input box.
Click Done.
In the Service Channel field, select Phone.
In the Route To section, select Agentforce Service Agent. If this is not available, contact your administrator.
In Agentforce Service Agent section, select the Agentforce Service Agent you would like calls to be routed to.
For Fallback Queue, select a queue mapped to a Vonage interaction plan. For more information, see Map Your Salesforce Queues to Telephony Provider Queues.
Click Save.
Click Activate.
Escalation Flow
The following steps outline the minimum required setup for the escalation omni-channel flow, enabling an ASA to route an inbound call to a human agent.
The escalation flow can target a Vonage interaction plan or a specific Salesforce user/agent linked to a VCC user.
Creating interaction plan resources
To perform the following steps, you must be logged in as an admin in Salesforce.
Prerequisite: The queue selected in the Route Work element must be mapped to a Vonage Interaction Plan. For more information, see Map Your Salesforce Queues to Telephony Provider Queues.
Navigate to Setup.
In the Quick Find box, search for Flows.
Click New Flow.
Search for and select the Omni-Channel Flow template.
In Flow Builder, click New Resource. You need to create the following four resources:
RecordID contains the ID of the Voice Call object when the flow is triggered;
Reason for not routing is a Salesforce requirement that allows the ASA to drop from the call during escalation;
QueueID contains the Salesforce queue we want to route to;
Vonage Escalation Target stores the ID of the Vonage interaction plan mapped to the queue stored in the QueueId resource.
Configure each resource as outlined in the table below:
Field name | RecordId | Reason for not routing | QueueId | Vonage Escalation Target |
|---|---|---|---|---|
Label | RecordId | Reason for not routing | QueueId | Vonage Escalation Target |
Resource Type | Variable | Variable | Variable | Variable |
API Name | recordId | reasonForNotRouting | queueId | vonageEscalationTarget |
Data Type | Text | Text | Text | Text |
Default Value | N/A | Disconnect | N/A | N/A |
Availability for input | ||||
Availability for output |
Building the interaction plan escalation flow
In the Flow Builder, click the + icon on the flow.
Add two Get Records elements in the following order:
GetQueueFromName;
GetVonageId.
Configure them as follows:
Section name | Field name | Value | |
|---|---|---|---|
N/A | Label | GetQueueFromName | GetVonageId |
Get Records of This Object | Object | Group | Call Center Routing Map |
Filter Group Records | Condition Requirements | All Conditions Are Met (AND) | All Conditions Are Met (AND) |
Field | Developer Name | ReferenceRecord ID | |
Operator | Equals | Equals | |
Value | The developer name of the Salesforce queue you want to route to | queueId | |
N/A | How Many Records to Store | Only the first record | Only the first record |
How to Store Record Data | Choose fields and assign variables (advanced) | Choose fields and assign variables (advanced) | |
Where to Store Field Values | In separate variables | In separate variables | |
Select Variable to Store Group | Field | ID | ExternalId |
Variable | queueId | vonageInteractionPlanId | |
Still in the Flow Builder, click the + icon on the flow. Create one Update Records element and configure it as follows:
Section name | Field | Value |
|---|---|---|
N/A | Label | UpdateVCEscalationTarget |
How to Find Records to Update and Set Their Values | Update Records of This Object Type | Specify conditions to identify records, and set fields individually |
Object | Voice Call | |
Filter Group Records | Condition Requirements | All Conditions Are Met (AND) |
Field | Voice Call ID | |
Operator | Equals | |
Value | recordId | |
Set Field Values for the Voice Call Records | Field | Escalation Target |
Value | vonageEscalationTarget |
Still in the Flow Builder, click the + icon on the flow. Create an Assignment element and configure it as follows:
Section name | Field | Value |
|---|---|---|
N/A | Label | Assign a reason for not routing |
Set Variable Names |