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”.
Reference documentation link: https://help.salesforce.com/articleView?id=creating_custom_object_tabs.htm&type=5
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.
In case there is no subscriber node for finesse, you can provide the same values (provided for primary finesse) in subscriber finesse-related fields that are subConnectionUrl and subdomain.
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".
You can get reason codes as:
- Get NotReady reason codes from API. It can be accessed via https://fdqn:8445/finesse/api/ReasonCodes?category=NOT_READY. Provide credentials for admin to access Reason codes.
- From the list of reason codes choose a reason code from URI tag. For example, <uri>/finesse/api/ReasonCode/19</uri> then in this case code will be 19.
- Once you have the reason code, place it in notReadyReasonCode field and save.
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.
- In case of CCX there are usually 5 options. Apart from the options mentioned above for reclassifying, there is also an option "Busy" in CCX.
- Regarding the outbound call in a ready state, it is supported in CCE version 12.5 and above, so there you won't need to enable this future to make an outbound call in a ready state. If you enable this feature then the state after Wrapup (once the call is completed) would be Not Ready, even if it was in Ready state before.
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.
For License key contact us at helpdesk@expertflow.com.
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".
Provide a variable name that is not already set at the time of landing an inbound call i.e. its value should be null beforehand.
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>.
NOTE
ssoBackendURL is only required if you want to login SSO Enable Agent on EF Salesforce Connector, else you can leave this property as it is (by default it is set to be url.com as an example, just save that). To deploy the EF SSO Server please follow this guide
- Then in the getQueueDataDelay field provide the number of seconds to be delayed for updating queue stats data for example 20.
INFO
- Please provide data in both fields, the acceptable limit for queue delay is 0 - 10000. Recommended Value: 30
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
On this Page