Difference between revisions of "DES/Current/Designer/BotBlock"
m (Ed.jamer@genesys.com moved page PEC-ROU/Current/Designer/BotBlock to DES/Current/Designer/BotBlock: Text replacement - "PEC-ROU/Current/Designer/" to "DES/Current/Designer/") |
(Published) |
||
Line 46: | Line 46: | ||
When the slots have been filled, the customer's intent can then be fulfilled through Designer. For example, once the slot for the '''ReturnDate''' is filled with input from the customer, the Designer application can then use that information to reserve the requested vehicle. | When the slots have been filled, the customer's intent can then be fulfilled through Designer. For example, once the slot for the '''ReturnDate''' is filled with input from the customer, the Designer application can then use that information to reserve the requested vehicle. | ||
+ | |||
+ | ===Select a variable to send context to the Bot Session=== | ||
+ | This option enables you to pass an initial slot (or entity) value to a Lex or Dialogflow bot. This can be useful when an attribute is known before the interaction starts, such as the customer's name, phone number, or email address. With this slot already filled, the bot won't need to prompt the customer to provide this information. | ||
+ | |||
+ | To use this option, you'll need to set up a variable that contains a JavaScript object that defines the value you want to pass to the bot. Then, select this variable from the dropdown. | ||
+ | |||
+ | This also requires some configuration with your bot service provider, as you'll need to define an input context (or session attribute) for the slot and assign it a default value that corresponds to the JavaScript object. We've included an example that shows how to do this with a Dialogflow bot, but you can refer to the documentation from your bot service provider for additional information. | ||
+ | |||
+ | ====Example (Dialogflow)==== | ||
+ | For a quick example of how this works, let's set this up with a Dialogflow bot. First, we'll go to the '''Intents''' section of the bot and add a new '''Context.''' In this example, we've created an intent called '''Intent with context''' and added an input context to it, called '''ExampleContext.''' | ||
+ | |||
+ | [[File:Des bot block context 01.png]] | ||
+ | |||
+ | Then, for the slot that we want to pass an initial value to, we need to set a default value for an attribute of the context. To do this, we'll go to the '''Action and parameters''' section and add the details for the slot we want to fill with an initial value. In this case, we'll add details for the '''phone number''' attribute. | ||
+ | |||
+ | To assign the default value, we'll hover on the right-side of the row to reveal the additional options menu and click it to open the '''Default value''' setting: | ||
+ | |||
+ | [[File:Des bot block context 03.png]] | ||
+ | |||
+ | Now we can set the default value to match the name of the context and the attribute we want to fill: | ||
+ | |||
+ | [[File:Des bot block context 02.png]] | ||
+ | |||
+ | In Designer, we'll create a user-defined variable called '''varInput'''. For its value, we'll add a JavaScript object called '''ExampleContext''' that passes an initial value of '''1234567''' to the '''phone-number''' attribute. | ||
+ | |||
+ | {{NoteFormat|For Dialogflow bots, the JavaScript object must contain the context name. Lex bots, however, do not use contexts. JavaScript objects for a Lex bot can use any name, but if multiple contexts are passed to the bot, it only accepts the first one and ignores the others.|2}} | ||
+ | |||
+ | <source lang="javascript">{ | ||
+ | 'ExampleContext':{ | ||
+ | 'attributes': { | ||
+ | 'phone-number': '1234567' | ||
+ | } | ||
+ | }, | ||
+ | 'lifetime': 1 | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | In the '''Bot''' block, we can then select this variable as the context to pass to the bot: | ||
+ | |||
+ | [[File:Des bot input settings context.png]] | ||
+ | |||
+ | Another example of how you could use this option is to pass an initial message to the bot to start a conversation. In the JavaScript Object, add a field called '''content''' that contains the message you want to send (e.g. "I want to book a hotel room."):<br /> | ||
+ | <source lang="javascript">{ | ||
+ | 'ExampleContext':{ | ||
+ | 'attributes': { | ||
+ | 'phone-number': '1234567' | ||
+ | } | ||
+ | }, | ||
+ | 'content': 'I want to book a hotel room.', | ||
+ | 'lifetime': 1 | ||
+ | } | ||
+ | </source> | ||
|Status=No | |Status=No | ||
}}{{Section | }}{{Section |
Revision as of 15:07, April 23, 2021
Contents
Use the Bot block to add a chatbot to your application.
About Bots in Designer
Bots are software applications that apply automatic speech recognition and natural language understanding to listen and respond to customers in a way that resembles a conversation with a live agent. They can determine what a customer wants to do and then collect the information required to fulfill the request.
You can add a Bot block to the Self Service phase of your application when you want to use a bot resource in your application. Designer bot resources are managed from the Bot Registry, where you can register and manage the bot resources that you want to use in your applications.
Designer enables you to use multiple bot resources in an application. If your application is a default type that is enabled for omni-channel, the same bot resource can service both voice and chat customers.
The following video provides a brief overview about bots and how to use them in Designer:
Using this block
From the User Interaction section of the palette, drag and drop a Bot block to the Self Service phase of your application.
After you have set up the block, you can then customize the application logic to specify additional handling, such as call a Shared Module for managing a specific type of intent or send the customer to a live agent for more assistance.
Intents and Slots tab
Use the settings in the Configure Bot details section to select the provider and name of the bot resource you want to use.
Designer then automatically populates the block properties with Intents and Slots for the bot resource you've selected. For each Intent, Designer automatically creates an associated Bot Option "child" block (similar to how the Menu block creates blocks for each menu option).
In the Intents and Slots assignment section, you can select the variable that holds the Intent (what does the customer want to do?) and values for the Slots. The Slots (or entities) help provide additional context to the intent.
For example, let's say our selected bot resource has an Intent called BookCar. The bot detects that the customer wants to rent a car, but it also needs to know other details about the customer's request, such as the type of car they want, where they are picking it up, and when they plan to return it. The Slots are used to guide the bot as to the questions it needs to ask the customer (using natural-language) so it can collect this type of information.
When the slots have been filled, the customer's intent can then be fulfilled through Designer. For example, once the slot for the ReturnDate is filled with input from the customer, the Designer application can then use that information to reserve the requested vehicle.
Select a variable to send context to the Bot Session
This option enables you to pass an initial slot (or entity) value to a Lex or Dialogflow bot. This can be useful when an attribute is known before the interaction starts, such as the customer's name, phone number, or email address. With this slot already filled, the bot won't need to prompt the customer to provide this information.
To use this option, you'll need to set up a variable that contains a JavaScript object that defines the value you want to pass to the bot. Then, select this variable from the dropdown.
This also requires some configuration with your bot service provider, as you'll need to define an input context (or session attribute) for the slot and assign it a default value that corresponds to the JavaScript object. We've included an example that shows how to do this with a Dialogflow bot, but you can refer to the documentation from your bot service provider for additional information.
Example (Dialogflow)
For a quick example of how this works, let's set this up with a Dialogflow bot. First, we'll go to the Intents section of the bot and add a new Context. In this example, we've created an intent called Intent with context and added an input context to it, called ExampleContext.
Then, for the slot that we want to pass an initial value to, we need to set a default value for an attribute of the context. To do this, we'll go to the Action and parameters section and add the details for the slot we want to fill with an initial value. In this case, we'll add details for the phone number attribute.
To assign the default value, we'll hover on the right-side of the row to reveal the additional options menu and click it to open the Default value setting:
Now we can set the default value to match the name of the context and the attribute we want to fill:
In Designer, we'll create a user-defined variable called varInput. For its value, we'll add a JavaScript object called ExampleContext that passes an initial value of 1234567 to the phone-number attribute.
{
'ExampleContext':{
'attributes': {
'phone-number': '1234567'
}
},
'lifetime': 1
}
In the Bot block, we can then select this variable as the context to pass to the bot:
Another example of how you could use this option is to pass an initial message to the bot to start a conversation. In the JavaScript Object, add a field called content that contains the message you want to send (e.g. "I want to book a hotel room."):
{
'ExampleContext':{
'attributes': {
'phone-number': '1234567'
}
},
'content': 'I want to book a hotel room.',
'lifetime': 1
}
Input Settings tab
If you are setting up a DialogFlow bot, you can select Use Streaming Audio to have Designer stream the audio inputs directly to the bot services provider. This enables the bot provider to handle the transcribing of audio inputs and assigning them to the appropriate intents and slots, which can improve the performance of these types of bots.
The Beep before listening for input option plays a "beep" tone after the bot asks the customer for input. When enabled, the Bot block only recognizes the input that is received from the customer after the beep has played.
You can also use this tab to adjust the Input timeout values for both voice and chat inputs. These settings tell Designer how long to wait (in seconds) before assuming that the customer did not provide any input to the bot.
Retry tab
If a bot doesn't understand a response from a customer, it asks the customer to try again until it understands the input being provided.
The retry settings on the Bot block work a bit differently than the retry settings on other blocks, such as Menu and User Input, in that you specify how the Bot block will respond to input that isn't recognized on a conversational level, for each of the question and response exchanges that take place between the bot service and the customer.
Use application-wide retry
Select this option if you want to use the retry settings that are specified on the Global Retry tab in the Application Settings.
Allow retries
Select this option to specify specify retry rules for this block. When enabled, you can set the following options:
Number of No Input retries allowed
Select the number of retries to allow for each question and response sequence that occurs in the conversation between the bot service and the customer. For each retry, you can specify whether a prompt is played by clicking the corresponding section beneath this field.
For example, if you allow two no-input retries and you want to play a prompt after the first retry, select the No Input #1 line and add a prompt. Enable the Play original menu prompt after this retry prompt check box to repeat the menu prompts for the customer.
Number of No Match retries allowed
Most bots will follow-up with the customer if they don't understand the input that's been provided. For example, the bot will simply ask the customer to repeat the information until it successfully captures the response.
As this type of handling is typically built-into the bot by the bot services provider, you may not need to specify this setting in the Bot block.
After Final No Input
Add the prompt to play after the maximum number of permitted No Input retries is reached.
As this block is in the Self Service phase, you can also specify a target destination for the application to jump to, such as another block in the Self Service phase or to the Assisted Service or Finalize phase of the application.
After Final No Match
Add the prompt to play after the maximum number of permitted No Match retries is reached.
As this block is in the Self Service phase, you can also specify a target destination for the application to jump to, such as another block in the Self Service phase or to the Assisted Service or Finalize phase of the application.
Results tab
Specify the variables that will hold the bot responses and status flags, as returned to the Bot block from the bot services provider. Each variable is described in more detail below.
Bot responses
Store latest response from bot
This variable stores details about the latest conversation that the bot engine had with a customer. For example, the results for a Dialogflow bot used to book a ghost removal service might look like this (JSON formatted):
{ "status": { "code": 0, "message": null }, "data": { "botName": "MySampleServiceBookingBot", "botAlias": null, "sessionId": "ABC123", "state": "SUCCESS", "intent": "Book a Ghostbuster", "intentScore": 1, "slots": { "neighbourhoods": "Queens", "location": "backyard", "date": "2020-01-11T12:00:00-05:00", "ghost": "Zuul the Gatekeeper" }, "slotsData": null, "inputTranscript": "today", "message": "", "attributes": {}, "error": null, "recognitionConfidence": null, "stability": null } }
In the example above, some of the details that were returned include:
botName
– name of the bot that was invoked.sessionID
– unique ID assigned to the session.state
– indicates SUCCESS if everything worked.intent
– the intent that was detected (i.e. what the customer wanted to do).slots
– the details that the bot collected from the customer to fill the associated slots (or entities) for the intent.inputTranscript
– the utterance (voice or chat input) that the bot received from the customer.
Store bot invocation result code
This variable stores the HTTP status code received from the bot when it was last invoked by the application. For example, a result code of 200
(OK) indicates that the bot was successfully invoked.
Other result codes, such as 401
(Unauthorized) or 403
(Forbidden), can indicate there was a problem reaching the bot service.
Bot status flags
Bot invocation or system error
If true
, this indicates that Designer was not able to successfully reach or invoke the bot service. There could be an issue with the system, or you might need to check the credentials provided for your bot service in the Bot Registry. Otherwise, this returns false
.
Bot engine execution error
If true
, this indicates that Designer was able to communicate with the bot, but an error occurred while the bot engine was processing the request. For example, the bot returned an incorrect response and triggered the Error Handler block. Otherwise, this returns false
.
Viewing the results data
You can view the results data in Designer Analytics by going to the Session Detail Records dashboard. In the All Events panel, find the application instance you want to check and then filter or search for the data you want to view.
For example:
Bot Option blocks
Additional Bot Option "child" blocks for each intent are also created, along with an Error Handler block. For each Intent, you can go to its related Bot Option block to edit its label and give it a more meaningful name.
In the properties for the Error Handler block, you can specify the action to take if an error occurs (for example, go to another block or the Assisted Service phase):
You can also add other blocks below the intent option block when you want to add some additional logic or processing, such as a Shared Module that will be called when that intent is detected.