How to collect user input without follow up intents in Dialogflow ES

Sometimes I see questions like these in the Dialogflow forum.

So, I got one intent working. How can I now “move” the conversation to the next intent?

Answer

In Intent1, declare an output context called contextA. In the next intent you want to fire, use contextA as the input context. You have now chained Intent1 and Intent2 using contextA.

Is that all?

There is quite a bit more. But that’s the basic idea for every intent you are trying to chain into the conversation.

An example

Let us take the example of the follow up intent tutorial, and use it as an example.

You cannot use follow up intents in all scenarios. Learning this technique will help you in such situations. Under the hood, what I am describing here uses the same idea. Also, this technique usually makes it easier to maintain your chatbot.

Add a new intent called addwebsitechatbot and add the following details. Set the output context as await_name and change the lifespan to 1

Now add another intent called userprovidesname and add await_name as the input context and await_email as the output context. The training phrase will be an example name, such as John Smith. You have now “chained” the two intents together as I have described.

Now create another intent called userprovidesemail and add the details below. You have now chained userprovidesemail intent to userprovidesname intent – meaning you can move from the latter to the former in your conversation flow.

To complete the steps, add another intent called userprovidesurl and add the following details. Notice that this has no output context, because we do not wish to chain an intent after this one. That is, we reach the end of the conversation when this intent fires.

Now test the bot using the Dialogflow Messenger integration