There are several ways python and Dialogflow can work together. The two main ways I am using them is for 1) Managing the DialogFlow Agent and 2) Providing Fulfillment to DialogFlow. The two ways use different libraries and connection methods, so I wanted to lay out what I currently use (as of March 2020).
The process of managing the DialogFlow agent includes things like creating intents and entities, adding training phrases, and doing most of the work you can use the usual website "console" interface to accomplish.
DialogFlow provides an API interface with access to most of the functions. You can access the API via a REST interface, Python, or a host of other languages.
On the python side, I'm using the DialogFlow API client, currently v2. It is just installed with:
pip install dialogflow
Even though I'm usign the python client, I have found the general API documentation easier to navigate and read. And the REST documentation to be easier to follow when I'm learning exactly what needs to be passed in. Then I can translate that to the python functions.
However, if you are looking for a specific definition, you can usually find it here:
https://dialogflow-python-client-v2.readthedocs.io/en/latest/gapic/v2/types.html#NAME_CHAIN
Such as https://dialogflow-python-client-v2.readthedocs.io/en/latest/gapic/v2/types.html#dialogflow_v2.types.Intent.Message or https://dialogflow-python-client-v2.readthedocs.io/en/latest/gapic/v2/types.html#dialogflow_v2.types.Entity