.Deployment Guide
Purpose
The purpose of this document is to describe how to deploy CTI connector in Salesforce.
Intended Audience
This document is intended for IT operations personnel and system administrators who want to deploy Salesforce embedded CTI connector.
Prerequisites
Salesforce Account. Visit https://developer.salesforce.com/signup (Free-developer account) to create one if you do not have one.
Expertflow Package Installation
Following are the to-dos for deployment:
Step 1: Install Expertflow package
1. If you have previously installed the package then update the package via the below link: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5g000000FNUT&isdtp=p1
2. Login to Salesforce and copy-paste the installation link given for the package.
3. Select the “Install for all users” option from the installation wizard, it will start installing the package and notify you when it’s done.
In case of issues in installation, refer to the relevant documentation at: https://help.salesforce.com/articleView?id=distribution_installing_packages.htm&type=5
Step 2: Configure CTI Adapter URL
1. From Setup, in the Quick Find box, enter Call Centers, then select Call Centers.
2. On the next page, press Continue.
3. Open Call Center with the name “Expertflow Call Center Adapter” and click Edit.
4. Populate the "CTI Adapter URL" field as "/apex/efCti__loginUI" (for multiple adapter fields, provide the same value)
Documentation reference: https://developer.salesforce.com/wiki/lightning_open_cti
Step 3: Assign Users to call center
1. Open Call Center with the name “Expertflow Call Center Adapter”.
2. At the bottom you’ll find the “Manage call center users” option. If you can’t find manage “Manage call center users”, then first save the call center and then look for the same option.
3. Click this option and on the next page click “Add more users”, select desired user(s), and then click “Add to call center”.
Documentation Reference: https://help.salesforce.com/articleView?id=cti_admin_manageagentsadd.htm&type=5
Step 4: Enable custom object tab
1. From Setup, in the Quick Find box, enter Tabs, then select Tabs.
2. Click New in the Custom Object Tabs related list.
3. Select the custom object “agent” to appear in the custom tab.
4. Click the Tab Style lookup icon to show the Tab Style Selector and select any according to your preference.
5. Rest of the fields are optional. Once done, click next.
6. Choose the user profiles that you want to have access to the new custom tab, preferably select all profiles if not already and click next.
7. Choose the user profiles that you want to have access to the new custom tab, go with defaults. You must select your application if not selected already.
8. Select the Append tab to users existing personal customizations, then press “save”.
Step 5: Create and configure a lightning app
1. From Setup, in the Quick Find box enter App Manager.
2. Open the app manager, click “New Lightning App” from the top right corner.
3. Enter the name of the app and developer, other options are not mandatory but if you want you can choose according to your preferences and select next.
4. Go with the default options and click next.
5. Click “Add Utility Items”, type “Open CTI softphone” and add the softphone to your app by clicking it. Set panel height to 500 and width to 400 and click next.
6. On the next screen, add accounts, contacts, leads, tasks, and agents from available items.
7. Last but not least select all profiles and add them. After adding them click “Save & Finish”.
Add configurations in custom settings
Admin Configurations
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the “admin” setting.
At the top of “Default Organization Level Value,” you will find “new”, click it.
In the username field provide an admin username value like "admin".
In the password field provide an admin password value like "password", then save.
Finesse Call Types
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the “callStates” setting.
Click “New”.
The values for callStates will be already set, just click Save.
URLs Configuration
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from “Configuration Url” setting.
At the top of “Default Organization Level Value,” you will find “new”, click it.
On the next page enter your finesse url in “connectionurl” field with port 7443 and protocol http-bind like this “https://uccx116p.ef.com:7443/http-bind/”
In the domain field enter your domain for finesse as “uccx116p.ef.com”
Similar to step 4, provide your subscriber finesse url in “subConnectionUrl” field with port 7443 and protocol http-bind like this “https://uccx116sub.ef.com:7443/http-bind/”
Similar to step 5, in the subdomain field enter your domain for subscriber finesse as “uccx116sub.ef.com”
In the salesforce_domain field provide your salesforce domain for example "expertflow4-dev-ed.lightning.force.com".
In the xmlNamespace field provide xml namespace value to be "http://jabber.org/protocol/pubsub#event".
Once added, click Save.
Reason Code Configuration
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the "DefaultReasonCode" setting.
Click “new” and then in the notReadyCode field provide one NotReady reason code like "26".
Finesse Type Configuration
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the "finesseDeploymentMode" setting.
Click “new” and then in the finesseFlavor field provide either "UCCE" or "UCCX" and save.
General Configuration
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the "General Configurations" setting.
Click “new” and then in the ReClassify Options field provide the values for the reclassify feature, by default values would be set to "Voice,Answering Machine,Fax,Invalid Number" (CCE options). If these are fine according to the finesse click save.
In the Activity Type field you can specify whether you want the activity to be created at the end of call to be of type Call or Task. By default it would be set "Call". If that's fine for you then just click save.
In the Make Ready Outbound Call field you can specify whether you want the outbound call to be in Ready state or not. By deafault it would be unchecked, If that's fine for you then just click save.
License Configuration
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the “License” setting.
Click “new” and then in the key field provide the license key.
Screen Pop Configuration
To manage our priority for searching records when a call is ringing/initiated you need to provide your preferences here.
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the “search_records”.
Click “new” and then in the priority field enter the priority for searching Contacts, Accounts, and Leads in your application like “Contacts, Accounts, Leads”.
Then we need to set searchFields property, enter the fields you want to be searched for phone number like "Phone,HomePhone,MobilePhone".
Then we set newRecord field, you need to provide whatever new entity you want to create when there is no matching number in CRM like "Account".
Then we set LeadsCompany field, it is used to populate the Leads entity's company (required field in case of Leads) when creating a new Lead object like "Expertflow"
After that we need to set AniLength field, it is used to trim the AniLength upto x number of digits, for example is populated like "10".
Example
In the priority field if you enter “Contacts, Accounts, Leads” in your field then contacts will be searched first then accounts and lead at the end. If you don’t want to search for any specific object among these, then don’t include it.
For searchFields property, you can provide multiple fields for searching phone number. For example, if you want to search the phone number in 3 fields Phone, HomePhone and MobilePhone then you need to enter "Phone, HomePhone, and MobilePhone" (field names can be seen from Object manager → Choose Object → Click Fields and Relationships) and it will search these fields while matching the phone number during the call for a popup.
For newRecord field for example, In case of no match you want to create a new Account then you provide "Account" as a value. Other options include Contact and Leads.
For LeadsCompany field for example, you want the company name to Expertflow when a new lead is created in case of no match, then you enter "Expertflow".
For AniLength field, for example, you have a number "0300123456789" and you want the only 10 digits that will be "0123456789", then you enter value "10" in field. The point to note here is that it counts digits from right to left.
Call Variable Configuration
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the "Variable" setting.
Click “new” and then in the Call/ECE Varaiable Name field provide the call variable name or ece variable name for example "callVariable5".
Supervisor Configuration
From Setup, in the quick find box, search “Custom settings”. Open custom settings.
Select “Manage” from the "Supervisor Configs" setting.
Click “new” and then in the ssoBackendUrl field provide the URL link where EF SSO Backend API is exposed for example https://<ServerIP>:<PORT>.
Then in the getQueueDataDelay field provide the number of seconds to be delayed for updating queue stats data for example 20.
Documentation Reference: https://help.salesforce.com/articleView?id=cs_add_data.htm&type=5
Enable Logs
From Setup, open “Object Manager” in the top left adjacent to “Home”. Open it and then open search “agent”, once found open that.
From the left pane, select “Page Layouts”.
Open agent Layout, there will be multiple sections on the next page. From the top section, navigate to the drop-down list provided and select “Related lists”.
Select “Notes and Attachments” from the right panel and then drag it to the “Related Lists” panel at the bottom.
Once added, click save from the top left.
Configure Fields for tasks
From Setup, open “Object Manager” adjacent to “Home” and search for “Task”, open Task. Click “Fields & Relationships” from the left panel. For the fields “Call Duration”, “Call Result”, “Call Type” perform the following set of actions for each of these
Click the Field, such as “Call Duration”
Click “View Field Accessibility”
From Field Accessibility for Field drop-down menu, Select respective field such as “Call Duration”
Select Field Access (Read-only) from “Standard User”
In the “Page Layout” section tick the checkbox “Visible”.
Click Save
Perform these steps for all three fields separately.
Connect to VPN
In order to use the application, make sure you are connected to VPN if your finesse services access is restricted to a VPN connection. Otherwise, you do not need to connect to VPN.
SSL Certificates
Before using application, accept SSL Certificates for Finesse and ssoBackendUrl to avoid any issue.
Login agent
Open your application from the top left 9-dotted pattern icon, adjacent to “Setup”. If you can’t find it, search using the name you used while creating an application.
Once opened, Maximize Softphone by click on “Phone” from the bottom left corner, enter agent credentials, and press login.
CORS Cisco Finesse
To check the status of CORS configuration for finesse, access finesse via CLI (SSH) and run the command "utils finesse cors status". By default, it should return that CORS is enabled for all origins. If it is not enabled, then you can enable it via two methods:
To enable CORS for all origins, run command "utils finesse cors enable_all". After this, you will need to restart two finesse services by "utils service restart Cisco Finesse Tomcat" and "utils service restart Cisco Unified CCX Notification Service"
To enable just for some specific origin, run command "utils finesse cors enable" and then "utils finesse cors allowed_origin add https://xyz.com". After this, you will need to restart two finesse services by "utils service restart Cisco Finesse Tomcat" and "utils service restart Cisco Unified CCX Notification Service"
We have experienced that these methods do the job for most finesse versions, however, we came across one specific version (CCX 11.6.2) where CORS wasn't enabled for Salesforce CTI even after executing these commands. If you encounter such an issue, please run commands in the following order:
- utils finesse cors disable
- utils service restart Cisco Finesse Tomcat
- utils service restart Cisco Unified CCX Notification Service
- utils finesse cors enable
- utils service restart Cisco Finesse Tomcat
- utils service restart Cisco Unified CCX Notification Service
- utils finesse cors allowed_origin add https://xyz.com
- utils service restart Cisco Finesse Tomcat
- utils service restart Cisco Unified CCX Notification Service
- utils finesse cors status