Vous êtes sur la page 1sur 33

Salesforce Extension Installation & Configuration Guide

Title Revision Copyright About inContact

Salesforce Extension Installation & Configuration Guide

03/22/12

2012 inContact, Inc

inContact, Inc. (NASDAQ: SAAS) has helped over 750 contact centers around the globe create profitable customer experiences through its powerful portfolio of cloud-based contact center software solutions. The companys services and solutions enable contact centers to operate more efficiently, optimize the cost and quality of every customer interaction, create new pathways to profit, and ensure ongoing customer-centric business improvement and growth. The inContact platform has grown from a powerful ACD with skills-based routing, CTI, and IVR with speech recognition to include an innovative online hiring solution, workforce management functionality, and a customer feedback and survey solution. Because the inContact platform is delivered through a Software-as-a-Service (SaaS) model, inContact customers can realize significant cost savings and flexibility compared to premises-based alternatives. To learn more, visit www.inContact.com.

Contributors

Sean Kirkby; Phil van Dijk

Page | 2

Table of Contents
inContact Salesforce.com Plugin Agent Extension ..................................... 4
Installation and Configuration Guide ....................................................................... 4 Configuring Salesforce ............................................................................................. 5 Contents of the Salesforce Extension Admin Package ................................................ 5 Main Salesforce Configuration Steps........................................................................ 5 User Custom Fields (Required) ....................................................................................... 6 Call Data Custom Fields (Optional) .................................................................................. 9 The Salesforce Extension Configuration XML document .......................................................... 10 The Default Search Results Visualforce Page (and other Visualforce pages as needed) ........................ 20 Popping a Query Results Screen .................................................................................... 20 The Call Center Definition .......................................................................................... 24 The Softphone Layout................................................................................................ 28 No Matching Records ............................................................................................... 29 Single-Matching Record............................................................................................. 30 Multiple-matching Records ......................................................................................... 30 Configuring the Desktop ......................................................................................... 31 Install the Plugin Agent ............................................................................................. 31 Install the Salesforce Extension ..................................................................................... 33

Page | 3

inContact Salesforce.com Plugin Agent Extension


Installation and Configuration Guide
This guide covers the installation and configuration of the inContact Salesforce.com Plugin Agent Extension. The Salesforce Extension is an extension that works with the Plugin Agent. You can find more information about the Plugin Agent here: https://help.incontact.com/icng/icng_pluginagent/default.htm There are two main steps to installing and configuring the Salesforce Extension: 1) Configure Salesforce 2) Install Desktop Software You should have downloaded three items from the inContact website in order to complete these steps: 1) The Plugin Agent install 2) The Salesforce Extension Admin package 3) The Salesforce Extension Agent package These are downloaded from the Software and Updates section of the inContact Central Website.

Page | 4

Configuring Salesforce The Salesforce Extension uses the agents Salesforce.com login to access and interact with Salesforce. Certain configuration settings and customizations must be completed within Salesforce.com in order for the Salesforce Extension to be fully operational. Some of the items covered in this document are only necessary if your agents need the corresponding features in the Salesforce Extension. When this is true, it will be noted below. Contents of the Salesforce Extension Admin Package The Admin Package contains the following items: CTI Toolkit v4.0 Call Center Definition XML file Salesforce Extension configuration XML file inContact Default Search Results Visualforce page code files Readme.txt file Release Notes Documentation (this Installation Guide, a Background Guide, and a Customization Guide)

Main Salesforce Configuration Steps Configuring Salesforce.com to work with the Salesforce Extension includes the following steps: 1) Create required custom fields on the User object 2) Create optional custom fields and/or objects in which you want to store inContact call data 3) Customize the Salesforce Extension Configuration XML document and import it into Salesforce.com into a documents folder that your agents are able to read 4) Import the Default Search Results Visualforce page, and create any other Visualforce pages and/or custom objects that should be part of the agents call handling experience 5) Create a CTI Toolkit v4.0 Call Center definition and assign users/agents to it 6) Create and configure an appropriate Softphone Layout and assign it to the Salesforce profile your agents use 7) Create any custom buttons you intend your agents to use within Salesforce.com Each of these steps is outlined below.

Page | 5

User Custom Fields (Required)


Two fields must be defined on the User object in order for the Salesforce Extension to properly interact with the Salesforce application: Custom Screenpop (Type: Text Area (Long), Length: 32768, API Name: Custom_Screenpop__c) SFDC Query Result (Type: Text Area (Long), Length: 32768, API Name: SFDC_Query_Result__c)

