Dialogflow

*contexts*

are similar to natural language context.
If a person says to you "they are orange",
you need context in order to understand what "they" is referring to.
Similarly, for Dialogflow to handle an end-user expression like that,
it needs to be provided with context in order to correctly match an intent.


Using contexts,
you can control the flow of a conversation.
You can configure contexts for an intent by setting
[input and output contexts](https://docs.cloud.google.com/dialogflow/docs/contexts-input-output),
which are identified by string names.
When an intent is matched,
any configured *output contexts* for that intent become active.
While any contexts are active,
Dialogflow is more likely to match intents
that are configured with *input contexts* that correspond to
the currently active contexts.


The following diagram shows an example that uses context for a banking agent.
![Diagram of user interacting with intents and context.](https://docs.cloud.google.com/static/dialogflow/es/docs/images/contexts-overview.svg)

1. The end-user asks for information about their checking account.
2. Dialogflow matches this end-user expression to the `CheckingInfo` intent. This intent has a `checking` output context, so that context becomes active.
3. The agent asks the end-user for the type of information they want about their checking account.
4. The end-user responds with "my balance".
5. Dialogflow matches this end-user expression to the `CheckingBalance` intent. This intent has a `checking` input context, which needs to be active to match this intent. A similar `SavingsBalance` intent may also exist for matching the same end-user expression when a `savings` context is active.
6. After your system performs the necessary database queries, the agent responds with the checking account balance.