Three types of Dialogflow contexts
You might not have realized this, but there are actually three types of Dialogflow contexts.
And I recommend only one of them.
Implicit and auto-generated contexts
When you use the slot filling feature, which I do not recommend, you are using implicit, auto-generated contexts. (Note: I use auto-generated and system generated interchangeably, they mean the same thing).
These contexts are auto-generated because you didn’t create them but they are automatically generated by the system when you define a parameter as being required.
They are implicit, because their presence cannot be used to infer candidate intents.
Explicit and auto-generated contexts
When you use the follow-up intents feature, you will notice that Dialogflow automatically adds an output context to the parent intent as well as an input context to the child intent.
They are auto-generated because you didn’t create them.
They are explicit, however, because the contexts used by the followup intents can be used to infer candidate intents.
Explicit and user-defined contexts
When you create your own contexts to design your conversation flow, I would call them explicit, user-defined contexts.
These are user-defined, of course, since you defined them.
They are explicit, since you can use these contexts to infer candidate intents.
The explicative approach
I recommend that people who build Dialogflow bots use the explicative approach since it makes it much easier to build maintainable Dialogflow bots.
So I suggest using explicit and user-defined contexts as much as possible, since it makes it much easier to debug your Dialogflow chatbot.