<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> . <a href="dialogflow_v2.projects.conversationProfiles.html">conversationProfiles</a></h1>
<h2>Instance Methods</h2>
<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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a conversation profile in the specified project. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren't populated in the response. You can retrieve them via GetConversationProfile API.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified conversation profile.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specified conversation profile.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the list of all conversation profiles in the specified project.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified conversation profile. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren't populated in the response. You can retrieve them via GetConversationProfile API.</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="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a conversation profile in the specified project. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren&#x27;t populated in the response. You can retrieve them via GetConversationProfile API.

Args:
  parent: string, Required. The project to create a conversation profile for. Format: `projects//locations/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Defines the services to connect to incoming Dialogflow conversations.
  &quot;automatedAgentConfig&quot;: { # Defines the Automated Agent to connect to a conversation. # Configuration for an automated agent to use with this profile.
    &quot;agent&quot;: &quot;A String&quot;, # Required. ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2#google.cloud.dialogflow.v2.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Create time of the conversation profile.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human readable name for this profile. Max length 1024 bytes.
  &quot;humanAgentAssistantConfig&quot;: { # Defines the Human Agent Assist to connect to a conversation. # Configuration for agent assistance to use with this profile.
    &quot;endUserSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;humanAgentSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of human agent participant.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;messageAnalysisConfig&quot;: { # Configuration for analyses to run on each conversation message. # Configuration for message analysis.
      &quot;enableEntityExtraction&quot;: True or False, # Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access.
      &quot;enableSentimentAnalysis&quot;: True or False, # Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;s attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult.
    },
    &quot;notificationConfig&quot;: { # Defines notification behavior. # Pub/Sub topic on which to publish new agent assistant events.
      &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
      &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
    },
  },
  &quot;humanAgentHandoffConfig&quot;: { # Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access. # Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access.
    &quot;livePersonConfig&quot;: { # Configuration specific to LivePerson (https://www.liveperson.com). # Uses LivePerson (https://www.liveperson.com).
      &quot;accountNumber&quot;: &quot;A String&quot;, # Required. Account number of the LivePerson account to connect. This is the account number you input at the login page.
    },
    &quot;salesforceLiveAgentConfig&quot;: { # Configuration specific to Salesforce Live Agent. # Uses Salesforce Live Agent.
      &quot;buttonId&quot;: &quot;A String&quot;, # Required. Live Agent chat button ID.
      &quot;deploymentId&quot;: &quot;A String&quot;, # Required. Live Agent deployment ID.
      &quot;endpointDomain&quot;: &quot;A String&quot;, # Required. Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com.
      &quot;organizationId&quot;: &quot;A String&quot;, # Required. The organization ID of the Salesforce account.
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: &quot;en-US&quot;.
  &quot;loggingConfig&quot;: { # Defines logging behavior for conversation lifecycle events. # Configuration for logging conversation lifecycle events.
    &quot;enableStackdriverLogging&quot;: True or False, # Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos.
  },
  &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.
  &quot;newMessageEventNotificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing new message events. Event will be sent in format of ConversationEvent
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;notificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing conversation lifecycle events.
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;securitySettings&quot;: &quot;A String&quot;, # Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.
  &quot;sttConfig&quot;: { # Configures speech transcription for ConversationProfile. # Settings for speech transcription.
    &quot;speechModelVariant&quot;: &quot;A String&quot;, # The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.
  },
  &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Update time of the conversation profile.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Defines the services to connect to incoming Dialogflow conversations.
  &quot;automatedAgentConfig&quot;: { # Defines the Automated Agent to connect to a conversation. # Configuration for an automated agent to use with this profile.
    &quot;agent&quot;: &quot;A String&quot;, # Required. ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2#google.cloud.dialogflow.v2.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Create time of the conversation profile.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human readable name for this profile. Max length 1024 bytes.
  &quot;humanAgentAssistantConfig&quot;: { # Defines the Human Agent Assist to connect to a conversation. # Configuration for agent assistance to use with this profile.
    &quot;endUserSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;humanAgentSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of human agent participant.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;messageAnalysisConfig&quot;: { # Configuration for analyses to run on each conversation message. # Configuration for message analysis.
      &quot;enableEntityExtraction&quot;: True or False, # Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access.
      &quot;enableSentimentAnalysis&quot;: True or False, # Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;s attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult.
    },
    &quot;notificationConfig&quot;: { # Defines notification behavior. # Pub/Sub topic on which to publish new agent assistant events.
      &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
      &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
    },
  },
  &quot;humanAgentHandoffConfig&quot;: { # Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access. # Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access.
    &quot;livePersonConfig&quot;: { # Configuration specific to LivePerson (https://www.liveperson.com). # Uses LivePerson (https://www.liveperson.com).
      &quot;accountNumber&quot;: &quot;A String&quot;, # Required. Account number of the LivePerson account to connect. This is the account number you input at the login page.
    },
    &quot;salesforceLiveAgentConfig&quot;: { # Configuration specific to Salesforce Live Agent. # Uses Salesforce Live Agent.
      &quot;buttonId&quot;: &quot;A String&quot;, # Required. Live Agent chat button ID.
      &quot;deploymentId&quot;: &quot;A String&quot;, # Required. Live Agent deployment ID.
      &quot;endpointDomain&quot;: &quot;A String&quot;, # Required. Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com.
      &quot;organizationId&quot;: &quot;A String&quot;, # Required. The organization ID of the Salesforce account.
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: &quot;en-US&quot;.
  &quot;loggingConfig&quot;: { # Defines logging behavior for conversation lifecycle events. # Configuration for logging conversation lifecycle events.
    &quot;enableStackdriverLogging&quot;: True or False, # Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos.
  },
  &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.
  &quot;newMessageEventNotificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing new message events. Event will be sent in format of ConversationEvent
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;notificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing conversation lifecycle events.
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;securitySettings&quot;: &quot;A String&quot;, # Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.
  &quot;sttConfig&quot;: { # Configures speech transcription for ConversationProfile. # Settings for speech transcription.
    &quot;speechModelVariant&quot;: &quot;A String&quot;, # The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.
  },
  &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Update time of the conversation profile.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the specified conversation profile.

Args:
  name: string, Required. The name of the conversation profile to delete. Format: `projects//locations//conversationProfiles/`. (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="get">get(name, x__xgafv=None)</code>
  <pre>Retrieves the specified conversation profile.

