Introduction
The Talkative Salesforce integration (min. version 1.24) includes a new Salesforce object called Interaction Detail.
Why
Interaction Details can be thought of as interaction-related data that only exists in certain contexts. For example, interaction reservation events only occur for inbound interactions. These can be saved as Interaction Details when this information is available.
Interaction Details vs. Interaction Data
The Interaction Data object deals with arbitrary key/value data similar to Interaction Detail. However, there is a key difference. Interaction Data is mostly collected directly from customers using data collection forms. As such, it can be any key/value pair. Interaction Details have clear specifications as to the data type and structure, making them more predictable to use in Salesforce reports and flows.
Enabling Interaction Details
Once you've created a Salesforce integration, you can optionally enable any of the available Interaction Detail types. When new interactions reach an ended state, any enabled Interaction Detail types will be sent to your Salesforce org. All Interaction Detail types will be disabled by default. To enable a selection of Interaction Detail types:
- Go to your Salesforce configuration page in the Talkative platform: /settings/salesforce/api-configs
- On the page, click Interaction Detail Settings
- On the resulting page, select which Interaction Detail types you wish to be sent to Salesforce and click Update Salesforce Interaction Details.
Technical details
The Interaction Detail feature is made up of two Salesforce objects used for storing information about an interaction. These objects are:
- Interaction Detail (API name TalkativeEngage__InteractionDetail__c)
- Interaction Detail Value (API name TalkativeEngage__InteractionDetailValue__c)
The main object is Interaction Detail. Depending on what kind of detail it is, an Interaction Detail record will have one or more child Interaction Detail Value records. Currently, Interaction Details are only sent to Salesforce when an interaction has ended.
Relevant Interaction Detail fields:
Name | API Name | Description |
Interaction Detail ID | Name | An auto-generated ID for use in Salesforce |
Type | TalkativeEngage__Type__c | This is a code unique to each kind of Interaction Detail record. It can be used to filter relevant records by type. |
Interaction | TalkativeEngage__Interaction__c | The parent Interaction record this detail to which this detail belongs |
Timestamp | TalkativeEngage__Timestamp__c | An optional Date/Time field. If a detail is time-based (ie an event that happened at a particular time), this field captures that information. |
External ID | TalkativeEngage__ExternalId__c | When new records are sent to Salesforce at the end of an interaction, the Talkative Salesforce package uses this ID to determine whether an existing record already exists or whether it needs to create a new one. |
Relevant Interaction Detail Value fields:
Name | API Name | Description |
Interaction Detail | TalkativeEngage__InteractionDetail__c | The parent Interaction Detail for this record. |
Interaction Detail Value ID | Name | An auto-generated ID for use in Salesforce |
Key | TalkativeEngage__Key__c | The reference key in the key/value pair for this record. |
Value | TalkativeEngage__Value__c | The value for in the key/value pair for this record. |
Interaction Detail Types
Each Interaction Detail record will have a slightly different structure, depending on the kind of detail. The following is a list of supported Interaction Details:
NOTE: TalkativeEngage__Value__c is a Long Text Area. All values, regardless of whether they are integers, booleans or strings, will be stored as text.
Name | Timestamp | Detail Values | Description |
RESERVATION_CREATED | true | Key: ownerId, Value: Saleforce user/queue ID | When an interaction reservation was created for a user. |
RESERVATION_ACCEPTED | true | Key: ownerId, Value: Saleforce user/queue ID | When an interaction reservation was accepted by a user. |
RESERVATION_REJECTED | true | Key: ownerId, Value: Saleforce user/queue ID | When an interaction reservation was rejected by a user. |
RESERVATION_RESCINDED | true | Key: ownerId, Value: Saleforce user/queue ID | rescinded by the system. |
RESERVATION_TIMED_OUT | true | Key: ownerId, Value: Saleforce user/queue ID | When an interaction reservation timed out. |
RESERVATION_COMPLETED | true | Key: ownerId, Value: Saleforce user/queue ID | When an interaction reservation was completed by a user. |
CUSTOMER_JOURNEY_ENTRY | true | Key: url, Value: string Key: interactionStarted, Value: boolean Key: interactionEnded, Value: boolean | A timestamp for when a customer visits a page on your website. Also indicates if this was the page on which the interaction started/ended. |
Using Interaction Details in reports
Interaction Details can be used in reports for filtering.
Report Types
By default, Salesforce can create a report type that links Interactions to Interaction Details. However, it may not make a report type that also includes Interaction Detail Values. This can be done as follows:
- In your Salesforce org, go to the Setup area.
- In the sidebar search, type report. From the sidebar results, select Report Types.
- If you are greeted with a "What is" page, click Continue.
- You should now be on the index page for Report Types. Click New Custom Report Type in the top-middle of the index.
- On following create page, fill in the fields. When done, click Next:
- Primary Object: Interaction
- Report Type Label: Interaction With Details And Values
- Report Type Name: this should auto-fill from the previous field
- Description: A report for Interactions, Interaction Details and Interaction Detail Values
- Store in Category: Other Reports
- On the following Report Records Set page:
- Click in the box that states (Click to relate another object).
- In the resulting B box, select Interaction Details as the relationship.
- Optional: Select `"A" records may or may not have related "B" records.
- Click in the next box that states (Click to relate another object)
- In the resulting C box, select Interaction Detail Values as the relationship.
- Optional: Select `"B" records may or may not have related "C" records.
- Click Save.
Reports
Once a report type exists with Interactions linked to both Interaction Details and Interaction Detail Values, you should be able to create reports based on that report type. For example:
- Go to the Reports tab of your Service Console app.
- Click New Report near the top-right of the page.
- In the newly opened modal, use the search bar to search for Interactions
- Select the report type that includes Interaction Details and Interaction Detail Values.
- Click Start Report
From here you can:
- Add columns from Interactions, Interaction Details and Interaction Detail Values
- Filter by Interaction Detail type or Interaction Detail Value key/value
Filtering reports
You can filter reports by Interaction Detail Values by utilising cross filters. The following is an example of using cross filters to view which URLs interactions have started on.
- Create a new report with the report type created in the previous Report Types section.
- In the report, add Value to the Group Rows section.
- Also, add Key to the Columns section.
- Switch to the Filters tab.
- Add a normal filter for Key where Key equals "URL"
- Add a cross filter
- Click the dropdown button next to the Filters heading and select Add Cross Filter.
- In the newly added cross filter, select `Show Me "Interaction Details" "with" "Interaction Detail Values". Then click Apply.
- In the newly added search box below, search for and select Key and then from the pull-out options, select "equals" "interactionStarted". Then click Apply.
- In the search box, search for and select Value and then from the pull-out options, select "equals" "true". Then click Apply.
You should now have a report that displays which pages interactions are starting on and groups by URL.
Using Interaction Details in flows
Interaction Details can be used in flows as you would use any other Salesforce Object. The following is an example of a flow to get the name of the user that accepted an interaction:
- Start conditions:
- Object: Interaction Detail
- Entry Conditions:
- TalkativeEngage__Type__c = RESERVATION_ACCEPTED
- Get Records:
- Object: Interaction Detail Value
- Condition Requirements:
- TalkativeEngage__InteractionDetail__c = {!$Record.Id}
- Store only the first record (the Interaction Detail will only have one Interaction Value)
- Get Records:
- Object: User
- Condition Requirements:
- Id = {!get_detail_value.TalkativeEngage__Value__c}
- Store only the first record (there should only be one match at most)
- Assignment:
- {!owner_name} (custom variable) = {!get_owner.FirstName}
- Start conditions:
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article