Dialogflow: Respond based on values and other conditional responses

12,679

Solution 1

You can't do this in the Response section directly. The Response section is meant for fairly simple responses that don't require significant logic to process. Although you can use parameters in the response, you can't give a different response based on the value of the parameter. So you can set a response to something like

I think $Dinetype is great food.

but not

{{#if $Dinetype == "Thai"}}I think Thai food is too hot{{/if}}

or anything like that

However, you can add code that sends conditional responses and contexts by implementing a Fulfillment webhook. Although you can't do this for each Intent as part of the Intent editor screen, the Fulfillment screen includes a built-in code editor.

Solution 2


Edit: A much easier way has been added to handle this issue directly in Dialogflow


(Updated Solution) Follow-up Intents:

After creating an intent, you can add follow-up intents now.
Intents -> Create Intent > [Response=Prompt For Conditional Response]

Create initial intent that needs conditional response

Intents -> Add Follow-up Intent -> Custom/Yes/No

Add follow-up intent

Then set the training praise to a matching entity you want to conditionally respond to

Training phrases

  

 


OLD HACKY SOLUTION:


Late reply, but maybe someone will find this useful.

If the conditional response only needs to reference a single parameter value, then I figured out what you can do is utilize the Entity's "Reference Value" as the response you want to give for a particular set of Synonyms.

So you'd have an entity that looked like this:

Then, setup your intent like this, with a response of $Dinetype:

Then the end result will look like this:

And you can make whatever follow-up intent you need from there.

Down-side is Dinetype won't be as reusable. But I still think it beats writing a fulfillment webhook every time you need a simple conditional response.

Share:
12,679
Saravanabalagi Ramachandran
Author by

Saravanabalagi Ramachandran

Updated on June 30, 2022

Comments

  • Saravanabalagi Ramachandran
    Saravanabalagi Ramachandran about 2 years

    I have $dinetype variable obtained from the user.

    enter image description here

    But I would like to give response based on what value has been set in $dinetype variable. In addition to giving responses, I also need to set relevant context. How do I do this in DialogFlow?

    enter image description here

    if($Dinetype=='dineout') 
          ask ('which restaurant would you like to go to?')
          set_context ('awaiting-restaurant')
    if($Dinetype=='takeaway') 
          ask ('When would you like to take away?')
          set_context ('awaiting-takeaway-time')
    

    Is it programmable at all? Or is it possible to achieve something equivalent to the above in the UI?

  • Saravanabalagi Ramachandran
    Saravanabalagi Ramachandran almost 6 years
    what about just giving a response back based on values, we can't use the 'Text Response' field?
  • Prisoner
    Prisoner almost 5 years
    That is both brilliant and atrocious. {:
  • filip
    filip almost 5 years
    Absolute brilliant. Nice solution!