- 19 Jun 2024
- 9 Minutes to read
- Print
- DarkLight
24.2. ECI Deployment Guide
- Updated on 19 Jun 2024
- 9 Minutes to read
- Print
- DarkLight
ECI refers to the Salesforce feature Einstein Conversation Insights which is Salesforce's AI driven Insight equivalent offering.
This product is an integration with Salesforce, whereby in order to power the ECI feature Salesforce relies on us as a call recording provider for them to then produce transcriptions and data analysis.
It's important to note upfront that ECI is not compatible with Natterbox Insight and standard Natterbox call recordings, once enabled a user's call recordings will be consumed by Salesforce only meaning there is no method of a user accessing their recordings through the Natterbox platform for ECI.
How to enable ECI
Enabling ECI from Salesforce
Adding the Metadata entry in Salesforce
Deploy the following Media Provider XML into the Salesforce Org:
<?xml version="1.0" encoding="UTF-8"?>
<CallCoachingMediaProvider xmlns="http://soap.sforce.com/2006/04/metadata"> <isActive>true</isActive>
<providerDescription>Natterbox's solution for ECI.</providerDescription> <providerName>Natterbox</providerName>
</CallCoachingMediaProvider>
See here on Salesforce guides on how best to do this.
This our recommended means of doing so, which uses Workbench :
Open Workbench - CLICK HERE
Choose the environment you’re installing into Production or Sandbox
Choose a Salesforce API version which matches or is under the target Organisations API version - See HERE on how to fetch this from Salesforce
Log in with your Salesforce account (using an Admin user)
Navigate to Data → Insert
Search for CallCoachingMediaProvider in the dropdown and pick ‘Single Record’
Hit Next
Enter the name ‘Natterbox’ in the ProviderName box (must be exact match). The description can be whatever you like and the ConversationVendorInfoId can be left empty.
Hit Insert
The record should be saved correctly
Add ECI connected App
From Setup, enter App Manager in the Quick Find box, and then select App Manager.
Click New Connected App.
Complete these fields in the Basic Information section (ensure the API name matches exactly)
Connected App Name: ECI Connected App
API Name: ECI_Connected_App
Important: Use this exact name.
Contact Email: [the email address you want to use]
Select Enable OAuth Settings and complete these fields
Set the callback URL to : https://dummy_url/services/authcallback/ECI_Auth_Provider
Note the Callback URL will be replaced once the Auth Provider is configured
Select the following OAuth Scopes
Access content resources (content)
Manage user data via APIs (api)
Manage user data via Web browsers (web)
Perform requests at any time (refresh_token, offline_access)
Ensure that Require Secret for Web Server Flow & Require Secret for Refresh Token Flow are both selected
Hit Save
Return to the App Manager and confirm the ECI Connected App is created
Note it can up to 10 minutes to take effect.
Click the dropdown in the ECI Connected App row and select Manage
Click Edit Policies
Complete these fields - All other fields can be left blank :
Permitted Users: Admin approved users are pre-authorized
P Relaxation: Relax IP restrictions
Refresh Token Policy: Expire refresh token after 365 days
Hit Save
From the ECI Connected App page select Manage Policies
Assign the Salesforce profiles you want to give ECI access to
We recommend selecting Standard User, System Administrator, and any other profiles that use the connected app
Hit Save
Return the App Manager and in the ECI Connected App row and select View
Click Manage Consumer Details to see the Consumer Key and Consumer Secret
Verify your Salesforce user using the Salesforce security code
The Consumer Key and Consumer Secret values are shown. Keep this window open, because these values are required to create the Auth Provider for the ECI Connected App.
Add ECI as an Authorized Provider
Add Einstein Conversation Insights (ECI) as an authorized provider from the Setup menu.
From Setup, enter Identity in the Quick Find box, and then select Auth. Providers
Hit New
Select Salesforce for the Provider Type.
Complete these fields with the specified information.
Name: ECI Auth Provider
URL Suffix: ECI_Auth_Provider
Important: Use this exact name.
Consumer Key: Add the Consumer Key from the previous task here.
Consumer Secret: Add the Consumer Secret from the previous task here.
Default Scopes: content api web refresh_token offline_access
Hit Save
The Callback URL can be obtained.
Click onto the name of the newly created Auth provider
Copy the Callback URL
From the App Manager page, go to the ECI Connected Appand replace the dummy Callback URL value with the copied one.
Setup
App manager
Click View ECI Connected App
Click Edit
Paste over the Callback URL
Hit Save.
Changes can take up to 10 minutes to take effect. Deleting a parent org also deletes all connected apps with OAuth settings enabled.
Add ECI Named Credentials
Add the named credentials for ECI from the Setup menu.
From Setup, enter Named Credentials in the Quick Find box, and then select Named Credentials
Click the dropdown next to New and select New Legacy
Complete these fields with the specified information
Label: ECI Named Credential
Name: ECI_Named_Credential
URL: https://your_domain
Replace “your_domain” with your actual domain that is obtained from the Domains page in Setup. It’s labeled Current My Domain URL
HTTPS Option column.
Identity Type: Named Principal
Authentication Protocol: OAuth 2.0
Authentication Provider: ECI Auth Provider
Scope: content api web refresh_token offline_access
Start Authentication Flow on Save: selected
Generate Authorization Header: selected
Hit Save
A login and an authorization page are shown. Follow the process to validate the account, and then click Authorize
Note - if a redirect error is thrown when saving, return to the Named Credentials list and edit the existing entry and double check the URL is set to the Org’s Domain correctly before saving again
Return to the Named Credentials page and verify that the Authentication Status now reads Authenticated with [your integration user with admin permissions]
Add the AWS S3 Named Credentials
Add the AWS named credentials for ECI from the Setup menu.
From Setup, enter Named Credentials in the Quick Find box, and then select Named Credentials
Click the dropdown next to New and select New Legacy
Complete these fields with the specified information.
Label: NatterboxS3AWS
Name: NatterboxS3AWS
URL: https://eci-prod.s3.eu-west-1.amazonaws.com/
Identity Type: Named Principal
Authentication Protocol: AWS Signature Version 4
AWS Access Key ID: <provided by NB>
AWS Secret Access Key: <provided by NB>
AWS Region: eu-west-1
AWS Service: s3
Generate Authorization Header: Selected
Hit Save
6. Enabling Users with ECI (Steps to be completed by Salesforce Admin)
Now ECI is ready, identify the users you wish to use with ECI
Provide all users with the ECI permission set
7. Add the ECI player Salesforce component to the Voice Object (Steps to be completed by Salesforce Admin)
Navigate to the Lightning App Builder
Create or Edit a record for the Voice Call Record Page
Add the component Call Recording Player
Hit Save
Note the ECI service does introduce a new Scheduled job which handles the retries of ECI recordings which have failed to be processed, but this job automatically schedules itself and so it does not need to be turned on from the Natterbox App Admin Home :
FAQ
Will ECI be a chargeable integration?
Yes, please reach out to your account manager to discuss subscribing to ECI.
What limitations does the ECI service have?
Please see here for the full list of limitations from Salesforce HERE
Why has my ECI service stopped?
If you've suspended, removed or changed the creds of the user that authenticated the Named Credentials you will have to re-auth the named credentials.
This can be done by re-saving the Named Credentials with a user who has the ECI integration license.
How long does it take to process a call recording for a user?
The process relies on the Call Reporting Object being correctly populated in Salesforce after which it's then dependent on the Salesforce ECI service completing the job, so end to end it should not take more than an hour to process a call.
If a failure is encountered a further 20 minutes will be added on for the call to be retried, which will be attempted two more times if further failures are encountered over 48 hours (provided that the ECI Upload Service Scheduled Job is running).
Is ECI compatible with Insight and call recordings?
No, ECI works separately to Natterbox Insight and call recordings. All ECI generated call recordings are solely managed via Salesforce and cannot be accessed from the Natterbox platform.
Is ECI compatible with Natterbox call recordings?
Yes, but there are limitations around call recordings when it comes to call transfers.
Currently it will not be possible to fully record both the agent and customer conversation for both ECI and Natterbox call recordings, each service will only be able to accept one half of the call.
i.e. ECI can only be configured to record and process the customer's audio leg and Standard call recording can only be configured to record the agent's audio leg.
What does this mean for attended transfers?
It means no one service can capture the entirety of the call (i.e. the first agent to customer leg, the consult leg, the completed transfer leg between the final two parties).
Considering ECI doesn't support processing the consult leg, it's recommended to configure the standard call recording to record the agent's leg of the call and ECI to record the customer leg of the call, this way all of the call is covered across the two services so that :
Audio associated with the customer is saved and stored in Salesforce by ECI
Audio associated with the agent is saved and stored on the Natterbox platform
Quick reference when configuring a routing policy :
What callflows are supported?
Salesforce only supports inbound and outbound calls in ECI.
Please note currently Salesforce does not support internal calls (i.e. agent to agent), this also includes the consult leg of an attended transfer call.
External calls are also not currently supported, meaning if two customers/external non-Salesforce parties are connected to each other via the Natterbox platform, this call will not be recorded or processed by ECI.
What does this mean for attended transfers?
The consult leg of an attended transfer is not provided with a Salesforce Voice Call object, meaning that the recorded part of the conversation is not processed by ECI, the only parts that get processed are :
The first leg of the call between the agent and the customer
The last leg of the call between the customer and the connected party (likely a second agent)
Note if the last leg of the call consists of two external non-Salesforce parties (i.e. two customers), this leg of the call will not be recorded or processed by ECI.
Is it possible to use a custom S3 endpoint for ECI recordings?
No, with this version that is unsupported, all call recordings will be initially managed by Natterbox and ultimately sent and stored in Salesforce.
How are call recordings stored and processed by Natterbox?
Natterbox calls forwards all call recordings unencrypted and uncompressed directly to Salesforce, the call recordings are only ever stored briefly if the ECI service is temporarily unavailable.
Where is the data processed?
From a Natterbox point of view all existing call processing will operate within your nearest data centre and then the call recording will be temporarily stored in an AWS S3 bucket located in Ireland as the service waits for Salesforce to process the call.
After which Salesforce will store call recordings from the EU in a data center based in Germany and for the US and the rest of the world all call recordings will be stored in a data center based in the US.
Internal Troubleshooting
Why is only one speaker appearing on the call recording in Salesforce?
Call recordings sent to Salesforce need to be in stereo in order for the speakers to be distinguished from each other, ensure the step to enable stereo via Toolbox has been completed
Why hasn't my ECI call been populated?
If the Call Reporting record associated with your call is not available after an hour, ECI relies on this object being available and the processing won't be complete, please ensure the Call Reporting scheduled job has been enabled in Salesforce.
If the Call Reporting record is available, fetch the ID of the call (referred to as the UUID) and then review the Natterbox App's error logs to see if the UUID of the call your looking for is present as an error will be present if ECI had failed to process your call.
Why was my call recording playable and now no longer available from the Natterbox App?
Although the ECI call recording is transient data, it will be available for playback from the Natterbox App for a short while as the service waits for the ECI processing to complete, after which the recording will be cleaned up and removed meaning the option to play will remain.