To create these fields, do the following: 1) After logging into Salesforce, select Setup:

2) Select App Setup | Customize | User | Fields :

Page | 6

3) Scroll down to the User Custom Fields section and click the New button:

4) Select the Text Area (Long) type for the field and click the Next button:

Page | 7

5) Enter the Field Label (Custom Screenpop or SFDC Query Result), enter the Length (size of 32,768), and click the Next button:

NOTE: Be sure to include spaces in the Field Label, NOT UNDERSCORES. The spaces will automatically be converted into underscores in the Field Name and the API Name. 6) Choose the security level for these custom fields for profiles that will be used by agents. Note that agents MUST be able to write to these fields (they should NOT be Read Only), then click the Next button:

Page | 8

7) Select any page layouts that you want these fields to be visible on, and click Save (if you do not need to create a second custom field) or Save and New (if you need to create a second custom field). Note that it is NOT necessary for either the Custom Screenpop or the SFDC Query Result field to be visible on a page layout. However, it may be convenient for troubleshooting to have them visible on a page layout:

Follow these steps for each custom field (Custom Screenpop and SFDC Query Result).

Call Data Custom Fields (Optional)

Page | 9

When an agent completes a call, there are likely data points about the call that you would like to store in Salesforce.com. The Salesforce Extension can store any call meta data value and any IVR script variable in any field/object you choose. You must ensure that the fields and objects exist that should receive this data. Here are some guidelines: Use Text or Text Area (Long) field types when possible Ensure the field size is adequate. If data to be stored is larger than the field size, the Salesforce Extension will store a null or blank value in the field. inContact recommends that Text and Text Area (Long) field be set to maximum size (255 for Text, and 32,768 for Text Area (Long)). Use Text Area (Long) for values that might reasonably be longer than 255 characters (such as URLs). Preface optional custom field labels and names with something that identifies them as inContact data fields (i.e. inContact ContactID or inContact SkillName)

NOTE: You will map inContact data to Salesforce fields in the Salesforce Extension Configuration XML document (see below). When you identify an object and field to receive inContact data, the MOST RECENTLY OPENED instance of that object type will be used to store the data. For example, if you map the inContact ANI to a field on the Case object named inContact_ANI, the most recently opened Case object in Salesforce will be the object to receive the ANI. Also note that inContact call data can be stored in standard fields as well as custom fields. Its not necessary to create custom fields if you can store all of the information you care about in existing standard fields. Keep track of the object and field names you create, as you will use them in the Configuration document.

The Salesforce Extension Configuration XML document


The Salesforce Extension uses an XML configuration document to map inContact data onto Salesforce objects and fields for storage. In order to prevent the need to distribute a customized Configuration document to every agent desktop, the Salesforce Extension reads this Configuration document out of Salesforce itself. This allows you to store a single copy of the Configuration document, and have it apply to every agent who logs into Salesforce.

Page | 10

The Extension Configuration Document MUST be imported into Salesforce for the Extension to work! (Read below to see how to customize and import it.) A sample/default Configuration XML document is supplied in the Salesforce Extension Admin package. It is configured as a minimal document, with no data field mappings. You may import this document and use it as-is, or you may customize it if you wish. If you customize it, you must ensure that the objects and fields it names actually exist in your Salesforce instance. You must do the following to use the Configuration document: Modify the Configuration document to your requirements Create a public folder to store the document in. (NOTE: Agents will not need Read/Write access to this folder or document. Read Only access is fine.) Import the document

Modifying the Configuration document The Configuration document is an XML file that contains a collection of profile definitions. Each profile definition matches to a Salesforce profile. (One profile definition, named _default, matches every Salesforce profile that isnt explicitly defined in the Configuration document.) Each profile definition in the Configuration document can contain the following elements: Object and field definitions Automatic call activity task creation settings Softphone layout settings

Objects and fields: Within each profile definition is defined the Salesforce objects in which you want to store inContact data. Within each object, the specific fields are named, along with the inContact value that should be stored in that field. The name of the XML tag is comprised of the Salesforce object and field names into which you would like to store the inContact data. The value of the XML tag indicates which inContact value to store in the Salesforce object and field: <Object.FieldName>inContact_Value</Object.FieldName> The Object.FieldName used as the XML tag name can be any object (standard or custom) and any field (standard or custom). Be sure to suffix custom object and tag names with __c (two underscores and a c). This is Salesforce.coms standard for identifying custom objects and fields.

Page | 11

