// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.dialogflow.v2; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/cloud/dialogflow/v2/audio_config.proto"; import "google/cloud/dialogflow/v2/participant.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option cc_enable_arenas = true; option csharp_namespace = "Google.Cloud.Dialogflow.V2"; option go_package = "cloud.google.com/go/dialogflow/apiv2/dialogflowpb;dialogflowpb"; option java_multiple_files = true; option java_outer_classname = "ConversationProfileProto"; option java_package = "com.google.cloud.dialogflow.v2"; option objc_class_prefix = "DF"; option (google.api.resource_definition) = { type: "dialogflow.googleapis.com/CXSecuritySettings" pattern: "projects/{project}/locations/{location}/securitySettings/{security_settings}" }; // Service for managing // [ConversationProfiles][google.cloud.dialogflow.v2.ConversationProfile]. service ConversationProfiles { option (google.api.default_host) = "dialogflow.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform," "https://www.googleapis.com/auth/dialogflow"; // Returns the list of all conversation profiles in the specified project. rpc ListConversationProfiles(ListConversationProfilesRequest) returns (ListConversationProfilesResponse) { option (google.api.http) = { get: "/v2/{parent=projects/*}/conversationProfiles" additional_bindings { get: "/v2/{parent=projects/*/locations/*}/conversationProfiles" } }; option (google.api.method_signature) = "parent"; } // Retrieves the specified conversation profile. rpc GetConversationProfile(GetConversationProfileRequest) returns (ConversationProfile) { option (google.api.http) = { get: "/v2/{name=projects/*/conversationProfiles/*}" additional_bindings { get: "/v2/{name=projects/*/locations/*/conversationProfiles/*}" } }; option (google.api.method_signature) = "name"; } // 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][google.cloud.dialogflow.v2.ConversationProfiles.GetConversationProfile] // API. rpc CreateConversationProfile(CreateConversationProfileRequest) returns (ConversationProfile) { option (google.api.http) = { post: "/v2/{parent=projects/*}/conversationProfiles" body: "conversation_profile" additional_bindings { post: "/v2/{parent=projects/*/locations/*}/conversationProfiles" body: "conversation_profile" } }; option (google.api.method_signature) = "parent,conversation_profile"; } // Updates the specified conversation profile. // // [ConversationProfile.CreateTime][] and [ConversationProfile.UpdateTime][] // aren't populated in the response. You can retrieve them via // [GetConversationProfile][google.cloud.dialogflow.v2.ConversationProfiles.GetConversationProfile] // API. rpc UpdateConversationProfile(UpdateConversationProfileRequest) returns (ConversationProfile) { option (google.api.http) = { patch: "/v2/{conversation_profile.name=projects/*/conversationProfiles/*}" body: "conversation_profile" additional_bindings { patch: "/v2/{conversation_profile.name=projects/*/locations/*/conversationProfiles/*}" body: "conversation_profile" } }; option (google.api.method_signature) = "conversation_profile,update_mask"; } // Deletes the specified conversation profile. rpc DeleteConversationProfile(DeleteConversationProfileRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v2/{name=projects/*/conversationProfiles/*}" additional_bindings { delete: "/v2/{name=projects/*/locations/*/conversationProfiles/*}" } }; option (google.api.method_signature) = "name"; } // Adds or updates a suggestion feature in a conversation profile. // If the conversation profile contains the type of suggestion feature for // the participant role, it will update it. Otherwise it will insert the // suggestion feature. // // This method is a [long-running // operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). // The returned `Operation` type has the following method-specific fields: // // - `metadata`: // [SetSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.SetSuggestionFeatureConfigOperationMetadata] // - `response`: // [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] // // If a long running operation to add or update suggestion feature // config for the same conversation profile, participant role and suggestion // feature type exists, please cancel the existing long running operation // before sending such request, otherwise the request will be rejected. rpc SetSuggestionFeatureConfig(SetSuggestionFeatureConfigRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{conversation_profile=projects/*/conversationProfiles/*}:setSuggestionFeatureConfig" body: "*" additional_bindings { post: "/v2/{conversation_profile=projects/*/locations/*/conversationProfiles/*}:setSuggestionFeatureConfig" body: "*" } }; option (google.api.method_signature) = "conversation_profile"; option (google.api.method_signature) = "conversation_profile,participant_role,suggestion_feature_config"; option (google.longrunning.operation_info) = { response_type: "ConversationProfile" metadata_type: "SetSuggestionFeatureConfigOperationMetadata" }; } // Clears a suggestion feature from a conversation profile for the given // participant role. // // This method is a [long-running // operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). // The returned `Operation` type has the following method-specific fields: // // - `metadata`: // [ClearSuggestionFeatureConfigOperationMetadata][google.cloud.dialogflow.v2.ClearSuggestionFeatureConfigOperationMetadata] // - `response`: // [ConversationProfile][google.cloud.dialogflow.v2.ConversationProfile] rpc ClearSuggestionFeatureConfig(ClearSuggestionFeatureConfigRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{conversation_profile=projects/*/conversationProfiles/*}:clearSuggestionFeatureConfig" body: "*" additional_bindings { post: "/v2/{conversation_profile=projects/*/locations/*/conversationProfiles/*}:clearSuggestionFeatureConfig" body: "*" } }; option (google.api.method_signature) = "conversation_profile"; option (google.api.method_signature) = "conversation_profile,participant_role,suggestion_feature_type"; option (google.longrunning.operation_info) = { response_type: "ConversationProfile" metadata_type: "ClearSuggestionFeatureConfigOperationMetadata" }; } } // Defines the services to connect to incoming Dialogflow conversations. message ConversationProfile { option (google.api.resource) = { type: "dialogflow.googleapis.com/ConversationProfile" pattern: "projects/{project}/conversationProfiles/{conversation_profile}" pattern: "projects/{project}/locations/{location}/conversationProfiles/{conversation_profile}" }; // The unique identifier of this conversation profile. // Format: `projects//locations//conversationProfiles/`. string name = 1; // Required. Human readable name for this profile. Max length 1024 bytes. string display_name = 2 [(google.api.field_behavior) = REQUIRED]; // Output only. Create time of the conversation profile. google.protobuf.Timestamp create_time = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Update time of the conversation profile. google.protobuf.Timestamp update_time = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; // Configuration for an automated agent to use with this profile. AutomatedAgentConfig automated_agent_config = 3; // Configuration for agent assistance to use with this profile. HumanAgentAssistantConfig human_agent_assistant_config = 4; // Configuration for connecting to a live agent. // // Currently, this feature is not general available, please contact Google // to get access. HumanAgentHandoffConfig human_agent_handoff_config = 5; // Configuration for publishing conversation lifecycle events. NotificationConfig notification_config = 6; // Configuration for logging conversation lifecycle events. LoggingConfig logging_config = 7; // Configuration for publishing new message events. Event will be sent in // format of [ConversationEvent][google.cloud.dialogflow.v2.ConversationEvent] NotificationConfig new_message_event_notification_config = 8; // Settings for speech transcription. SpeechToTextConfig stt_config = 9; // 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: "en-US". string language_code = 10; // 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. string time_zone = 14; // Name of the CX SecuritySettings reference for the agent. // Format: `projects//locations//securitySettings/`. string security_settings = 13 [(google.api.resource_reference) = { type: "dialogflow.googleapis.com/CXSecuritySettings" }]; // Configuration for Text-to-Speech synthesization. // // Used by Phone Gateway to specify synthesization options. If agent defines // synthesization options as well, agent settings overrides the option here. SynthesizeSpeechConfig tts_config = 18; } // The request message for // [ConversationProfiles.ListConversationProfiles][google.cloud.dialogflow.v2.ConversationProfiles.ListConversationProfiles]. message ListConversationProfilesRequest { // Required. The project to list all conversation profiles from. // Format: `projects//locations/`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "dialogflow.googleapis.com/ConversationProfile" } ]; // The maximum number of items to return in a single page. By // default 100 and at most 1000. int32 page_size = 2; // The next_page_token value returned from a previous list request. string page_token = 3; } // The response message for // [ConversationProfiles.ListConversationProfiles][google.cloud.dialogflow.v2.ConversationProfiles.ListConversationProfiles]. message ListConversationProfilesResponse { // The list of project conversation profiles. There is a maximum number // of items returned based on the page_size field in the request. repeated ConversationProfile conversation_profiles = 1; // Token to retrieve the next page of results, or empty if there are no // more results in the list. string next_page_token = 2; } // The request message for // [ConversationProfiles.GetConversationProfile][google.cloud.dialogflow.v2.ConversationProfiles.GetConversationProfile]. message GetConversationProfileRequest { // Required. The resource name of the conversation profile. // Format: `projects//locations//conversationProfiles/`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "dialogflow.googleapis.com/ConversationProfile" } ]; } // The request message for // [ConversationProfiles.CreateConversationProfile][google.cloud.dialogflow.v2.ConversationProfiles.CreateConversationProfile]. message CreateConversationProfileRequest { // Required. The project to create a conversation profile for. // Format: `projects//locations/`. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "dialogflow.googleapis.com/ConversationProfile" } ]; // Required. The conversation profile to create. ConversationProfile conversation_profile = 2 [(google.api.field_behavior) = REQUIRED]; } // The request message for // [ConversationProfiles.UpdateConversationProfile][google.cloud.dialogflow.v2.ConversationProfiles.UpdateConversationProfile]. message UpdateConversationProfileRequest { // Required. The conversation profile to update. ConversationProfile conversation_profile = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The mask to control which fields to update. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // The request message for // [ConversationProfiles.DeleteConversationProfile][google.cloud.dialogflow.v2.ConversationProfiles.DeleteConversationProfile]. // // This operation fails if the conversation profile is still referenced from // a phone number. message DeleteConversationProfileRequest { // Required. The name of the conversation profile to delete. // Format: `projects//locations//conversationProfiles/`. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "dialogflow.googleapis.com/ConversationProfile" } ]; } // Defines the Automated Agent to connect to a conversation. message AutomatedAgentConfig { // 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. string agent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Agent" } ]; // Optional. Configure lifetime of the Dialogflow session. // By default, a Dialogflow CX session remains active and its data is stored // for 30 minutes after the last request is sent for the session. // This value should be no longer than 1 day. google.protobuf.Duration session_ttl = 3 [(google.api.field_behavior) = OPTIONAL]; } // Defines the Human Agent Assist to connect to a conversation. message HumanAgentAssistantConfig { // Settings of suggestion trigger. message SuggestionTriggerSettings { // Do not trigger if last utterance is small talk. bool no_smalltalk = 1; // Only trigger suggestion if participant role of last utterance is // END_USER. bool only_end_user = 2; } // Config for suggestion features. message SuggestionFeatureConfig { // The suggestion feature. SuggestionFeature suggestion_feature = 5; // Automatically iterates all participants and tries to compile // suggestions. // // Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST, // KNOWLEDGE_ASSIST. bool enable_event_based_suggestion = 3; // Optional. Disable the logging of search queries sent by human agents. It // can prevent those queries from being stored at answer records. // // Supported features: KNOWLEDGE_SEARCH. bool disable_agent_query_logging = 14 [(google.api.field_behavior) = OPTIONAL]; // Optional. Enable query suggestion even if we can't find its answer. // By default, queries are suggested only if we find its answer. // Supported features: KNOWLEDGE_ASSIST bool enable_query_suggestion_when_no_answer = 15 [(google.api.field_behavior) = OPTIONAL]; // Optional. Enable including conversation context during query answer // generation. Supported features: KNOWLEDGE_SEARCH. bool enable_conversation_augmented_query = 16 [(google.api.field_behavior) = OPTIONAL]; // Optional. Enable query suggestion only. // Supported features: KNOWLEDGE_ASSIST bool enable_query_suggestion_only = 17 [(google.api.field_behavior) = OPTIONAL]; // Settings of suggestion trigger. // // Currently, only ARTICLE_SUGGESTION and FAQ will use this field. SuggestionTriggerSettings suggestion_trigger_settings = 10; // Configs of query. SuggestionQueryConfig query_config = 6; // Configs of custom conversation model. ConversationModelConfig conversation_model_config = 7; // Configs for processing conversation. ConversationProcessConfig conversation_process_config = 8; } // Detail human agent assistant config. message SuggestionConfig { // Configuration of different suggestion features. One feature can have only // one config. repeated SuggestionFeatureConfig feature_configs = 2; // 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. bool group_suggestion_responses = 3; // Optional. List of various generator resource names used in the // conversation profile. repeated string generators = 4 [ (google.api.field_behavior) = OPTIONAL, (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Generator" } ]; // Optional. When disable_high_latency_features_sync_delivery is true and // using the AnalyzeContent API, we will not deliver the responses from high // latency features in the API response. The // human_agent_assistant_config.notification_config must be configured and // enable_event_based_suggestion must be set to true to receive the // responses from high latency features in Pub/Sub. High latency feature(s): // KNOWLEDGE_ASSIST bool disable_high_latency_features_sync_delivery = 5 [(google.api.field_behavior) = OPTIONAL]; } // Config for suggestion query. message SuggestionQueryConfig { // Knowledge base source settings. // // Supported features: ARTICLE_SUGGESTION, FAQ. message KnowledgeBaseQuerySource { // Required. Knowledge bases to query. Format: // `projects//locations//knowledgeBases/`. Currently, at most 5 knowledge // bases are supported. repeated string knowledge_bases = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "dialogflow.googleapis.com/KnowledgeBase" } ]; } // Document source settings. // // Supported features: SMART_REPLY, SMART_COMPOSE. message DocumentQuerySource { // Required. Knowledge documents to query from. Format: // `projects//locations//knowledgeBases//documents/`. // Currently, at most 5 documents are supported. repeated string documents = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Document" } ]; } // Dialogflow source setting. // // Supported feature: DIALOGFLOW_ASSIST. message DialogflowQuerySource { // The configuration used for human agent side Dialogflow assist // suggestion. message HumanAgentSideConfig { // Optional. The name of a dialogflow virtual agent used for intent // detection and suggestion triggered by human agent. // Format: `projects//locations//agent`. string agent = 1 [ (google.api.field_behavior) = OPTIONAL, (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Agent" } ]; } // 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. string agent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Agent" } ]; // Optional. The Dialogflow assist configuration for human agent. HumanAgentSideConfig human_agent_side_config = 3 [(google.api.field_behavior) = OPTIONAL]; } // Settings that determine how to filter recent conversation context when // generating suggestions. message ContextFilterSettings { // 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. bool drop_handoff_messages = 1; // If set to true, all messages from virtual agent are dropped. bool drop_virtual_agent_messages = 2; // If set to true, all messages from ivr stage are dropped. bool drop_ivr_messages = 3; } // Custom sections to return when requesting a summary of a conversation. // This is only supported when `baseline_model_version` == '2.0'. // // Supported features: CONVERSATION_SUMMARIZATION, // CONVERSATION_SUMMARIZATION_VOICE. message Sections { // Selectable sections to return when requesting a summary of a // conversation. enum SectionType { // Undefined section type, does not return anything. SECTION_TYPE_UNSPECIFIED = 0; // What the customer needs help with or has question about. // Section name: "situation". SITUATION = 1; // What the agent does to help the customer. // Section name: "action". ACTION = 2; // Result of the customer service. A single word describing the result // of the conversation. // Section name: "resolution". RESOLUTION = 3; // Reason for cancellation if the customer requests for a cancellation. // "N/A" otherwise. // Section name: "reason_for_cancellation". REASON_FOR_CANCELLATION = 4; // "Unsatisfied" or "Satisfied" depending on the customer's feelings at // the end of the conversation. // Section name: "customer_satisfaction". CUSTOMER_SATISFACTION = 5; // Key entities extracted from the conversation, such as ticket number, // order number, dollar amount, etc. // Section names are prefixed by "entities/". ENTITIES = 6; } // The selected sections chosen to return when requesting a summary of a // conversation. A duplicate selected section will be treated as a single // selected section. If section types are not provided, the default will // be {SITUATION, ACTION, RESULT}. repeated SectionType section_types = 1; } // Source of query. oneof query_source { // Query from knowledgebase. It is used by: // ARTICLE_SUGGESTION, FAQ. KnowledgeBaseQuerySource knowledge_base_query_source = 1; // Query from knowledge base document. It is used by: // SMART_REPLY, SMART_COMPOSE. DocumentQuerySource document_query_source = 2; // Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST. DialogflowQuerySource dialogflow_query_source = 3; } // Maximum number of results to return. Currently, if unset, defaults to 10. // And the max number is 20. int32 max_results = 4; // 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, // KNOWLEDGE_SEARCH, KNOWLEDGE_ASSIST, ENTITY_EXTRACTION. float confidence_threshold = 5; // Determines how recent conversation context is filtered when generating // suggestions. If unspecified, no messages will be dropped. ContextFilterSettings context_filter_settings = 7; // Optional. The customized sections chosen to return when requesting a // summary of a conversation. Sections sections = 8 [(google.api.field_behavior) = OPTIONAL]; } // Custom conversation models used in agent assist feature. // // Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY, // CONVERSATION_SUMMARIZATION. message ConversationModelConfig { // Conversation model resource name. Format: `projects//conversationModels/`. string model = 1 [(google.api.resource_reference) = { type: "dialogflow.googleapis.com/ConversationModel" }]; // Version of current baseline model. It will be ignored if // [model][google.cloud.dialogflow.v2.HumanAgentAssistantConfig.ConversationModelConfig.model] // is set. Valid versions are: // Article Suggestion baseline model: // - 0.9 // - 1.0 (default) // Summarization baseline model: // - 1.0 string baseline_model_version = 8; } // Config to process conversation. message ConversationProcessConfig { // Number of recent non-small-talk sentences to use as context for article // and FAQ suggestion int32 recent_sentences_count = 2; } // Configuration for analyses to run on each conversation message. message MessageAnalysisConfig { // 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. bool enable_entity_extraction = 2; // 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's attitude as positive, negative, or neutral: // https://cloud.google.com/natural-language/docs/basics#sentiment_analysis // For // [Participants.StreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.StreamingAnalyzeContent] // method, result will be in // [StreamingAnalyzeContentResponse.message.SentimentAnalysisResult][google.cloud.dialogflow.v2.StreamingAnalyzeContentResponse.message]. // For // [Participants.AnalyzeContent][google.cloud.dialogflow.v2.Participants.AnalyzeContent] // method, result will be in // [AnalyzeContentResponse.message.SentimentAnalysisResult][google.cloud.dialogflow.v2.AnalyzeContentResponse.message] // For // [Conversations.ListMessages][google.cloud.dialogflow.v2.Conversations.ListMessages] // method, result will be in // [ListMessagesResponse.messages.SentimentAnalysisResult][google.cloud.dialogflow.v2.ListMessagesResponse.messages] // If Pub/Sub notification is configured, result will be in // [ConversationEvent.new_message_payload.SentimentAnalysisResult][google.cloud.dialogflow.v2.ConversationEvent.new_message_payload]. bool enable_sentiment_analysis = 3; } // Pub/Sub topic on which to publish new agent assistant events. NotificationConfig notification_config = 2; // Configuration for agent assistance of human agent participant. SuggestionConfig human_agent_suggestion_config = 3; // Configuration for agent assistance of end user participant. // // Currently, this feature is not general available, please contact Google // to get access. SuggestionConfig end_user_suggestion_config = 4; // Configuration for message analysis. MessageAnalysisConfig message_analysis_config = 5; } // 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. message HumanAgentHandoffConfig { // Configuration specific to [LivePerson](https://www.liveperson.com). message LivePersonConfig { // Required. Account number of the LivePerson account to connect. This is // the account number you input at the login page. string account_number = 1 [(google.api.field_behavior) = REQUIRED]; } // Configuration specific to Salesforce Live Agent. message SalesforceLiveAgentConfig { // Required. The organization ID of the Salesforce account. string organization_id = 1 [(google.api.field_behavior) = REQUIRED]; // Required. Live Agent deployment ID. string deployment_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. Live Agent chat button ID. string button_id = 3 [(google.api.field_behavior) = REQUIRED]; // 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. string endpoint_domain = 4 [(google.api.field_behavior) = REQUIRED]; } // Required. Specifies which agent service to connect for human agent handoff. oneof agent_service { // Uses [LivePerson](https://www.liveperson.com). LivePersonConfig live_person_config = 1; // Uses Salesforce Live Agent. SalesforceLiveAgentConfig salesforce_live_agent_config = 2; } } // Defines notification behavior. message NotificationConfig { // Format of cloud pub/sub message. enum MessageFormat { // If it is unspecified, PROTO will be used. MESSAGE_FORMAT_UNSPECIFIED = 0; // Pub/Sub message will be serialized proto. PROTO = 1; // Pub/Sub message will be json. JSON = 2; } // Name of the Pub/Sub topic to publish conversation // events like // [CONVERSATION_STARTED][google.cloud.dialogflow.v2.ConversationEvent.Type.CONVERSATION_STARTED] // as serialized // [ConversationEvent][google.cloud.dialogflow.v2.ConversationEvent] protos. // // For telephony integration to receive notification, make sure either this // topic 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. // // For chat integration to receive notification, make sure API caller has been // granted the `Dialogflow Service Agent` role for the topic. // // Format: `projects//locations//topics/`. string topic = 1; // Format of message. MessageFormat message_format = 2; } // Defines logging behavior for conversation lifecycle events. message LoggingConfig { // Whether to log conversation events like // [CONVERSATION_STARTED][google.cloud.dialogflow.v2.ConversationEvent.Type.CONVERSATION_STARTED] // to Stackdriver in the conversation project as JSON format // [ConversationEvent][google.cloud.dialogflow.v2.ConversationEvent] protos. bool enable_stackdriver_logging = 3; } // 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. message SuggestionFeature { // Defines the type of Human Agent Assistant feature. enum Type { // Unspecified feature type. TYPE_UNSPECIFIED = 0; // Run article suggestion model for chat. ARTICLE_SUGGESTION = 1; // Run FAQ model for chat. FAQ = 2; // Run smart reply model for chat. SMART_REPLY = 3; // Run knowledge search with text input from agent or text generated query. KNOWLEDGE_SEARCH = 14; // Run knowledge assist with automatic query generation. KNOWLEDGE_ASSIST = 15; } // Type of Human Agent Assistant API feature to request. Type type = 1; } // The request message for // [ConversationProfiles.SetSuggestionFeature][]. message SetSuggestionFeatureConfigRequest { // Required. The Conversation Profile to add or update the suggestion feature // config. Format: `projects//locations//conversationProfiles/`. string conversation_profile = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The participant role to add or update the suggestion feature // config. Only HUMAN_AGENT or END_USER can be used. Participant.Role participant_role = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The suggestion feature config to add or update. HumanAgentAssistantConfig.SuggestionFeatureConfig suggestion_feature_config = 3 [(google.api.field_behavior) = REQUIRED]; } // The request message for [ConversationProfiles.ClearFeature][]. message ClearSuggestionFeatureConfigRequest { // Required. The Conversation Profile to add or update the suggestion feature // config. Format: `projects//locations//conversationProfiles/`. string conversation_profile = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The participant role to remove the suggestion feature // config. Only HUMAN_AGENT or END_USER can be used. Participant.Role participant_role = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The type of the suggestion feature to remove. SuggestionFeature.Type suggestion_feature_type = 3 [(google.api.field_behavior) = REQUIRED]; } // Metadata for a [ConversationProfile.SetSuggestionFeatureConfig][] // operation. message SetSuggestionFeatureConfigOperationMetadata { // The resource name of the conversation profile. Format: // `projects//locations//conversationProfiles/` string conversation_profile = 1; // Required. The participant role to add or update the suggestion feature // config. Only HUMAN_AGENT or END_USER can be used. Participant.Role participant_role = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The type of the suggestion feature to add or update. SuggestionFeature.Type suggestion_feature_type = 3 [(google.api.field_behavior) = REQUIRED]; // Timestamp whe the request was created. The time is measured on server side. google.protobuf.Timestamp create_time = 4; } // Metadata for a [ConversationProfile.ClearSuggestionFeatureConfig][] // operation. message ClearSuggestionFeatureConfigOperationMetadata { // The resource name of the conversation profile. Format: // `projects//locations//conversationProfiles/` string conversation_profile = 1; // Required. The participant role to remove the suggestion feature // config. Only HUMAN_AGENT or END_USER can be used. Participant.Role participant_role = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The type of the suggestion feature to remove. SuggestionFeature.Type suggestion_feature_type = 3 [(google.api.field_behavior) = REQUIRED]; // Timestamp whe the request was created. The time is measured on server side. google.protobuf.Timestamp create_time = 4; }