Difference between revisions of "DES/Current/Designer/BotBlock"

From Genesys Documentation
Jump to: navigation, search
(Published)
(Published)
Line 16: Line 16:
 
|image=439401643
 
|image=439401643
 
|AltText=Overview about using bots in Designer
 
|AltText=Overview about using bots in Designer
|structuredtext=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.
+
|structuredtext=Bots are software applications that leverage natural language processing and natural language understanding to recognize input and respond to customers in a way that resembles a conversation with a live agent. They can determine what a customer wants to do based on natural language input and then proceed to collecting the information required to fulfill the request or intent.
  
If you have a bot configured with a supported bot services provider, such as Google DialogFlow, Amazon Lex, or {{Link-AnywhereElse|product=GDE|version=Current|manual=User|topic=Overview|display text=Genesys Dialog Engine}}, you can add it to the Designer {{Link-SomewhereInThisVersion|manual=Designer|topic=BotRegistry|display text=Bot Registry}}. You can then use a '''Bot''' block to add the bot service to a Designer application.
+
If you have a bot configured with a supported bot services provider, such as Google DialogFlow ES or CX, Amazon Lex, or {{Link-AnywhereElse|product=GDE|version=Current|manual=User|topic=Overview|display text=Genesys Dialog Engine}}, you can add it to the Designer {{Link-SomewhereInThisVersion|manual=Designer|topic=BotRegistry|display text=Bot Registry}}. You can then use a '''Bot''' block to integrate the bot service to a Designer application.  
 +
 
 +
The bot block will typically collect input from the customer, send it to the external Bot, and wait for a response. This response may trigger completion of the Bot block (success / error) or it may trigger another ''turn'' of playing back a prompt to the customer and collecting additional input which is again sent to the bot. These turns are handled internally in the Bot block and there is no need for the application developer to add more blocks for them.
  
 
Watch the video to learn more about using bots in Designer.
 
Watch the video to learn more about using bots in Designer.
 +
|structuredtextwide={{NoteFormat|Currently, support for Dialogflow CX bots is available only in Designer Private Edition.|}}
 
|Status=No
 