Args:
  name: string, Required. The resource name of the conversation profile. Format: `projects//locations//conversationProfiles/`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Defines the services to connect to incoming Dialogflow conversations.
  &quot;automatedAgentConfig&quot;: { # Defines the Automated Agent to connect to a conversation. # Configuration for an automated agent to use with this profile.
    &quot;agent&quot;: &quot;A String&quot;, # Required. ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2#google.cloud.dialogflow.v2.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Create time of the conversation profile.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human readable name for this profile. Max length 1024 bytes.
  &quot;humanAgentAssistantConfig&quot;: { # Defines the Human Agent Assist to connect to a conversation. # Configuration for agent assistance to use with this profile.
    &quot;endUserSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;humanAgentSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of human agent participant.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;messageAnalysisConfig&quot;: { # Configuration for analyses to run on each conversation message. # Configuration for message analysis.
      &quot;enableEntityExtraction&quot;: True or False, # Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access.
      &quot;enableSentimentAnalysis&quot;: True or False, # Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;s attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult.
    },
    &quot;notificationConfig&quot;: { # Defines notification behavior. # Pub/Sub topic on which to publish new agent assistant events.
      &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
      &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
    },
  },
  &quot;humanAgentHandoffConfig&quot;: { # Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access. # Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access.
    &quot;livePersonConfig&quot;: { # Configuration specific to LivePerson (https://www.liveperson.com). # Uses LivePerson (https://www.liveperson.com).
      &quot;accountNumber&quot;: &quot;A String&quot;, # Required. Account number of the LivePerson account to connect. This is the account number you input at the login page.
    },
    &quot;salesforceLiveAgentConfig&quot;: { # Configuration specific to Salesforce Live Agent. # Uses Salesforce Live Agent.
      &quot;buttonId&quot;: &quot;A String&quot;, # Required. Live Agent chat button ID.
      &quot;deploymentId&quot;: &quot;A String&quot;, # Required. Live Agent deployment ID.
      &quot;endpointDomain&quot;: &quot;A String&quot;, # Required. Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com.
      &quot;organizationId&quot;: &quot;A String&quot;, # Required. The organization ID of the Salesforce account.
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: &quot;en-US&quot;.
  &quot;loggingConfig&quot;: { # Defines logging behavior for conversation lifecycle events. # Configuration for logging conversation lifecycle events.
    &quot;enableStackdriverLogging&quot;: True or False, # Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos.
  },
  &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.
  &quot;newMessageEventNotificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing new message events. Event will be sent in format of ConversationEvent
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;notificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing conversation lifecycle events.
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;securitySettings&quot;: &quot;A String&quot;, # Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.
  &quot;sttConfig&quot;: { # Configures speech transcription for ConversationProfile. # Settings for speech transcription.
    &quot;speechModelVariant&quot;: &quot;A String&quot;, # The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.
  },
  &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Update time of the conversation profile.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns the list of all conversation profiles in the specified project.

Args:
  parent: string, Required. The project to list all conversation profiles from. Format: `projects//locations/`. (required)
  pageSize: integer, The maximum number of items to return in a single page. By default 100 and at most 1000.
  pageToken: string, The next_page_token value returned from a previous list request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for ConversationProfiles.ListConversationProfiles.
  &quot;conversationProfiles&quot;: [ # The list of project conversation profiles. There is a maximum number of items returned based on the page_size field in the request.
    { # Defines the services to connect to incoming Dialogflow conversations.
      &quot;automatedAgentConfig&quot;: { # Defines the Automated Agent to connect to a conversation. # Configuration for an automated agent to use with this profile.
        &quot;agent&quot;: &quot;A String&quot;, # Required. ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2#google.cloud.dialogflow.v2.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Create time of the conversation profile.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Human readable name for this profile. Max length 1024 bytes.
      &quot;humanAgentAssistantConfig&quot;: { # Defines the Human Agent Assist to connect to a conversation. # Configuration for agent assistance to use with this profile.
        &quot;endUserSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access.
          &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
            { # Config for suggestion features.
              &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
                &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
              },
              &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
              &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
                &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
                &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
                  &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
                  &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
                  &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
                },
                &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
                  &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
                },
                &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
                  &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                    &quot;A String&quot;,
                  ],
                },
                &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
                  &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                    &quot;A String&quot;,
                  ],
                },
                &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
              },
              &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
                &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
              },
              &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
                &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
                &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
              },
            },
          ],
          &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
        },
        &quot;humanAgentSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of human agent participant.
          &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
            { # Config for suggestion features.
              &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
                &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
              },
              &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
              &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
                &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
                &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
                  &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
                  &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
                  &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
                },
                &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
                  &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
                },
                &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
                  &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                    &quot;A String&quot;,
                  ],
                },
                &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
                  &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                    &quot;A String&quot;,
                  ],
                },
                &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
              },
              &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
                &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
              },
              &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
                &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
                &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
              },
            },
          ],
          &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
        },
        &quot;messageAnalysisConfig&quot;: { # Configuration for analyses to run on each conversation message. # Configuration for message analysis.
          &quot;enableEntityExtraction&quot;: True or False, # Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access.
          &quot;enableSentimentAnalysis&quot;: True or False, # Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;s attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult.
        },
        &quot;notificationConfig&quot;: { # Defines notification behavior. # Pub/Sub topic on which to publish new agent assistant events.
          &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
          &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
        },
      },
      &quot;humanAgentHandoffConfig&quot;: { # Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access. # Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access.
        &quot;livePersonConfig&quot;: { # Configuration specific to LivePerson (https://www.liveperson.com). # Uses LivePerson (https://www.liveperson.com).
          &quot;accountNumber&quot;: &quot;A String&quot;, # Required. Account number of the LivePerson account to connect. This is the account number you input at the login page.
        },
        &quot;salesforceLiveAgentConfig&quot;: { # Configuration specific to Salesforce Live Agent. # Uses Salesforce Live Agent.
          &quot;buttonId&quot;: &quot;A String&quot;, # Required. Live Agent chat button ID.
          &quot;deploymentId&quot;: &quot;A String&quot;, # Required. Live Agent deployment ID.
          &quot;endpointDomain&quot;: &quot;A String&quot;, # Required. Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com.
          &quot;organizationId&quot;: &quot;A String&quot;, # Required. The organization ID of the Salesforce account.
        },
      },
      &quot;languageCode&quot;: &quot;A String&quot;, # Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: &quot;en-US&quot;.
      &quot;loggingConfig&quot;: { # Defines logging behavior for conversation lifecycle events. # Configuration for logging conversation lifecycle events.
        &quot;enableStackdriverLogging&quot;: True or False, # Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos.
      },
      &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.
      &quot;newMessageEventNotificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing new message events. Event will be sent in format of ConversationEvent
        &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
        &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
      },
      &quot;notificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing conversation lifecycle events.
        &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
        &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
      },
      &quot;securitySettings&quot;: &quot;A String&quot;, # Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.
      &quot;sttConfig&quot;: { # Configures speech transcription for ConversationProfile. # Settings for speech transcription.
        &quot;speechModelVariant&quot;: &quot;A String&quot;, # The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.
      },
      &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Update time of the conversation profile.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified conversation profile. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren&#x27;t populated in the response. You can retrieve them via GetConversationProfile API.