There are two types of inContact values that can be stored in Salesforce objects and fields: CallInfo and ScriptVariable. CallInfo values are default meta data about the call. These values are available whether or not they are explicitly published from the IVR script. The following CallInfo values can be used: CallInfo.ANI (the ANI of the caller their phone number) CallInfo.DNIS (the DNIS - the phone number the caller dialed) CallInfo.CallDirection (inbound or outbound) CallInfo.CallDurationInSeconds (the length of the call, in seconds) CallInfo.DispositionValue (the disposition code selected by the agent, if the call was routed to a disposition skill queue) CallInfo.SkillName (the name of the skill the call was routed to) In addition, you can access any published variables from the IVR script. To publish a variable, the variables screen pop setting must be true. See the Customization Guide for more details. If a variable is published from the IVR script, you can reference it from the configuration file using the following syntax: ScriptVariable.VariableName --where VariableName is replaced by the name of the variable. For instance, if you create and publish a variable from your IVR script with the name of ProductFamily, you can map the value of this variable into a Salesforce field using the following syntax: <Object.FieldName>ScriptVariable.ProductFamily</Object.FieldName> (NOTE: In the example above, Object.FieldName is not actually a real Salesforce.com object and field name. This naming is used in the example to demonstrate that an inContact IVR script variable can be mapped into any field on any object in Salesforce.) Softphone Layout settings: Within Salesforce.com, you will create and customize a Softphone Layout (see below). The Sofphone Layout defines (among other things) how the Salesforce Extension should pop objects when a call is received (or placed, for outbound calls). You can specify settings for three scenarios related to the query that is performed for objects that match the caller: No matching records (no matching objects were found)

Page | 12

Single-matching record (a single matching object was found) Multiple-matching records (more than one matching object was found)

For each scenario, one of the options you can select is to open a custom Visualforce page in response to the query. When making this selection, you browse to and select a specific Visualforce page to pop. The Salesforce.com API allows the Salesforce Extension to see that you have selected Pop to Visualforce page; however, the Salesforce.com API does not allow the inContact Salesforce Extension to see the name of the Visualforce page you have selected. The Softphone Layout Settings element in the profile definition in the Extension Configuration document allows you to indicate to the Extension the name of the Visualforce page that should pop. In addition, for the No Match scenario, one of the options you can select is to pop to a Create New page for any type of object. When making this selection, you browse to and select the specific type of object to create when no matching objects are found. The Salesforce.com API allows the Salesforce Extension to see that you have selected Pop to New; however, the Salesforce.com API does not allow the inContact Salesforce Extension to see the name of the object type you wish to create. The Softphone Layout Settings element in the profile definition in the Extension Configuration document allows you indicate to the Extension the name of the object type that you wish to create if no matching objects are found. Create Task settings: Lastly, each profile definition contains an XML element that defines if a phone activity task is automatically created for each call, and whether that task should automatically pop at the end of the call (for Classic View users Service Cloud Console users do not have a task pop.) Sample Extension Configuration document: For example, assume that the following profile definition exists in the Configuration document: <profiles> <profile id=System Administrator> <Task> <ANI__c>CallInfo.Ani</ANI__c>

Page | 13

<DNIS__c>CallInfo.DNIS</DNIS__c> <CallType>CallInfo.CallDirection</CallType> <CallDurationInSeconds> CallInfo.CallDurationInSeconds </CallDurationInSeconds> <SkillName__c>CallInfo.SkillName</SkillName__c> <CallDisposition> CallInfo.DispositionValue </CallDisposition> <ContactID__c>CallInfo.ContactID</ContactID__c> </Task> <Case> <ProductFamily__c> ScriptVariable.ProductFamily </ProductFamily__c> </Case> <SoftphoneLayoutSettings> <NoMatch>CustomVisualforcePage</NoMatch> <SingleMatch>CustomVisualforcePage</SingleMatch> <MultipleMatch>CustomVisualforcePage</MultipleMatch> </SoftphoneLayoutSettings> <CreateTask> <Create>true</Create> <Pop>true</Pop> </CreateTask> </profile> <profile id=_default > <CreateTask> <Create>true</Create> <Pop>true</Pop> </CreateTask> </profile> </profiles> This profile definition indicates field mappings to be used for users who are assigned to the System Administrator profile in Salesforce. It maps the following inContact values onto fields in a Salesforce.com task (the call activity record): ANI DNIS Call Direction Call Duration Skill Name Disposition Code inContact Contact ID

Page | 14