|Status=No
 
}}{{Section
 
}}{{Section
Line 26: Line 29:
 
|anchor=usingthisblock
 
|anchor=usingthisblock
 
|alignment=Vertical
 
|alignment=Vertical
|structuredtext=The '''Bot''' block is located in the {{Link-SomewhereInThisVersion|manual=Designer|topic=UserIntBlocks|display text=User interaction}} section of the palette. Add this block to the {{Link-SomewhereInThisVersion|manual=Designer|topic=ApplicationPhases|anchor=selfservice|display text=Self Service}} phase of a {{Link-SomewhereInThisVersion|manual=Designer|topic=ApplicationsBar|anchor=apptypes|display text=Default}} application when you want to use a bot service in your application. If the application is {{Link-SomewhereInThisVersion|manual=Designer|topic=ApplicationSettings|anchor=digital|display text=enabled for omni-channel}}, the same bot resource can service both voice and chat customers.  
+
|structuredtext=The '''Bot''' block is located in the {{Link-SomewhereInThisVersion|manual=Designer|topic=UserIntBlocks|display text=User interaction}} section of the palette. Add this block to the {{Link-SomewhereInThisVersion|manual=Designer|topic=ApplicationPhases|anchor=selfservice|display text=Self Service}} phase of a {{Link-SomewhereInThisVersion|manual=Designer|topic=ApplicationsBar|anchor=apptypes|display text=Default}} application when you want to use a bot in your application. If the application is {{Link-SomewhereInThisVersion|manual=Designer|topic=ApplicationSettings|anchor=digital|display text=enabled for omni-channel}}, the same bot can service both voice and chat customers.  
  
You can use multiple bot resources in an application. Simply add a '''Bot''' block for each bot resource you want to use.
+
You can use multiple bots in an application. Simply add a '''Bot''' block for each bot you want to use.
  
{{NoteFormat|For voice calls, the '''Bot''' block plays questions and responses that are returned from the bot service as text-to-speech (TTS) prompts. Using prerecorded audio prompts with the '''Bot''' block is not supported.|}}
+
{{NoteFormat|For voice calls, the '''Bot''' block plays questions and responses that are returned from the external bot via text-to-speech (TTS) prompts. Using prerecorded audio prompts with the '''Bot''' block is not supported.|}}
 
|Status=No
 
|Status=No
 
}}{{Section
 
}}{{Section
Line 36: Line 39:
 
|anchor=intents
 
|anchor=intents
 
|alignment=Vertical
 
|alignment=Vertical
|structuredtext=Use the settings on this tab to tell Designer which {{Link-SomewhereInThisVersion|manual=Designer|topic=BotRegistry|display text=bot resource}} you want to use in your application. You can then configure the '''intents''' and '''slots''' for that bot service.  
+
|structuredtext=Use the settings on this tab to tell Designer which {{Link-SomewhereInThisVersion|manual=Designer|topic=BotRegistry|display text=bot from the registry}} you want to use in your application. You can then configure the '''intents''' and '''slots''' for that bot.
 +
 
 +
An '''intent''' is something that the customer wants to accomplish, such as booking a trip or making a reservation. These are defined in the bot and the bot is set up to collect the information it needs to fulfill these intents, typically referred to as slots. '''Slots''' (also known as '''entities''') provide additional context to the intent.
 +
 
 +
For example, let's say a bot detects that a customer wants to schedule an appointment. It now has the '''intent''', but it also needs to know other details about the customer's request, such as the time, date, and the type of appointment. These are the '''slots''', which the bot uses to determine the questions it needs to ask in order to collect the information needed to fulfill the customer's intent.
  
An '''intent''' is something that the customer wants to accomplish, such as booking a trip or making a reservation. '''Slots''' (also known as '''entities''') provide additional context to the intent.  
+
Slots for each intent can be mapped to application variables in this tab. However, it is recommended to use this for small bots with a few intents and slots. If you are working with a bot with more than 10 intents, it is recommended you do not map variables to slots. Instead use the '''Results''' tab to capture all the information returned from the bot and use it in '''Assign''' blocks. This keeps the Bot block relatively isolated from the structure of the bot.
  
For example, let's say a bot detects that a customer wants to schedule an appointment. It now has the '''intent''', but it also needs to know other details about the customer's request, such as the time, date, and the type of appointment. These are the '''slots''', which the bot uses to determine the questions it needs to ask in order to collect the information needed to fulfill the customer's intent.{{AnchorDiv|bot_details}}
+
Intents are shown as child blocks of the Bot block and once the external bot tells the Designer application it has identified an intent, Designer executes that specific intent's child block and any child blocks underneath that intent block. This too works well for a small number of intents and it is not recommended for more than 10 intents. Instead use a '''Segmentation''' block immediately following the Bot block, to process specific intents and execute fulfillment.
 +
 
 +
{{NoteFormat|The Bot block does not support child intent blocks for Dialogflow CX bots even though they are shown in the UI. The '''Error Handler''' block is supported and should be used to handle errors. All other exits from the Bot block will directly proceed to the next block after the Bot block.|}}
 +
 
 +
{{AnchorDiv|bot_details}}
 
===Configure Bot details===
 
===Configure Bot details===
 
Use this section to specify the '''Bot''' '''provider''' and '''Name:'''       
 
Use this section to specify the '''Bot''' '''provider''' and '''Name:'''       
Line 67: Line 78:
 
<br />{{AnchorDiv|ContextVariable}}
 
<br />{{AnchorDiv|ContextVariable}}
 
===Select a variable to send context to the Bot Session===
 
===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 ES 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.  
+
This option enables you to pass an initial slot (or entity) value to a Lex or, Dialogflow ES or CX 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 if the Bot block sends it to the external bot.  
  
 
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.   
 
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.   
Line 90: Line 101:
 
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.  
 
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}}
+
{{NoteFormat|For Dialogflow ES 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">{
 
<source lang="javascript">{
Line 101: Line 112:
 
}
 
}
 
</source>
 
</source>
 +
 +
For Dialoglfow CX bots, additional functionality is supported via this method which is covered in the later sections on this page.
  
 
In the '''Bot''' block, we can then select this variable as the context to pass to the bot:
 
In the '''Bot''' block, we can then select this variable as the context to pass to the bot:
Line 139: Line 152:
 
</source>
 
</source>
 
If you set both an event and an initial message in the JavaScript Object, the bot ignores the initial message and uses the event.
 
If you set both an event and an initial message in the JavaScript Object, the bot ignores the initial message and uses the event.
 +
 +
===Invoking a Dialogflow CX bot with events===
 +
{{NoteFormat|Currently, support for Dialogflow CX bots is available only in Designer Private Edition.|}}Similar functionality is also supported with DialogFlow CX - to use an '''Event''' to initiate a bot interaction with a Dialogflow CX bot without requiring the customer to provide any input. The context is still passed normally when invoking the bot with an event. The structure of the JSON object has more fields and certain naming conventions must be observed.<source>{
 +
    ‘_context': {
 +
        'attributes': {
 +
            'color': 'blue',
 +
            'custname': 'Mike'
 +
        }
 +
    },
 +
    'event': 'order_shirt',
 +
    'lifetime': 1
 +
}</source>
 +
Note the <code>_context</code> key name, which must have the leading underscore.
 +
<br />
 +
{{{!}} class="wikitable"
 +
!JSON Object Property
 +
!Capability
 +
!Description
 +
{{!}}-
 +
{{!}}_context.attributes object
 +
{{!}}Pass known context to the bot.
 +
{{!}}Each property of this object is sent to the external bot which will allow it to pre-fill certain slots with these values.
 +
{{!}}-
 +
{{!}}event
 +
{{!}}Invoke an intent directly in the external bot.
 +
{{!}}This skips the first input collection and allows the bot to process attributes passed in directly without having to rely on customer input.
 +
{{!}}-
 +
{{!}}content
 +
{{!}}A string that contains an initial message.
 +
{{!}}This passes the string as the first input to the bot as if it was collected from the end user.
 +
{{!}}-
 +
{{!}}webhookHeaders
 +
{{!}}A JSON object passed from the CX bot to Designer and passed back into the Bot from Designer.
 +
{{!}}Fulfillment code configured in the bot can use these values.
 +
{{!}}-
 +
{{!}}webhookPayload
 +
{{!}}A JSON object passed from the CX bot to Designer and passed back into the Bot from Designer.
 +
{{!}}Fulfillment code configured in the bot can use these values.
 +
{{!}}}
 
|Status=No
 
|Status=No
 
}}{{Section
 
}}{{Section
Line 144: Line 196:
 
|anchor=input_settings
 
|anchor=input_settings
 
|alignment=Vertical
 
|alignment=Vertical
|structuredtext=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 transcribe the audio inputs and assign them to the appropriate intents and slots, which can improve the performance of these types of bots.
+
|structuredtext=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 transcribe the audio inputs and assign them to the appropriate intents and slots, which can improve the performance of these types of bots.{{NoteFormat|Dialogflow CX bots can only use voice streaming.|}}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.
 
 
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.  
+
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.  
  
 
[[File:des_bot_input_settings_3.png]]
 
[[File:des_bot_input_settings_3.png]]
Line 166: Line 216:
  
 
===Allow retries===
 
===Allow retries===
Select this option to specify specify retry rules for this block. When enabled, you can set the following options:
+
Select this option to specify retry rules for this block. When enabled, you can set the following options:
  
 
====Number of No Input retries allowed====
 
====Number of No Input retries allowed====
Line 186: Line 236:
  
 
[[File:des_bot_retry_allow.png]]
 
[[File:des_bot_retry_allow.png]]
 +
 +
If the external bot wants to control retry behavior, an event can be sent from the Bot block that indicates a No Input scenario. The event name can be specified in the Bot block’s Retry tab and this enables the external bot to customize retry behavior per turn. This is supported for DialogFlow ES bots only.<br />
 
|Status=No
 
|Status=No
 
}}{{Section
 
}}{{Section
Line 247: Line 299:
 
====Bot engine execution error====
 
====Bot engine execution error====
 
If <code>true</code>, 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 <code>false</code>.
 
If <code>true</code>, 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 <code>false</code>.
<!-- HADENA content
 
 
===Additional bot information===
 
===Additional bot information===
 
The variables in this section are applicable only to Dialogflow CX type bots. Dialogflow CX bots manage conversations differently than other types of bots. If you are using a Dialogflow CX bot, you can set these variables to capture additional details about the interaction.
 
The variables in this section are applicable only to Dialogflow CX type bots. Dialogflow CX bots manage conversations differently than other types of bots. If you are using a Dialogflow CX bot, you can set these variables to capture additional details about the interaction.
 +
 +
These properties may be supported for other bot types in future versions of Designer.
  
 
====Store all slots from the bot====
 
====Store all slots from the bot====
This variable stores an object (JSON formatted) that contains all of the slots that were returned from the bot provider. For example:
+
This variable stores an object (JSON formatted) that contains all of the slots that were returned from the bot provider at the end of the last turn with the external bot. It does not contain intents. For example:
 
<source lang="java">
 
<source lang="java">
 
{
 
{
Line 271: Line 324:
 
}
 
}
 
</source>
 
</source>
 +
 
====Capture slots information with every intent====
 
====Capture slots information with every intent====
This variable captures additional details about the slots for each matched intent. For example:
+
This variable captures slots organized by intents as these intents were identified in chronological order. Each intent captures slots as they were at the time the intent was identified. This give an additional perspective into the conversation with the bot. For example:
 
<source lang="java">
 
<source lang="java">
 
[
 
[
Line 305: Line 359:
  
 
====Store the reason the interaction ended====
 
====Store the reason the interaction ended====
If the bot returns a SUCCESS status, this variable stores information about how the bot session ended. There are two possible result values:  
+
If the bot conversation is successful (it does not error out), this variable stores information about how the bot session ended. There are two possible result values:  
 
 
*END_INTERACTION – the session ended normally
 
*LIVE_AGENT_HANDOFF – the customer was transferred to a live agent
 
  
If the bot does not return a SUCCESS state (for example, the bot experienced an error), this variable is not updated. -->
+
*END_INTERACTION – the session ended normally.
 +
*LIVE_AGENT_HANDOFF – the customer should be transferred to a live agent and the application should try to move to Assisted Service. This must be handled by the application logic. There is no in-built behavior that would start Assisted service once this result is returned by the external bot.
  
 +
If the bot does not return a SUCCESS state (for example, the bot experienced an error), this variable is not updated.<br />
 
===Viewing the results data===
 
===Viewing the results data===
 
You can view the results data in Designer Analytics by going to the {{Link-SomewhereInThisVersion|manual=Designer|topic=SDRDash|display text=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.
 
You can view the results data in Designer Analytics by going to the {{Link-SomewhereInThisVersion|manual=Designer|topic=SDRDash|display text=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.

Revision as of 22:04, September 30, 2021

This topic is part of the manual Designer User's Guide for version Current of Designer.

Use the Bot block to add a chatbot to your application.

Related documentation:

About bots in Designer

Bots are software applications that leverage natural language processing and natural language understanding to recognize input and respond to customers in a way that resembles a conversation with a live agent. They can determine what a customer wants to do based on natural language input and then proceed to collecting the information required to fulfill the request or intent.

If you have a bot configured with a supported bot services provider, such as Google DialogFlow ES or CX, Amazon Lex, or Genesys Dialog Engine, you can add it to the Designer Bot Registry. You can then use a Bot block to integrate the bot service to a Designer application.

The bot block will typically collect input from the customer, send it to the external Bot, and wait for a response. This response may trigger completion of the Bot block (success / error) or it may trigger another turn of playing back a prompt to the customer and collecting additional input which is again sent to the bot. These turns are handled internally in the Bot block and there is no need for the application developer to add more blocks for them.

Watch the video to learn more about using bots in Designer.
Important
Currently, support for Dialogflow CX bots is available only in Designer Private Edition.

Using this block

The Bot block is located in the User interaction section of the palette. Add this block to the Self Service phase of a Default application when you want to use a bot in your application. If the application is enabled for omni-channel, the same bot can service both voice and chat customers.

You can use multiple bots in an application. Simply add a Bot block for each bot you want to use.

Important
For voice calls, the Bot block plays questions and responses that are returned from the external bot via text-to-speech (TTS) prompts. Using prerecorded audio prompts with the Bot block is not supported.

Intents and Slots tab

Use the settings on this tab to tell Designer which bot from the registry you want to use in your application. You can then configure the intents and slots for that bot.

An intent is something that the customer wants to accomplish, such as booking a trip or making a reservation. These are defined in the bot and the bot is set up to collect the information it needs to fulfill these intents, typically referred to as slots. Slots (also known as entities) provide additional context to the intent.

For example, let's say a bot detects that a customer wants to schedule an appointment. It now has the intent, but it also needs to know other details about the customer's request, such as the time, date, and the type of appointment. These are the slots, which the bot uses to determine the questions it needs to ask in order to collect the information needed to fulfill the customer's intent.

Slots for each intent can be mapped to application variables in this tab. However, it is recommended to use this for small bots with a few intents and slots. If you are working with a bot with more than 10 intents, it is recommended you do not map variables to slots. Instead use the Results tab to capture all the information returned from the bot and use it in Assign blocks. This keeps the Bot block relatively isolated from the structure of the bot.

Intents are shown as child blocks of the Bot block and once the external bot tells the Designer application it has identified an intent, Designer executes that specific intent's child block and any child blocks underneath that intent block. This too works well for a small number of intents and it is not recommended for more than 10 intents. Instead use a Segmentation block immediately following the Bot block, to process specific intents and execute fulfillment.

Important
The Bot block does not support child intent blocks for Dialogflow CX bots even though they are shown in the UI. The Error Handler block is supported and should be used to handle errors. All other exits from the Bot block will directly proceed to the next block after the Bot block.

Configure Bot details

Use this section to specify the Bot provider and Name:

Des bot intents bot details.png

Once selected, Designer automatically populates the block properties with intents and slots for that bot resource.

Configure intents

Next, select the intents you want to enable for the bot:

Des bot intents configure intents.png

For each intent that you enable, Designer automatically creates a corresponding Bot Option block in the application flow.

Des bot option blocks.png

Important
If you want Designer to perform special handling based on an intent, see Adding logic for handling intents for the recommended way to do this.

Intents and Slots assignment

Select the variables that will store values for the selected Intent and the related Slots.

Des bot intents assignments.png


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 ES or CX 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 if the Bot block sends it to the external bot.

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 ES)

For a quick example of how this works, let's set this up with a Dialogflow ES 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.

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:

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:

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.

Tip
For Dialogflow ES 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.
{
  'ExampleContext':{
    'attributes': {
      'phone-number': '1234567'
    }
  },
  'lifetime': 1
}

For Dialoglfow CX bots, additional functionality is supported via this method which is covered in the later sections on this page.

In the Bot block, we can then select this variable as the context to pass to the bot:

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 chat 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
}
Warning
The word content is a reserved keyword. Do not use content as the name of the variable that is passing context to the bot.

Invoking a Dialogflow ES bot with events

It's also possible to use an Event to initiate a bot interaction with a Dialogflow ES bot without requiring the customer to provide any input. The context is still passed normally when invoking the bot with an event.

To invoke the bot with an event, go to Dialogflow and set the Event field of the context object to the name of the event you want to invoke. For example, we'll add an event called sample-event to an intent:

Des bot block event df1.png

This is what the JavaScript Object looks like for the above example:

{
  'ExampleContext':{
    'attributes': {
      'phone-number': '1234567'
    }
  },
  'event': 'sample-event',
  'lifetime': 1
}

If you set both an event and an initial message in the JavaScript Object, the bot ignores the initial message and uses the event.

Invoking a Dialogflow CX bot with events

Important
Currently, support for Dialogflow CX bots is available only in Designer Private Edition.
Similar functionality is also supported with DialogFlow CX - to use an Event to initiate a bot interaction with a Dialogflow CX bot without requiring the customer to provide any input. The context is still passed normally when invoking the bot with an event. The structure of the JSON object has more fields and certain naming conventions must be observed.
{
    ‘_context': {
        'attributes': {
            'color': 'blue',
            'custname': 'Mike'
        }
    },
    'event': 'order_shirt',
    'lifetime': 1
}

Note the _context key name, which must have the leading underscore.

JSON Object Property Capability Description
_context.attributes object Pass known context to the bot. Each property of this object is sent to the external bot which will allow it to pre-fill certain slots with these values.
event Invoke an intent directly in the external bot. This skips the first input collection and allows the bot to process attributes passed in directly without having to rely on customer input.
content A string that contains an initial message. This passes the string as the first input to the bot as if it was collected from the end user.
webhookHeaders A JSON object passed from the CX bot to Designer and passed back into the Bot from Designer. Fulfillment code configured in the bot can use these values.
webhookPayload A JSON object passed from the CX bot to Designer and passed back into the Bot from Designer. Fulfillment code configured in the bot can use these values.

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 transcribe the audio inputs and assign them to the appropriate intents and slots, which can improve the performance of these types of bots.
Important
Dialogflow CX bots can only use voice streaming.
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.

Des bot input settings 3.png

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.

Des bot retry use app.png

Allow retries

Select this option to 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.

Des bot retry allow.png

If the external bot wants to control retry behavior, an event can be sent from the Bot block that indicates a No Input scenario. The event name can be specified in the Bot block’s Retry tab and this enables the external bot to customize retry behavior per turn. This is supported for DialogFlow ES bots only.

Results tab

Specify the variables that will hold various results data, as returned to the Bot block from the bot services provider. Each variable is described in more detail below.

Des bot results tab.png

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.

Additional bot information

The variables in this section are applicable only to Dialogflow CX type bots. Dialogflow CX bots manage conversations differently than other types of bots. If you are using a Dialogflow CX bot, you can set these variables to capture additional details about the interaction.

These properties may be supported for other bot types in future versions of Designer.

Store all slots from the bot

This variable stores an object (JSON formatted) that contains all of the slots that were returned from the bot provider at the end of the last turn with the external bot. It does not contain intents. For example:

{
    "operation": "Purchase Item",
    "order_unit": "phone",
    "location": {
        "original": "main st",
        "street-address": "main st"
    },
    "operation_complete": false,
    "admin-area": null,
    "is_returning": true,
    "zip-code": null,
    "city": null,
    "is_logged_in": false,
    "cart": "Nest Thermostat, phone",
    "has_welcomed_user": true
}

Capture slots information with every intent

This variable captures slots organized by intents as these intents were identified in chronological order. Each intent captures slots as they were at the time the intent was identified. This give an additional perspective into the conversation with the bot. For example:

[
    {
        "intent": "Default Welcome Intent",
        "slots": {
            "has_welcomed_user": true
        }
    },
    {
        "intent": "retail.purchase_item_initiate",
        "slots": {
            "operation_complete": false,
            "operation": "Purchase Item",
            "has_welcomed_user": true,
            "is_returning": true
        }
    },
    {
        "intent": "small_talk.confirmation.proceed_as_guest",
        "slots": {
            "has_welcomed_user": true,
            "operation_complete": false,
            "is_returning": true,
            "is_logged_in": false,
            "operation": "Purchase Item"
        }
     
    }
]

Store the reason the interaction ended

If the bot conversation is successful (it does not error out), this variable stores information about how the bot session ended. There are two possible result values:

  • END_INTERACTION – the session ended normally.
  • LIVE_AGENT_HANDOFF – the customer should be transferred to a live agent and the application should try to move to Assisted Service. This must be handled by the application logic. There is no in-built behavior that would start Assisted service once this result is returned by the external bot.

If the bot does not return a SUCCESS state (for example, the bot experienced an error), this variable is not updated.

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:

Des bot results sample.png

Adding logic for handling intents

To specify additional logic for handling intents, Genesys recommends using a Segmentation block to define different pathways for the application to take when certain intents are detected.

In this example, a segmentation block is configured as Intent Fulfillments, with conditions added based on intents:

Des bot intent fulfillments.png

For each intent added as a condition, Designer creates a corresponding Segment block in the application flow. You can then build additional logic for an intent by placing child blocks under these Segment blocks. For example, you might want to call a Shared Module that fulfills that intent.

For more information about setting up segmentation blocks and condition expressions, see the Segmentation block page.

Retrieved from "https://all.docs.genesys.com/DES/Current/Designer/BotBlock (2025-07-06 21:01:35)"
Comments or questions about this documentation? Contact us for support!