Configuring inline chatbot surveys - Digital Bot Flow
When interacting with customers via chat in Genesys Cloud, it is possible to deliver a Mindful Feedback survey directly in the chat window. Using Data Actions, a Digital Bot Flow can interact with the Feedback API to initiate a new survey, obtain survey questions, interact with customers, and post responses back to Feedback automatically. This can create a more streamlined and comfortable survey experience for customers already chatting with an agent, compared to the alternative of sending the customer a link which opens a survey in a new browser tab.
Overview This guide covers the core concepts of setting up an inline survey flow for a Genesys chatbot:
|
Activating Inline Surveys
At a high level, the integration works as described below:
- A Digital Bot Flow manages interactions with customers and sends customer responses to the Feedback API.
- An In-Queue Message Flow is created to invoke the Digital Bot Flow.
- A designated Inline Survey Queue is created as a destination for customer transfers.
- In the Message tab, this Inline Survey Queue has the In-Queue Message Flow configured as the In-queue Flow.
- At the end of a chat conversation, a Genesys agent can transfer a customer to the designated queue, which will invoke the message flow, which will then invoke the bot.
- The customer will remain in the same chat window to interact with the bot until the survey is complete.
Throughout the remainder of this guide, we will cover every component of the integration other than the Inline Survey Queue and In-Queue Message Flow.
Supporting Resources
There are several resources that the Digital Bot Flow will utilize along the way, so it is important to configure these components first.
Data Actions
We will use Genesys Data Actions to communicate with the Feedback API at various points during the survey interaction. Specifically, we will use:
- Add New Interaction to create a new survey interaction for each customer.
- Start Survey to initiate the interaction.
- Update Interaction to update the interaction with customer responses.
Slot Types
In order to accept responses from customers during the chat survey, we need to configure Slot Types for each type of question we will ask (Architect > Slots > Add Slot > New List or New Regex). Following are the slot types we will use for our example questions, and you can use this approach to create additional types, as needed. We will use the following Slot Types in our example:
- Multiple Choice
- Open Feedback
- Satisfaction
- Yes/No
Data Tables
Sometimes, you may want to provide customers with textual response options, but the Mindful Feedback API always expects numeric responses. To solve this, you can use Data Tables in Genesys to map textual responses to numbers that we can post to the Feedback API to update interactions. We have examples available for:
- Satisfaction/CSAT
- Multiple Choice
Digital Bot Flow
We need a new Digital Bot Flow (Architect > Flows > Add > Digital Bot Flow) to interact with customers and the Feedback API. This example flow demonstrates how different question types might be asked. You can update or expand on this approach to fit your specific surveys. Following is a list of all blocks used in the example Flow.
Call Data Action (Add New Interaction)
The first step is to create a new Mindful Feedback interaction.
- Category: Process Conversation (Web Messenger)
- Data Action: Create Interaction
- Configuring Inputs:
- Hard-code the ID of the Feedback survey you wish to use.
- Use Session.conversationID as the External Reference value
- Important Outputs:
- id: Assign Flow.interaction_id
When the Action is completed, the variable Flow.interaction_id will contain a value to use in the next step.
Call Data Action (Start Survey)
With the interaction created, we can change the status to "started" in Feedback.
- Category: Process Conversation (Web Messenger)
- Data Action: Start Survey
- Configuring Inputs:
- id: Enter Flow.interaction_id
- Success Outputs:
- Set the prompts outputto Flow.Current_Question_Collection.
Update Data (Greeting and First Question)
To prepare to introduce the survey and ask the first question, we will use an Update Data block to populate two prompts we obtained in the previous block. When we hit this block, the Flow.Current_Question_Collection[] array will contain two strings, both of which include HTML tags. This block will separate the two strings into two Flow variables and remove the HTML tags, making the strings ready for use in the next block.
- Update Statement 1: Set Flow.Greeting to the expression Replace(Replace(Flow.Current_Question_Collection[0],"<p>",NOT_SET),"</p>", NOT_SET)
- Update Statement 2: Set Flow.CurrentQuestion to the expression Replace(Replace(Flow.Current_Question_Collection[2],"<p>",NOT_SET),"</p>", NOT_SET)
Communicate (Greeting)
The Flow.Greeting variable is now populated with our survey greeting from Mindful Feedback. We will now use a Communicate block to send the greeting to the customer.
- Communication: Assign {{Flow.Greeting}}
Ask for Slot (Satisfaction/CSAT)
The first Ask for Slot block will ask a CSAT question on a five-point scale.
- Slot: Select One_to_Five_
- Question: Enter {{Flow.CurrentQuestion}}
- Quick Replies: Enter several potential responses, labeled numerically
- Slot Result: Select Slot.One_to_Five_
Call Data Action (Post Answer)
With the customer's second response converted, we can call the Post Answer Data Action to update the interaction in Feedback and prepare to ask the next question.
- Category: Process Conversation (Web Messenger)
- Data Action: Post Answer
- Configuring Inputs:
- id: Enter Flow.interaction_id
- response: Enter Slot.One_to_Five_
- Success Outputs:
- Set prompts to Flow.Current_Question_Collection.
Update Data (Second Question)
Just as we did for the first question, we will use an Update Data block to parse and assign the value of the second question that we obtained in the previous block.
- Update Statement 1: Set Flow.CurrentQuestion to the expression Replace(Replace(Flow.Current_Question_Collection[0],"<p>",NOT_SET),"</p>", NOT_SET)
Ask for Slot (First Call Resolution - Yes/No)
The next Slot will present an FCR question with options for Yes or No, then save the customer's choice as a Slot Result.
- Slot: Select Yes_No_
- Question: Enter {{Flow.CurrentQuestion}}
- Quick Replies: Provide options for Yes and No
- Slot Result: Select Slot.Yes_No_
Call Data Action (Post Answer)
With the customer's FCR response assigned to a Slot Result, we can call the Post Answer Data Action to update the interaction in Feedback. After that, we can prepare to ask the next question by updating the prompts variable again.
- Category: Process Conversation (Web Messenger)
- Data Action: Post Answer
- Configuring Inputs:
- id: Enter Flow.interaction_id
- response: Enter Slot.Yes_No_
- Success Outputs:
- Set prompts to Flow.Current_Question_Collection
Update Data (Third Question)
Again, we will use an Update Data block to parse and assign the value of the next question that we obtained in the previous block.
- Update Statement 1: Set Flow.CurrentQuestion to the expression Replace(Replace(Flow.Current_Question_Collection[0],"<p>",NOT_SET),"</p>", NOT_SET)
Ask for Slot (Open Feedback)
The third Ask for Slot block will ask an open-feedback question. Here we will allow customers to provide any text response they would like.
- Slot: Select open_feedback_
- Question: Enter {{Flow.CurrentQuestion}}
- Slot Result: Enter Slot.open_feedback_
Call Data Action (Post Answer)
With the customer's third response in hand, we can call the Post Answer Action to update the interaction in Feedback and prepare to ask the next question.
- Category: Process Conversation (Web Messenger)
- Data Action: Post Answer
- Configuring Inputs:
- id: Enter Flow.interaction_id
- response: Enter Slot.open_feedback_
- Success Outputs:
- Set prompts to Flow.Current_Question_Collection
Update Data (Closing Prompt)
Now that all questions in our example survey have been asked, the prompts variable should hold a closing message from the Feedback survey. We will parse this into the Flow.CurrentQuestion variable in this block, then send the message in the next block.
- Update Statement 1: Set Flow.CurrentQuestion to the expression Replace(Replace(Flow.Current_Question_Collection[0],"<p>",NOT_SET),"</p>", NOT_SET)
Communicate
To wrap up the survey, use a Communicate block.
- Communication: Assign {{Flow.CurrentQuestion}}