It also maps an IVR script variable called ProductFamily onto a field in a Case object. (Presumably, IVR input by the caller enabled the IVR script to determine the product family the caller is calling about, and store that value in a script variable named ProductFamily that is published to the Extension the Extension can then store this value in a field on a Case object.) In addition, the Softphone Layout setting is configured to pop a custom Visualforce page in all query scenarios (i.e. no match, single match, and multiple match). All three scenarios are configured to pop the same page. The page to be popped is named CustomVisualforcePage. NOTE: These settings will have no effect unless the corresponding scenario setting in the Softphone Layout Settings in Salesforce.com are configured to Pop to Visualforce page. Lastly, this configuration indicates that a phone activity task should be created and popped when the call ends. (This is for the Classic View, not the Service Cloud Console View; the Service Cloud Console view does NOT pop an activity task, as it provides a constant UI for creating and modifying the task during the call in the Interaction Log.) This Extension Configuration document defines field mappings and settings for a single Salesforce.com profile. Note that you can have multiple profile definitions in the Configuration document. If an agent is assigned to a profile that is named in the document, then the settings in that profile definition will apply to the agent. If the agents Salesforce profile is not defined in the Configuration document, then the profile named _default will apply to the agent. There MUST be a _default profile in the configuration document. It can be empty: <profile id=_default/> If a profile definition is empty, or does not contain a <CreateTask> element, the default is to create and pop a task. Once you have customized the Extension Configuration document, you must save it in Salesforce in order for the Salesforce Extension to find and use it. Create a public Read Only folder to store the document You should store the Extension Configuration document in a folder that is publicly visible. It does not have to be Read/Write. To create a folder, do the following: 1) View the Documents tab in Salesforce and click Create New Folder:

Page | 15

2) Name the folder (it can have any name), select Read Only, and select This folder is accessible by all users and save the folder:

Import the Configuration Document

Page | 16

Once your folder is created, you must import the Configuration document into it. Do this by selecting/viewing the folder, and clicking the New Document button:

Enter the document name. NOTE: The document name should be inContact Salesforce Extension Config. This is the default name for which the Salesforce Extension will search. If you save the Configuration document using a different name, you must modify the Extension configuration file on the agents local machine (which is what we are trying to avoid in the first place!) But the Configuration document name can be customized, if needed.

Be sure your public folder is selected and click Choose File to browse to and choose the Configuration XML document on your local machine. Click Save:

Page | 17

Once the document is imported, you can verify its contents by selecting the document, and clicking the View File link:

If you need to modify the contents of the Configuration document, you will need to modify your local copy of the XML file, and replace the document in Salesforce. Once you have modified the local text file, select the Configuration document in Salesforce, and click on the Replace Document button:

Page | 18

This opens the replace document screen. Select Choose File, browse to the local XML file and select it, and click the Replace Document button:

Page | 19

The Default Search Results Visualforce Page (and other Visualforce pages as needed)
The Softphone Layout can be configured to pop different things in response to the query the Extension performs on an inbound or outbound call. Among the options are: Pop the query results screen (if multiple matches are found) Pop a custom Visualforce page

This section covers how you can enable both of these scenarios.

Popping a Query Results Screen


When a call is delivered to the agents desktop from the inContact platform, the Salesforce Extension will perform a query to find matching entities within Salesforce. There are two types of queries that can be performed: A Default Query A Controlled Query

A Default Query is performed if no query control variables are published from the IVR script. The Default Query searches for object types listed in the Softphone Layout. It searches for the callers ANI (the phone number they are calling from) in all Phone type fields in the object types listed. A Controlled Query is performed if one or more query control variables are published from the IVR script. (Query control variables are discussed in the Customization Guide.) In short, query control variables specify exactly what the Extension should search for (rather than defaulting to searching for the ANI). For example, query control variables can direct the Extension to search for a specific case object based on its ID or case number. Whether a Default or Controlled query is performed, the Softphone Layout settings specify what the Extension should pop or open, based on the results of the query. Every query will result in one of the following scenarios: No matching records A single-matching record is found Multiple-matching records are found

Page | 20

If multiple matches are found, the query results screen can be popped. This is configured in the Softphone Layout, under the Multiple-Matching Records section:

For a default query, a default Advanced Query Results page is opened in Salesforce, based on the SOFL search for the ANI in the phone fields of object types listed in the Softphone Layout settings in Salesforce. Multiple object types can be displayed on the advanced search results page, depending on what object types were searched. A controlled query can result in multiple objects being found, and even multiple object types. Because a controlled query is performed using SOQL (rather than SOFL), a different page is used to display multiple matching records. In order to display multiple matching records from a controlled query, you must create and import a custom Visualforce page provided by inContact in the Salesforce Extension Admin package. To do this, you must do the following in order: 1. Login to Salesforce.com as a System Administrator. 2. Goto Your Name | Setup | Develop | Apex Classes | New