Args:
  name: string, The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Defines the services to connect to incoming Dialogflow conversations.
  &quot;automatedAgentConfig&quot;: { # Defines the Automated Agent to connect to a conversation. # Configuration for an automated agent to use with this profile.
    &quot;agent&quot;: &quot;A String&quot;, # Required. ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2#google.cloud.dialogflow.v2.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Create time of the conversation profile.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human readable name for this profile. Max length 1024 bytes.
  &quot;humanAgentAssistantConfig&quot;: { # Defines the Human Agent Assist to connect to a conversation. # Configuration for agent assistance to use with this profile.
    &quot;endUserSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;humanAgentSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of human agent participant.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;messageAnalysisConfig&quot;: { # Configuration for analyses to run on each conversation message. # Configuration for message analysis.
      &quot;enableEntityExtraction&quot;: True or False, # Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access.
      &quot;enableSentimentAnalysis&quot;: True or False, # Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;s attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult.
    },
    &quot;notificationConfig&quot;: { # Defines notification behavior. # Pub/Sub topic on which to publish new agent assistant events.
      &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
      &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
    },
  },
  &quot;humanAgentHandoffConfig&quot;: { # Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access. # Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access.
    &quot;livePersonConfig&quot;: { # Configuration specific to LivePerson (https://www.liveperson.com). # Uses LivePerson (https://www.liveperson.com).
      &quot;accountNumber&quot;: &quot;A String&quot;, # Required. Account number of the LivePerson account to connect. This is the account number you input at the login page.
    },
    &quot;salesforceLiveAgentConfig&quot;: { # Configuration specific to Salesforce Live Agent. # Uses Salesforce Live Agent.
      &quot;buttonId&quot;: &quot;A String&quot;, # Required. Live Agent chat button ID.
      &quot;deploymentId&quot;: &quot;A String&quot;, # Required. Live Agent deployment ID.
      &quot;endpointDomain&quot;: &quot;A String&quot;, # Required. Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com.
      &quot;organizationId&quot;: &quot;A String&quot;, # Required. The organization ID of the Salesforce account.
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: &quot;en-US&quot;.
  &quot;loggingConfig&quot;: { # Defines logging behavior for conversation lifecycle events. # Configuration for logging conversation lifecycle events.
    &quot;enableStackdriverLogging&quot;: True or False, # Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos.
  },
  &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.
  &quot;newMessageEventNotificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing new message events. Event will be sent in format of ConversationEvent
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;notificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing conversation lifecycle events.
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;securitySettings&quot;: &quot;A String&quot;, # Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.
  &quot;sttConfig&quot;: { # Configures speech transcription for ConversationProfile. # Settings for speech transcription.
    &quot;speechModelVariant&quot;: &quot;A String&quot;, # The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.
  },
  &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Update time of the conversation profile.
}

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

Returns:
  An object of the form:

    { # Defines the services to connect to incoming Dialogflow conversations.
  &quot;automatedAgentConfig&quot;: { # Defines the Automated Agent to connect to a conversation. # Configuration for an automated agent to use with this profile.
    &quot;agent&quot;: &quot;A String&quot;, # Required. ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2#google.cloud.dialogflow.v2.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Create time of the conversation profile.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human readable name for this profile. Max length 1024 bytes.
  &quot;humanAgentAssistantConfig&quot;: { # Defines the Human Agent Assist to connect to a conversation. # Configuration for agent assistance to use with this profile.
    &quot;endUserSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;humanAgentSuggestionConfig&quot;: { # Detail human agent assistant config. # Configuration for agent assistance of human agent participant.
      &quot;featureConfigs&quot;: [ # Configuration of different suggestion features. One feature can have only one config.
        { # Config for suggestion features.
          &quot;conversationModelConfig&quot;: { # Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY. # Configs of custom conversation model.
            &quot;model&quot;: &quot;A String&quot;, # Conversation model resource name. Format: `projects//conversationModels/`.
          },
          &quot;enableEventBasedSuggestion&quot;: True or False, # Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST.
          &quot;queryConfig&quot;: { # Config for suggestion query. # Configs of query.
            &quot;confidenceThreshold&quot;: 3.14, # Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it defaults to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE.
            &quot;contextFilterSettings&quot;: { # Settings that determine how to filter recent conversation context when generating suggestions. # Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped.
              &quot;dropHandoffMessages&quot;: True or False, # If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.
              &quot;dropIvrMessages&quot;: True or False, # If set to true, all messages from ivr stage are dropped.
              &quot;dropVirtualAgentMessages&quot;: True or False, # If set to true, all messages from virtual agent are dropped.
            },
            &quot;dialogflowQuerySource&quot;: { # Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST. # Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST.
              &quot;agent&quot;: &quot;A String&quot;, # Required. The name of a Dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.
            },
            &quot;documentQuerySource&quot;: { # Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE. # Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE.
              &quot;documents&quot;: [ # Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, at most 5 documents are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;knowledgeBaseQuerySource&quot;: { # Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ. # Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ.
              &quot;knowledgeBases&quot;: [ # Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge bases are supported.
                &quot;A String&quot;,
              ],
            },
            &quot;maxResults&quot;: 42, # Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.
          },
          &quot;suggestionFeature&quot;: { # The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list. # The suggestion feature.
            &quot;type&quot;: &quot;A String&quot;, # Type of Human Agent Assistant API feature to request.
          },
          &quot;suggestionTriggerSettings&quot;: { # Settings of suggestion trigger. # Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION and FAQ will use this field.
            &quot;noSmalltalk&quot;: True or False, # Do not trigger if last utterance is small talk.
            &quot;onlyEndUser&quot;: True or False, # Only trigger suggestion if participant role of last utterance is END_USER.
          },
        },
      ],
      &quot;groupSuggestionResponses&quot;: True or False, # If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.
    },
    &quot;messageAnalysisConfig&quot;: { # Configuration for analyses to run on each conversation message. # Configuration for message analysis.
      &quot;enableEntityExtraction&quot;: True or False, # Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access.
      &quot;enableSentimentAnalysis&quot;: True or False, # Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user&#x27;s attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult.
    },
    &quot;notificationConfig&quot;: { # Defines notification behavior. # Pub/Sub topic on which to publish new agent assistant events.
      &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
      &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
    },
  },
  &quot;humanAgentHandoffConfig&quot;: { # Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access. # Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access.
    &quot;livePersonConfig&quot;: { # Configuration specific to LivePerson (https://www.liveperson.com). # Uses LivePerson (https://www.liveperson.com).
      &quot;accountNumber&quot;: &quot;A String&quot;, # Required. Account number of the LivePerson account to connect. This is the account number you input at the login page.
    },
    &quot;salesforceLiveAgentConfig&quot;: { # Configuration specific to Salesforce Live Agent. # Uses Salesforce Live Agent.
      &quot;buttonId&quot;: &quot;A String&quot;, # Required. Live Agent chat button ID.
      &quot;deploymentId&quot;: &quot;A String&quot;, # Required. Live Agent deployment ID.
      &quot;endpointDomain&quot;: &quot;A String&quot;, # Required. Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com.
      &quot;organizationId&quot;: &quot;A String&quot;, # Required. The organization ID of the Salesforce account.
    },
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-US languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: &quot;en-US&quot;.
  &quot;loggingConfig&quot;: { # Defines logging behavior for conversation lifecycle events. # Configuration for logging conversation lifecycle events.
    &quot;enableStackdriverLogging&quot;: True or False, # Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos.
  },
  &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.
  &quot;newMessageEventNotificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing new message events. Event will be sent in format of ConversationEvent
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;notificationConfig&quot;: { # Defines notification behavior. # Configuration for publishing conversation lifecycle events.
    &quot;messageFormat&quot;: &quot;A String&quot;, # Format of message.
    &quot;topic&quot;: &quot;A String&quot;, # Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. Notification works for phone calls, if this topic either is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. Format: `projects//locations//topics/`.
  },
  &quot;securitySettings&quot;: &quot;A String&quot;, # Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.
  &quot;sttConfig&quot;: { # Configures speech transcription for ConversationProfile. # Settings for speech transcription.
    &quot;speechModelVariant&quot;: &quot;A String&quot;, # The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.
  },
  &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Update time of the conversation profile.
}</pre>
</div>

</body></html>