AWS Machine Learning Blog
Boost agent productivity with Salesforce integration for Live Call Analytics
As a contact center agent, would you rather focus on having productive customer conversations or get distracted by having to look up customer information and knowledge articles that could exist in various systems? We’ve all been there. Having a productive conversation while multitasking is challenging. A single negative experience may put a dent on a customer’s perception of your brand.
The Live Call Analytics with Agent Assist (LCA) open-source solution addresses these challenges by providing features such as AI-powered agent assistance, call transcription, call summarization, and much more. As part of our effort to meet the needs of your agents, we strive to add features based on your feedback and our own experience helping contact center operators.
One of the features we added is the ability to write your own AWS Lambda hooks for the start of call and post-call to custom process calls as they occur. This makes it easier to custom integrate with LCA architecture without complex modification to the original source code. It also lets you update LCA stack deployments more easily and quickly than if you were modifying the code directly.
Today, we are excited to announce a feature that lets you integrate LCA with your Customer Relationship Management (CRM) system, built on top of the pre- and post-call Lambda hooks.
In this post, we walk you through setting up the LCA/CRM integration with Salesforce.
Solution overview
LCA now has two additional Lambda hooks:
- Start of call Lambda hook – The LCA Call Event/Transcript Processor invokes this hook at the beginning of each call. This function can implement custom logic that applies to the beginning of call processing, such as retrieving call summary details logged into a case in a CRM.
- Post-call summary Lambda hook – The LCA Call Event/Transcript Processor invokes this hook after the call summary is processed. This function can implement custom logic that’s relevant to postprocessing, for example, updating the call summary to a CRM system.
The following diagram illustrates the start of call and post-call (summary) Lambda hooks that integrate with Salesforce to look up and update case records, respectively.
Here are the steps we walk you through:
- Set up Salesforce to allow the custom Lambda hooks to look up or update the case records.
- Deploy the LCA and Salesforce integration stacks.
- Update the LCA stack with the Salesforce integration Lambda hooks and perform validations.
Prerequisites
You need the following prerequisites:
- An existing Salesforce organization. Sign up for a free Salesforce Developer Edition organization, if you don’t have one.
- An AWS account. If you don’t have one, sign up at https://thinkwithwp.com.
- The AWS Command Line Interface (AWS CLI) version 2 installed.
- The AWS Serverless Application Model Command Line Interface (AWS SAM CLI), to build and deploy your SAM application.
Create a Salesforce connected app
To set up your Salesforce app, complete the following steps:
- Log in to your Salesforce org and go to Setup.
- Search for App Manager and choose App Manager.
- Choose New Connected App.
- For Connected App Name, enter a name.
- For Contact Email, enter a valid email.
- Select Enable OAuth Settings and enter a value for Callback URL.
- Under Available OAuth Scopes, choose Manage user data via APIs (api).
- Select Require Secret for Webserver Flow and Require Secret for Refresh Token Flow.
- Choose Save.
- Under API (Enable OAuth Settings), choose Manage Consumer Details.
- Verify your identity if prompted.
- Copy the consumer key and consumer secret.
You need these when deploying the AWS Serverless Application Model (AWS SAM) application.
Get your Salesforce access token
If you don’t already have an access token, you need to obtain one. Before doing this, make sure that you’re prepared to update any applications that are using an access token because this step creates a new one and may invalidate the prior tokens.
- Find your personal information by choosing Settings from View profile on the top right.
- Choose Reset My Security Token followed by Reset Security Token.
- Make note of the new access token that you receive via email.
Create a Salesforce customer contact record for each caller
The Lambda function that performs case look-up and update matches the caller’s phone number with a contact record in Salesforce. To create a new contact, complete the following steps:
- Log in to your Salesforce org.
- Under App Launcher, search for and choose Service Console.
- On the Service Console page, choose Contacts from the drop-down list, then choose New.
- Enter a valid phone number under the Phone field of the New Contact page.
- Enter other contact details and choose Save.
- Repeat Steps 1–5 for any caller that makes a phone call and test the integration.
Deploy the LCA stack
Complete the following steps to deploy the LCA stack:
- Follow the instructions under the Deploy the CloudFormation stack section of Live call analytics and agent assist for your contact center with Amazon language AI services.
- Make sure that you choose ANTHROPIC, SAGEMAKER, or LAMBDA for the End of Call Transcript Summary parameter. See Transcript Summarization for more details.
The stacks take about 45 minutes to deploy.
- After the main stack shows
CREATE_COMPLETE
, on the Outputs tab, make a note of the Kinesis data stream ARN (CallDataStreamArn
).
Deploy the Salesforce integration stack
To deploy the Salesforce integration stack, complete the following steps:
- Open a command-line terminal and run the following commands:
Use the following table as a reference for parameter choices.
Parameter Name | Description |
AWS Region | The Region where you have deployed the LCA solution |
SalesforceUsername | The user name of your Salesforce organization that has permissions to read and create cases |
SalesforcePassword | The password associated to your Salesforce user name |
SalesforceAccessToken | The access token you obtained earlier |
SalesforceConsumerKey | The consumer key you copied earlier |
SalesforceConsumerSecret | The consumer secret you obtained earlier |
SalesforceHostUrl | The login URL of your Salesforce organization |
SalesforceAPIVersion | The Salesforce API version (choose default or v56.0) |
LCACallDataStreamArn | The Kinesis data stream ARN (CallDataStreamArn) obtained earlier |
- After the stack successfully deploys, make a note of
StartOfCallLambdaHookFunctionArn
andPostCallSummaryLambdaHookFunctionArn
from the outputs displayed on your terminal.
Update LCA Stack
Complete the following steps to update the LCA stack:
- On the AWS CloudFormation console, update the main LCA stack.
- Choose Use current template.
- For Lambda Hook Function ARN for Custom Start of Call Processing (existing), provide the
StartOfCallLambdaHookFunctionArn
that you obtained earlier. - For Lambda Hook Function ARN for Custom Post Processing, after the Call Transcript Summary is processed (existing), provide the
PostCallSummaryLambdaHookFunctionArn
that you obtained earlier. - Make sure that End of Call Transcript Summary is not DISABLED.
Validate the integration
Make a test call and make sure you can see the beginning of call AGENT ASSIST and post-call AGENT ASSIST transcripts. Refer to the Explore live call analysis and agent assist features section of the Live call analytics and agent assist for your contact center with Amazon language AI services post for guidance.
Clean up
To avoid incurring charges, clean up your resources by following these instructions when you are finished experimenting with this solution:
- On the AWS CloudFormation console, and delete the LCA stacks that you deployed. This deletes resources that were created by deploying the solution. The recording S3 buckets, DynamoDB table, and CloudWatch log groups are retained after the stack is deleted to avoid deleting your data.
- On your terminal, run
sam delete
to delete the Salesforce integration Lambda functions. - Follow the instructions in Deactivate a Developer Edition Org to deactivate your Salesforce Developer org.
Conclusion
In this post, we demonstrated how the Live-Call Analytics sample project can accelerate your adoption of real-time contact center analytics and integration. Rather than building from scratch, we show how to use the existing code base with the pre-built integration points with the start of call and post-call Lambda hooks. This enhances agent productivity by integrating with Salesforce to look up and update case records. Explore our open-source project and enhance the CRM pre- and post-call Lambda hooks to accommodate your use case.
About the Authors
Kishore Dhamodaran is a Senior Solutions Architect at AWS.
Bob Strahan is a Principal Solutions Architect in the AWS Language AI Services team.
Christopher Lott is a Senior Solutions Architect in the AWS AI Language Services team. He has 20 years of enterprise software development experience. Chris lives in Sacramento, California and enjoys gardening, aerospace, and traveling the world.
Babu Srinivasan is a Sr. Specialist SA – Language AI services in the World Wide Specialist organization at AWS, with over 24 years of experience in IT and the last 6 years focused on the AWS Cloud. He is passionate about AI/ML. Outside of work, he enjoys woodworking and entertains friends and family (sometimes strangers) with sleight of hand card magic.