Page | 21

3. Paste the inContactCustomSearchController class code in the Apex Class area as shown in Step 2. Click Save.

4. Click Your Name | Setup | Develop | Pages | New

Page | 22

5. In the label field, type inContactCustomSearchPage (no spaces). 6. Paste the inContactCustomSearchPage Visualforce page code in the Visualforce Markup area as shown in the figure (Step 2). Click Save.

Page | 23

The page and controller names must match the corresponding file names from which you will paste the code. Once the page and controller are imported, Controlled Queries resulting in multiple matching records can be displayed (if the Multiple-matching Records setting in the Softphone Layout is configured to pop the search results.)

The Call Center Definition


A Call Center definition must be created in Salesforce in order for the Salesforce Extension to work properly. The Call Center definition contains settings used by Salesforce to communicate with the Extension running on the agents local desktop. The Salesforce Extension Admin package includes an XML file that can be imported to create the correct Call Center definition: inContact_Call_Center_40.xml To create the call center, you simply import the file. Do the following: 1) Select Setup:

Page | 24

2) Select App Setup | Customize | Call Center | Call Centers :

3) Click the Import button:

Page | 25

4) Click Choose File and browse to the import file, then click Import:

After importing the call center definition, you must assign it to any users/agents who will be using the Salesforce Extension.

Page | 26

NOTE: If you have agents who are using the existing Salesforce CTI Adapter v3.x from inContact, they will NOT be able to simultaneously run that Adapter and the new Salesforce Extension. This is because they can only be assigned to a single call center definition at one time, and each of those solutions requires a different call center definition. You can also edit the call center definition and add multiple users to it. Note that you will need to UNASSIGN users from existing call center definitions before Salesforce will allow you to assign them to a new call center definition using this method.

Page | 27

The Softphone Layout


Once you have the call center definition created and users assigned, you should configure your Softphone Layout. This is a collection of settings that controls how the Extension queries for matching entities within Salesforce, and what to pop once the query is completed. There are two main settings in the Softphone Layout that the extension uses: Display these salesforce.com objects: Screen Pop Settings

Under the first group, labeled Display these, you can specify a collection of objects what are searched in a Default Query:

The phone fields of these objects will be searched for the callers ANI if no query control variables are published from the IVR script. (See the Salesforce Extension Customization Guide for details on publishing query control variables from the IVR script.) Under the second group, labeled Screen Pop Settings, you specify what action the Extension should take based on query results (whether a Default Query or a Controlled Query):

Page | 28

No Matching Records
You can instruct the Extension to not pop anything, or to pop to a new page for any object, or to pop to a custom Visualforce page if there are not matching results in the query. If you elect to pop to a Visualforce page, you must specify the page name in the Configuration document (see above). If you elect to pop to a new object page, you must also specify the object name in the Configuration document (see above).

Page | 29

Single-Matching Record
You can instruct the Extension to not pop anything, to pop the details page of the single found object, or to pop to a custom Visualforce page if there is a single matching result in the query. If you elect to pop to a Visualforce page, you must specify the page name in the Configuration document (see above).

Multiple-matching Records
You can instruct the Extension to not pop anything, to pop the search results page containing multiple found objects, or to pop a custom Visualforce page if there are multiple matching results in the query. If you elect to pop to a Visualforce page, you must specify the page name in the Configuration document (see above). If Multiple-Matching Records is configured to pop the search results page, the extension will pop an Advanced Query Results page if a Default Query is performed, and it will pop the custom inContact Search Results page if a Controlled Query is performed. (i.e. If query control variables are published from the IVR script. See the Salesforce.com Extension Customization Guide for more info on publishing query control variables from an IVR script.)

Page | 30

Configuring the Desktop To configure the agents desktop, do the following: 1) Install the Plugin Agent 2) Install the Salesforce Extension

Install the Plugin Agent


To install the Plugin Agent, download the Plugin Agent installer from the Software and Updates section of the inContact Central Website:

The Salesforce Extension provides its own Disposition user interface when a call must be dispositioned. Because of this, when you install the Plugin Agent, you should disable the default Disposition extension that is typically installed with the Plugin Agent. When you install the software, select Custom and disable the Disposition extension:

Page | 31

Page | 32

Install the Salesforce Extension


To install the Salesforce Extension, simply run the icCRM_Salesforce_Voice_Extension_v1.0BETA_Agent.msi file. There are no custom settings or configurations to the install.

Page | 33

Vous aimerez peut-être aussi