--- id: 01-installation title: Installing the CTI Adapter and Salesforce Lambdas --- import useBaseUrl from "@docusaurus/useBaseUrl"; ### Amazon Connect Salesforce CTI Adapter Managed Package The Amazon Connect CTI Adapter for Salesforce provides the core integration between the two platforms. It embeds the Amazon Connect Contact Control Panel into Salesforce which provides telephony control as well as access to event data coming from Amazon Connect. Using this adapter, you can configure screen pops based on customer data, automate contact center telephony functions like click-to-dial, and establish presence syncing rules for integration with Salesforce Omni-Channel. This is the base of the integration. The first step in the deployment of the integration is to install the Amazon Connect CTI Adapter managed package from the AppExchange Marketplace. 1. Log in into your Salesforce org and go to **Setup** 2. In the **Quick Find**, type **AppExchange** (the results will populate without hitting enter) 3. Select **AppExchange Marketplace** from the links provided 4. In the AppExchange window, enter **Amazon Connect** into the **Search AppExchange** field and press enter 5. In the **Search Results**, select **Amazon Connect CTI Adapter** 6. On the **Amazon Connect CTI Adapter** detail page, select **Get It Now** 7. If you are presented with the Log In to AppExchange screen, select **Open Login Screen**. You should then be presented with an Allow Access Screen. Choose **Allow** 8. On the **Where do you want to install Amazon Connect CTI Adapter** page, choose the **Install Here** button in the Install in This Org section 9. On the **Confirm installation details** screen, fill out the **Tell us about yourself** form, check the box to **agree with the terms and conditions**, and optionally select the box to **allow the provider to contact you**. Then select **Confirm and Install** 10. Select **Install for Admins Only**, then choose **Install**. **THIS SELECTION IS VERY IMPORTANT** - if you select the wrong option, then standard users may have access to objects and pages that they shouldn't have access to. 11. The CTI Adapter will take some time to install. While it installs, you will be presented with the **This app is taking a long time to install screen.** 12. Choose **Done**. 13. Once you receive confirmation that the **installation has completed** via email, return to the browser 14. Close the **Amazon Connect CTI Adapter** detail page (if still open) 15. In Quick Find, enter **Installed**, then select Installed Packages from the result 16. Once the **Installed Packages** page opens, validate that the **Amazon Connect -- Universal Package** is installed ### Amazon Connect Salesforce Lambda package The Amazon Connect Salesforce Lambda package adds considerable capability to the integration. It includes data connectivity between Amazon Connect and Salesforce for typical tasks like lookups, case creation, and updates. Additionally, it adds new features like real-time and historical data imports, contact trace record imports, recording import, transcription, and contact analytics functions. These capabilities are configurable and can be activated or deactivated on a call-by-call basis. The Amazon Connect Salesforce Lambda package is delivered via the AWS Serverless Application Repository. The AWS Serverless Application Repository enables you to quickly deploy code samples, components, and complete applications. Each application is packaged with an AWS Serverless Application Model (SAM) template that defines the AWS resources used. There is no additional charge to use the Serverless Application Repository - you only pay for the AWS resources used in the applications you deploy. 1. In a new browser tab, login to the [AWS console](https://console.aws.amazon.com/) 2. Make sure you are in the same region as your Amazon Connect instance 3. Once you have selected the region, navigate to the [Amazon Connect Console](https://console.aws.amazon.com/connect/home) 4. Verify that the Amazon Connect instance that you wish to configure is listed 5. Once you have verified your Amazon Connect instance, Open the [Serverless Application Repository Console](https://console.aws.amazon.com/serverlessrepo/home) 6. In the left navigation, select **Available Applications** 7. In the search area, make sure that **Public applications** is selected, check the box for **Show apps that create custom IAM roles or resource policies**, and enter **Salesforce** in the search field, this will automatically filter the available packages 8. Select AmazonConnectSalesForceLambda 9. When the Application loads, scroll down to the **Application settings** section 10. If you would like to use the Guided Setup feature, **don't change any parameters in the template** and select **Deploy**, and wait for the stack to finish deployment. Then, follow the section below on setting up the ExecuteAwsService named credential. If you are not using the Guided Setup feature, navigate to [here](/docs/lightning/installation/03-managed-package-manual-setup) for manual setup instructions (skipping the rest of the instructions on the page). ### Setting up the ExecuteAwsService Named Credential The ExecuteAwsService Named Credential is the entrypoint for the CTI Adapter to communicate with your AWS account. The Apex code uses the Named Credential to call the `sfExecuteAwsService.py` lambda, which uses boto3 to make changes in and retrieve data from your AWS account. Setting up this Named Credential is **not required** if you do not wish to use the features that rely on it (Guided Setup and Contact Lens). In addition, you can alter the permissions given to the `sfExecuteAwsService` lambda to match your security requirements (NOTE: if you choose to do so, do so after you configure up the lambdas as some permissions are added/removed based on how the lambdas are configured). Before you create the ExecuteAwsService Named Credential, **confirm that the application was installed for admins only**. If not, then standard users may be able to invoke methods that call named credentials. If you did this by accident, then you will have to [manually edit the profiles](/docs/lightning/installation/06-adapter-installation-troubleshooting#how-to-remove-permissions-to-visualforce-pages-apex-classes-for-a-desired-profile) to remove the permissions to the objects and pages created by the app. 1. Navigate to the IAM console in your AWS account, select the **Users** tab, and select **Add Users** to create a new user. 2. Give your IAM user a name (like *sfExecuteAwsServiceIamUser*). For the Access type, select **Programmatic access**. Click Next. 3. Select **Attach existing policies directly**, then search for and select *invokeSfExecuteAWSServicePolicy*. 4. Click next until the user is created. In the final screen, copy down the **Access Key ID** and the **Secret Access Key**. 5. Next, navigate to the Lambda Console. In the functions tab, search for *sfExecuteAwsService*. 6. Copy down the name of the function. Make sure you are not copying any extra characters. 7. Navigate to your setup section of your Salesforce instance, and search for *Named Credentials*. 8. Select **New Named Credential**. For the values in the next screen, enter the following: - **Label**: ExecuteAwsService - **URL**: ```https://lambda.{insert AWS region}.amazonaws.com/2015-03-31/functions/{insert lambda function name (copied above)}/invocations``` - **Identity Type**: Named Principle - **Authentication Protocol**: AWS Signature Version 4 - **AWS Access Key ID**: **Access Key ID** copied above - **AWS Secret Access Key**: **Secret Access Key** - **AWS Region**: {insert AWS region} - **AWS Service**: lambda 9. Click **Save**. After following the above instructions, follow [these instructions](/docs/lightning/installation/02-guided-setup) to navigate to the Guided Setup feature.