<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="dialogflow_v2.html">Dialogflow API</a> . <a href="dialogflow_v2.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dialogflow_v2.projects.agent.html">agent()</a></code>
</p>
<p class="firstline">Returns the agent Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.answerRecords.html">answerRecords()</a></code>
</p>
<p class="firstline">Returns the answerRecords Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.conversationDatasets.html">conversationDatasets()</a></code>
</p>
<p class="firstline">Returns the conversationDatasets Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.conversationModels.html">conversationModels()</a></code>
</p>
<p class="firstline">Returns the conversationModels Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.conversationProfiles.html">conversationProfiles()</a></code>
</p>
<p class="firstline">Returns the conversationProfiles Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.conversations.html">conversations()</a></code>
</p>
<p class="firstline">Returns the conversations Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.knowledgeBases.html">knowledgeBases()</a></code>
</p>
<p class="firstline">Returns the knowledgeBases Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.locations.html">locations()</a></code>
</p>
<p class="firstline">Returns the locations Resource.</p>

<p class="toc_element">
  <code><a href="dialogflow_v2.projects.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#deleteAgent">deleteAgent(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified agent.</p>
<p class="toc_element">
  <code><a href="#getAgent">getAgent(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specified agent.</p>
<p class="toc_element">
  <code><a href="#setAgent">setAgent(parent, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates/updates the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="deleteAgent">deleteAgent(parent, x__xgafv=None)</code>
  <pre>Deletes the specified agent.

Args:
  parent: string, Required. The project that the agent to delete is associated with. Format: `projects/`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="getAgent">getAgent(parent, x__xgafv=None)</code>
  <pre>Retrieves the specified agent.

Args:
  parent: string, Required. The project that the agent to fetch is associated with. Format: `projects/`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Dialogflow agent is a virtual agent that handles conversations with your end-users. It is a natural language understanding module that understands the nuances of human language. Dialogflow translates end-user text or audio during a conversation to structured data that your apps and services can understand. You design and build a Dialogflow agent to handle the types of conversations required for your system. For more information about agents, see the [Agent guide](https://cloud.google.com/dialogflow/docs/agents-overview).
  &quot;apiVersion&quot;: &quot;A String&quot;, # Optional. API version displayed in Dialogflow console. If not specified, V2 API is assumed. Clients are free to query different service endpoints for different API versions. However, bots connectors and webhook calls will follow the specified API version.
  &quot;avatarUri&quot;: &quot;A String&quot;, # Optional. The URI of the agent&#x27;s avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration.
  &quot;classificationThreshold&quot;: 3.14, # Optional. To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a fallback intent will be triggered or, if there are no fallback intents defined, no intent will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
  &quot;defaultLanguageCode&quot;: &quot;A String&quot;, # Required. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the `Update` method.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The description of this agent. The maximum length is 500 characters. If exceeded, the request is rejected.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of this agent.
  &quot;enableLogging&quot;: True or False, # Optional. Determines whether this agent should log conversation queries.
  &quot;matchMode&quot;: &quot;A String&quot;, # Optional. Determines how intents are detected from user queries.
  &quot;parent&quot;: &quot;A String&quot;, # Required. The project of this agent. Format: `projects/`.
  &quot;supportedLanguageCodes&quot;: [ # Optional. The list of all languages supported by this agent (except for the `default_language_code`).
    &quot;A String&quot;,
  ],
  &quot;tier&quot;: &quot;A String&quot;, # Optional. The agent tier. If not specified, TIER_STANDARD is assumed.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. The time zone of this agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.
}</pre>
</div>

<div class="method">
    <code class="details" id="setAgent">setAgent(parent, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Creates/updates the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).

Args:
  parent: string, Required. The project of this agent. Format: `projects/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Dialogflow agent is a virtual agent that handles conversations with your end-users. It is a natural language understanding module that understands the nuances of human language. Dialogflow translates end-user text or audio during a conversation to structured data that your apps and services can understand. You design and build a Dialogflow agent to handle the types of conversations required for your system. For more information about agents, see the [Agent guide](https://cloud.google.com/dialogflow/docs/agents-overview).
  &quot;apiVersion&quot;: &quot;A String&quot;, # Optional. API version displayed in Dialogflow console. If not specified, V2 API is assumed. Clients are free to query different service endpoints for different API versions. However, bots connectors and webhook calls will follow the specified API version.
  &quot;avatarUri&quot;: &quot;A String&quot;, # Optional. The URI of the agent&#x27;s avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration.
  &quot;classificationThreshold&quot;: 3.14, # Optional. To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a fallback intent will be triggered or, if there are no fallback intents defined, no intent will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
  &quot;defaultLanguageCode&quot;: &quot;A String&quot;, # Required. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the `Update` method.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The description of this agent. The maximum length is 500 characters. If exceeded, the request is rejected.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of this agent.
  &quot;enableLogging&quot;: True or False, # Optional. Determines whether this agent should log conversation queries.
  &quot;matchMode&quot;: &quot;A String&quot;, # Optional. Determines how intents are detected from user queries.
  &quot;parent&quot;: &quot;A String&quot;, # Required. The project of this agent. Format: `projects/`.
  &quot;supportedLanguageCodes&quot;: [ # Optional. The list of all languages supported by this agent (except for the `default_language_code`).
    &quot;A String&quot;,
  ],
  &quot;tier&quot;: &quot;A String&quot;, # Optional. The agent tier. If not specified, TIER_STANDARD is assumed.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. The time zone of this agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.
}

  updateMask: string, Optional. The mask to control which fields get updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Dialogflow agent is a virtual agent that handles conversations with your end-users. It is a natural language understanding module that understands the nuances of human language. Dialogflow translates end-user text or audio during a conversation to structured data that your apps and services can understand. You design and build a Dialogflow agent to handle the types of conversations required for your system. For more information about agents, see the [Agent guide](https://cloud.google.com/dialogflow/docs/agents-overview).
  &quot;apiVersion&quot;: &quot;A String&quot;, # Optional. API version displayed in Dialogflow console. If not specified, V2 API is assumed. Clients are free to query different service endpoints for different API versions. However, bots connectors and webhook calls will follow the specified API version.
  &quot;avatarUri&quot;: &quot;A String&quot;, # Optional. The URI of the agent&#x27;s avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration.
  &quot;classificationThreshold&quot;: 3.14, # Optional. To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a fallback intent will be triggered or, if there are no fallback intents defined, no intent will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
  &quot;defaultLanguageCode&quot;: &quot;A String&quot;, # Required. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the `Update` method.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The description of this agent. The maximum length is 500 characters. If exceeded, the request is rejected.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The name of this agent.
  &quot;enableLogging&quot;: True or False, # Optional. Determines whether this agent should log conversation queries.
  &quot;matchMode&quot;: &quot;A String&quot;, # Optional. Determines how intents are detected from user queries.
  &quot;parent&quot;: &quot;A String&quot;, # Required. The project of this agent. Format: `projects/`.
  &quot;supportedLanguageCodes&quot;: [ # Optional. The list of all languages supported by this agent (except for the `default_language_code`).
    &quot;A String&quot;,
  ],
  &quot;tier&quot;: &quot;A String&quot;, # Optional. The agent tier. If not specified, TIER_STANDARD is assumed.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. The time zone of this agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.
}</pre>
</div>

</body></html>