diff options
Diffstat (limited to 'third_party/googleapis/google/cloud/contactcenterinsights/v1/resources.proto')
| -rw-r--r-- | third_party/googleapis/google/cloud/contactcenterinsights/v1/resources.proto | 1116 | 
1 files changed, 1116 insertions, 0 deletions
diff --git a/third_party/googleapis/google/cloud/contactcenterinsights/v1/resources.proto b/third_party/googleapis/google/cloud/contactcenterinsights/v1/resources.proto new file mode 100644 index 0000000..bac8515 --- /dev/null +++ b/third_party/googleapis/google/cloud/contactcenterinsights/v1/resources.proto @@ -0,0 +1,1116 @@ +// Copyright 2022 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.contactcenterinsights.v1; + +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; + +option csharp_namespace = "Google.Cloud.ContactCenterInsights.V1"; +option go_package = "google.golang.org/genproto/googleapis/cloud/contactcenterinsights/v1;contactcenterinsights"; +option java_multiple_files = true; +option java_outer_classname = "ResourcesProto"; +option java_package = "com.google.cloud.contactcenterinsights.v1"; +option php_namespace = "Google\\Cloud\\ContactCenterInsights\\V1"; +option ruby_package = "Google::Cloud::ContactCenterInsights::V1"; +option (google.api.resource_definition) = { +  type: "dialogflow.googleapis.com/Participant" +  pattern: "projects/{project}/conversations/{conversation}/participants/{participant}" +  pattern: "projects/{project}/locations/{location}/conversations/{conversation}/participants/{participant}" +}; + +// The conversation resource. +message Conversation { +  option (google.api.resource) = { +    type: "contactcenterinsights.googleapis.com/Conversation" +    pattern: "projects/{project}/locations/{location}/conversations/{conversation}" +  }; + +  // Call-specific metadata. +  message CallMetadata { +    // The audio channel that contains the customer. +    int32 customer_channel = 1; + +    // The audio channel that contains the agent. +    int32 agent_channel = 2; +  } + +  // A message representing the transcript of a conversation. +  message Transcript { +    // A segment of a full transcript. +    message TranscriptSegment { +      // Word-level info for words in a transcript. +      message WordInfo { +        // Time offset of the start of this word relative to the beginning of +        // the total conversation. +        google.protobuf.Duration start_offset = 1; + +        // Time offset of the end of this word relative to the beginning of the +        // total conversation. +        google.protobuf.Duration end_offset = 2; + +        // The word itself. Includes punctuation marks that surround the word. +        string word = 3; + +        // A confidence estimate between 0.0 and 1.0 of the fidelity of this +        // word. A default value of 0.0 indicates that the value is unset. +        float confidence = 4; +      } + +      // Metadata from Dialogflow relating to the current transcript segment. +      message DialogflowSegmentMetadata { +        // Whether the transcript segment was covered under the configured smart +        // reply allowlist in Agent Assist. +        bool smart_reply_allowlist_covered = 1; +      } + +      // The time that the message occurred, if provided. +      google.protobuf.Timestamp message_time = 6; + +      // The text of this segment. +      string text = 1; + +      // A confidence estimate between 0.0 and 1.0 of the fidelity of this +      // segment. A default value of 0.0 indicates that the value is unset. +      float confidence = 2; + +      // A list of the word-specific information for each word in the segment. +      repeated WordInfo words = 3; + +      // The language code of this segment as a +      // [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. +      // Example: "en-US". +      string language_code = 4; + +      // For conversations derived from multi-channel audio, this is the channel +      // number corresponding to the audio from that channel. For +      // audioChannelCount = N, its output values can range from '1' to 'N'. A +      // channel tag of 0 indicates that the audio is mono. +      int32 channel_tag = 5; + +      // The participant of this segment. +      ConversationParticipant segment_participant = 9; + +      // CCAI metadata relating to the current transcript segment. +      DialogflowSegmentMetadata dialogflow_segment_metadata = 10; + +      // The sentiment for this transcript segment. +      SentimentData sentiment = 11; +    } + +    // A list of sequential transcript segments that comprise the conversation. +    repeated TranscriptSegment transcript_segments = 1; +  } + +  // Possible media for the conversation. +  enum Medium { +    // Default value, if unspecified will default to PHONE_CALL. +    MEDIUM_UNSPECIFIED = 0; + +    // The format for conversations that took place over the phone. +    PHONE_CALL = 1; + +    // The format for conversations that took place over chat. +    CHAT = 2; +  } + +  // Metadata that applies to the conversation. +  oneof metadata { +    // Call-specific metadata. +    CallMetadata call_metadata = 7; +  } + +  // A time to live expiration setting, can be either a specified timestamp or a +  // duration from the time that the conversation creation request was received. +  // Conversations with an expiration set will be removed up to 24 hours after +  // the specified time. +  oneof expiration { +    // The time at which this conversation should expire. After this time, the +    // conversation data and any associated analyses will be deleted. +    google.protobuf.Timestamp expire_time = 15; + +    // Input only. The TTL for this resource. If specified, then this TTL will +    // be used to calculate the expire time. +    google.protobuf.Duration ttl = 16 [(google.api.field_behavior) = INPUT_ONLY]; +  } + +  // Immutable. The resource name of the conversation. +  // Format: +  // projects/{project}/locations/{location}/conversations/{conversation} +  string name = 1 [(google.api.field_behavior) = IMMUTABLE]; + +  // The source of the audio and transcription for the conversation. +  ConversationDataSource data_source = 2; + +  // Output only. The time at which the conversation was created. +  google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The most recent time at which the conversation was updated. +  google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // The time at which the conversation started. +  google.protobuf.Timestamp start_time = 17; + +  // A user-specified language code for the conversation. +  string language_code = 14; + +  // An opaque, user-specified string representing the human agent who handled +  // the conversation. +  string agent_id = 5; + +  // A map for the user to specify any custom fields. A maximum of 20 labels per +  // conversation is allowed, with a maximum of 256 characters per entry. +  map<string, string> labels = 6; + +  // Output only. The conversation transcript. +  Transcript transcript = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Immutable. The conversation medium, if unspecified will default to PHONE_CALL. +  Medium medium = 9 [(google.api.field_behavior) = IMMUTABLE]; + +  // Output only. The duration of the conversation. +  google.protobuf.Duration duration = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The number of turns in the conversation. +  int32 turn_count = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The conversation's latest analysis, if one exists. +  Analysis latest_analysis = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The annotations that were generated during the customer and agent +  // interaction. +  repeated RuntimeAnnotation runtime_annotations = 13 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. All the matched Dialogflow intents in the call. The key corresponds to a +  // Dialogflow intent, format: +  // projects/{project}/agent/{agent}/intents/{intent} +  map<string, DialogflowIntent> dialogflow_intents = 18 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Obfuscated user ID which the customer sent to us. +  string obfuscated_user_id = 21; +} + +// The analysis resource. +message Analysis { +  option (google.api.resource) = { +    type: "contactcenterinsights.googleapis.com/Analysis" +    pattern: "projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis}" +  }; + +  // Immutable. The resource name of the analysis. +  // Format: +  // projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis} +  string name = 1 [(google.api.field_behavior) = IMMUTABLE]; + +  // Output only. The time at which the analysis was requested. +  google.protobuf.Timestamp request_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The time at which the analysis was created, which occurs when the +  // long-running operation completes. +  google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The result of the analysis, which is populated when the analysis +  // finishes. +  AnalysisResult analysis_result = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// The conversation source, which is a combination of transcript and audio. +message ConversationDataSource { +  // The source of the conversation. +  oneof source { +    // A Cloud Storage location specification for the audio and transcript. +    GcsSource gcs_source = 1; + +    // The source when the conversation comes from Dialogflow. +    DialogflowSource dialogflow_source = 3; +  } +} + +// A Cloud Storage source of conversation data. +message GcsSource { +  // Cloud Storage URI that points to a file that contains the conversation +  // audio. +  string audio_uri = 1; + +  // Immutable. Cloud Storage URI that points to a file that contains the conversation +  // transcript. +  string transcript_uri = 2 [(google.api.field_behavior) = IMMUTABLE]; +} + +// A Dialogflow source of conversation data. +message DialogflowSource { +  // Output only. The name of the Dialogflow conversation that this conversation +  // resource is derived from. Format: +  // projects/{project}/locations/{location}/conversations/{conversation} +  string dialogflow_conversation = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Cloud Storage URI that points to a file that contains the conversation +  // audio. +  string audio_uri = 3; +} + +// The result of an analysis. +message AnalysisResult { +  // Call-specific metadata created during analysis. +  message CallAnalysisMetadata { +    // A list of call annotations that apply to this call. +    repeated CallAnnotation annotations = 2; + +    // All the entities in the call. +    map<string, Entity> entities = 3; + +    // Overall conversation-level sentiment for each channel of the call. +    repeated ConversationLevelSentiment sentiments = 4; + +    // All the matched intents in the call. +    map<string, Intent> intents = 6; + +    // All the matched phrase matchers in the call. +    map<string, PhraseMatchData> phrase_matchers = 7; + +    // Overall conversation-level issue modeling result. +    IssueModelResult issue_model_result = 8; +  } + +  // Metadata discovered during analysis. +  oneof metadata { +    // Call-specific metadata created by the analysis. +    CallAnalysisMetadata call_analysis_metadata = 2; +  } + +  // The time at which the analysis ended. +  google.protobuf.Timestamp end_time = 1; +} + +// Issue Modeling result on a conversation. +message IssueModelResult { +  // Issue model that generates the result. +  // Format: projects/{project}/locations/{location}/issueModels/{issue_model} +  string issue_model = 1 [(google.api.resource_reference) = { +                            type: "contactcenterinsights.googleapis.com/IssueModel" +                          }]; + +  // All the matched issues. +  repeated IssueAssignment issues = 2; +} + +// One channel of conversation-level sentiment data. +message ConversationLevelSentiment { +  // The channel of the audio that the data applies to. +  int32 channel_tag = 1; + +  // Data specifying sentiment. +  SentimentData sentiment_data = 2; +} + +// Information about the issue. +message IssueAssignment { +  // Resource name of the assigned issue. +  string issue = 1; + +  // Score indicating the likelihood of the issue assignment. +  // currently bounded on [0,1]. +  double score = 2; + +  // Immutable. Display name of the assigned issue. This field is set at time of analyis +  // and immutable since then. +  string display_name = 3 [(google.api.field_behavior) = IMMUTABLE]; +} + +// A piece of metadata that applies to a window of a call. +message CallAnnotation { +  // The data in the annotation. +  oneof data { +    // Data specifying an interruption. +    InterruptionData interruption_data = 10; + +    // Data specifying sentiment. +    SentimentData sentiment_data = 11; + +    // Data specifying silence. +    SilenceData silence_data = 12; + +    // Data specifying a hold. +    HoldData hold_data = 13; + +    // Data specifying an entity mention. +    EntityMentionData entity_mention_data = 15; + +    // Data specifying an intent match. +    IntentMatchData intent_match_data = 16; + +    // Data specifying a phrase match. +    PhraseMatchData phrase_match_data = 17; +  } + +  // The channel of the audio where the annotation occurs. For single-channel +  // audio, this field is not populated. +  int32 channel_tag = 1; + +  // The boundary in the conversation where the annotation starts, inclusive. +  AnnotationBoundary annotation_start_boundary = 4; + +  // The boundary in the conversation where the annotation ends, inclusive. +  AnnotationBoundary annotation_end_boundary = 5; +} + +// A point in a conversation that marks the start or the end of an annotation. +message AnnotationBoundary { +  // A detailed boundary, which describes a more specific point. +  oneof detailed_boundary { +    // The word index of this boundary with respect to the first word in the +    // transcript piece. This index starts at zero. +    int32 word_index = 3; +  } + +  // The index in the sequence of transcribed pieces of the conversation where +  // the boundary is located. This index starts at zero. +  int32 transcript_index = 1; +} + +// The data for an entity annotation. +// Represents a phrase in the conversation that is a known entity, such +// as a person, an organization, or location. +message Entity { +  // The type of the entity. For most entity types, the associated metadata is a +  // Wikipedia URL (`wikipedia_url`) and Knowledge Graph MID (`mid`). The table +  // below lists the associated fields for entities that have different +  // metadata. +  enum Type { +    // Unspecified. +    TYPE_UNSPECIFIED = 0; + +    // Person. +    PERSON = 1; + +    // Location. +    LOCATION = 2; + +    // Organization. +    ORGANIZATION = 3; + +    // Event. +    EVENT = 4; + +    // Artwork. +    WORK_OF_ART = 5; + +    // Consumer product. +    CONSUMER_GOOD = 6; + +    // Other types of entities. +    OTHER = 7; + +    // Phone number. +    // +    // The metadata lists the phone number (formatted according to local +    // convention), plus whichever additional elements appear in the text: +    // +    // * `number` - The actual number, broken down into sections according to +    // local convention. +    // * `national_prefix` - Country code, if detected. +    // * `area_code` - Region or area code, if detected. +    // * `extension` - Phone extension (to be dialed after connection), if +    // detected. +    PHONE_NUMBER = 9; + +    // Address. +    // +    // The metadata identifies the street number and locality plus whichever +    // additional elements appear in the text: +    // +    // * `street_number` - Street number. +    // * `locality` - City or town. +    // * `street_name` - Street/route name, if detected. +    // * `postal_code` - Postal code, if detected. +    // * `country` - Country, if detected. +    // * `broad_region` - Administrative area, such as the state, if detected. +    // * `narrow_region` - Smaller administrative area, such as county, if +    // detected. +    // * `sublocality` - Used in Asian addresses to demark a district within a +    // city, if detected. +    ADDRESS = 10; + +    // Date. +    // +    // The metadata identifies the components of the date: +    // +    // * `year` - Four digit year, if detected. +    // * `month` - Two digit month number, if detected. +    // * `day` - Two digit day number, if detected. +    DATE = 11; + +    // Number. +    // +    // The metadata is the number itself. +    NUMBER = 12; + +    // Price. +    // +    // The metadata identifies the `value` and `currency`. +    PRICE = 13; +  } + +  // The representative name for the entity. +  string display_name = 1; + +  // The entity type. +  Type type = 2; + +  // Metadata associated with the entity. +  // +  // For most entity types, the metadata is a Wikipedia URL (`wikipedia_url`) +  // and Knowledge Graph MID (`mid`), if they are available. For the metadata +  // associated with other entity types, see the Type table below. +  map<string, string> metadata = 3; + +  // The salience score associated with the entity in the [0, 1.0] range. +  // +  // The salience score for an entity provides information about the +  // importance or centrality of that entity to the entire document text. +  // Scores closer to 0 are less salient, while scores closer to 1.0 are highly +  // salient. +  float salience = 4; + +  // The aggregate sentiment expressed for this entity in the conversation. +  SentimentData sentiment = 5; +} + +// The data for an intent. +// Represents a detected intent in the conversation, for example MAKES_PROMISE. +message Intent { +  // The unique identifier of the intent. +  string id = 1; + +  // The human-readable name of the intent. +  string display_name = 2; +} + +// The data for a matched phrase matcher. +// Represents information identifying a phrase matcher for a given match. +message PhraseMatchData { +  // The unique identifier (the resource name) of the phrase matcher. +  string phrase_matcher = 1; + +  // The human-readable name of the phrase matcher. +  string display_name = 2; +} + +// The data for a Dialogflow intent. +// Represents a detected intent in the conversation, e.g. MAKES_PROMISE. +message DialogflowIntent { +  // The human-readable name of the intent. +  string display_name = 1; +} + +// The data for an interruption annotation. +message InterruptionData { + +} + +// The data for a silence annotation. +message SilenceData { + +} + +// The data for a hold annotation. +message HoldData { + +} + +// The data for an entity mention annotation. +// This represents a mention of an `Entity` in the conversation. +message EntityMentionData { +  // The supported types of mentions. +  enum MentionType { +    // Unspecified. +    MENTION_TYPE_UNSPECIFIED = 0; + +    // Proper noun. +    PROPER = 1; + +    // Common noun (or noun compound). +    COMMON = 2; +  } + +  // The key of this entity in conversation entities. +  // Can be used to retrieve the exact `Entity` this mention is attached to. +  string entity_unique_id = 1; + +  // The type of the entity mention. +  MentionType type = 2; + +  // Sentiment expressed for this mention of the entity. +  SentimentData sentiment = 3; +} + +// The data for an intent match. +// Represents an intent match for a text segment in the conversation. A text +// segment can be part of a sentence, a complete sentence, or an utterance +// with multiple sentences. +message IntentMatchData { +  // The id of the matched intent. +  // Can be used to retrieve the corresponding intent information. +  string intent_unique_id = 1; +} + +// The data for a sentiment annotation. +message SentimentData { +  // A non-negative number from 0 to infinity which represents the abolute +  // magnitude of sentiment regardless of score. +  float magnitude = 1; + +  // The sentiment score between -1.0 (negative) and 1.0 (positive). +  float score = 2; +} + +// The issue model resource. +message IssueModel { +  option (google.api.resource) = { +    type: "contactcenterinsights.googleapis.com/IssueModel" +    pattern: "projects/{project}/locations/{location}/issueModels/{issue_model}" +  }; + +  // Configs for the input data used to create the issue model. +  message InputDataConfig { +    // Medium of conversations used in training data. This field is being +    // deprecated. To specify the medium to be used in training a new issue +    // model, set the `medium` field on `filter`. +    Conversation.Medium medium = 1 [deprecated = true]; + +    // Output only. Number of conversations used in training. Output only. +    int64 training_conversations_count = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + +    // A filter to reduce the conversations used for training the model to a +    // specific subset. +    string filter = 3; +  } + +  // State of the model. +  enum State { +    // Unspecified. +    STATE_UNSPECIFIED = 0; + +    // Model is not deployed but is ready to deploy. +    UNDEPLOYED = 1; + +    // Model is being deployed. +    DEPLOYING = 2; + +    // Model is deployed and is ready to be used. A model can only be used in +    // analysis if it's in this state. +    DEPLOYED = 3; + +    // Model is being undeployed. +    UNDEPLOYING = 4; + +    // Model is being deleted. +    DELETING = 5; +  } + +  // Immutable. The resource name of the issue model. +  // Format: +  // projects/{project}/locations/{location}/issueModels/{issue_model} +  string name = 1 [(google.api.field_behavior) = IMMUTABLE]; + +  // The representative name for the issue model. +  string display_name = 2; + +  // Output only. The time at which this issue model was created. +  google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The most recent time at which the issue model was updated. +  google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. State of the model. +  State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Configs for the input data that used to create the issue model. +  InputDataConfig input_data_config = 6; + +  // Output only. Immutable. The issue model's label statistics on its training data. +  IssueModelLabelStats training_stats = 7 [ +    (google.api.field_behavior) = OUTPUT_ONLY, +    (google.api.field_behavior) = IMMUTABLE +  ]; +} + +// The issue resource. +message Issue { +  option (google.api.resource) = { +    type: "contactcenterinsights.googleapis.com/Issue" +    pattern: "projects/{project}/locations/{location}/issueModels/{issue_model}/issues/{issue}" +  }; + +  // Immutable. The resource name of the issue. +  // Format: +  // projects/{project}/locations/{location}/issueModels/{issue_model}/issues/{issue} +  string name = 1 [(google.api.field_behavior) = IMMUTABLE]; + +  // The representative name for the issue. +  string display_name = 2; + +  // Output only. The time at which this issue was created. +  google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The most recent time that this issue was updated. +  google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// Aggregated statistics about an issue model. +message IssueModelLabelStats { +  // Aggregated statistics about an issue. +  message IssueStats { +    // Issue resource. +    // Format: +    // projects/{project}/locations/{location}/issueModels/{issue_model}/issues/{issue} +    string issue = 1; + +    // Number of conversations attached to the issue at this point in time. +    int64 labeled_conversations_count = 2; + +    // Display name of the issue. +    string display_name = 3; +  } + +  // Number of conversations the issue model has analyzed at this point in time. +  int64 analyzed_conversations_count = 1; + +  // Number of analyzed conversations for which no issue was applicable at this +  // point in time. +  int64 unclassified_conversations_count = 2; + +  // Statistics on each issue. Key is the issue's resource name. +  map<string, IssueStats> issue_stats = 3; +} + +// The phrase matcher resource. +message PhraseMatcher { +  option (google.api.resource) = { +    type: "contactcenterinsights.googleapis.com/PhraseMatcher" +    pattern: "projects/{project}/locations/{location}/phraseMatchers/{phrase_matcher}" +  }; + +  // Specifies how to combine each phrase match rule group to determine whether +  // there is a match. +  enum PhraseMatcherType { +    // Unspecified. +    PHRASE_MATCHER_TYPE_UNSPECIFIED = 0; + +    // Must meet all phrase match rule groups or there is no match. +    ALL_OF = 1; + +    // If any of the phrase match rule groups are met, there is a match. +    ANY_OF = 2; +  } + +  // The resource name of the phrase matcher. +  // Format: +  // projects/{project}/locations/{location}/phraseMatchers/{phrase_matcher} +  string name = 1; + +  // Output only. Immutable. The revision ID of the phrase matcher. +  // A new revision is committed whenever the matcher is changed, except when it +  // is activated or deactivated. A server generated random ID will be used. +  // Example: locations/global/phraseMatchers/my-first-matcher@1234567 +  string revision_id = 2 [ +    (google.api.field_behavior) = IMMUTABLE, +    (google.api.field_behavior) = OUTPUT_ONLY +  ]; + +  // The customized version tag to use for the phrase matcher. If not specified, +  // it will default to `revision_id`. +  string version_tag = 3; + +  // Output only. The timestamp of when the revision was created. It is also the create time +  // when a new matcher is added. +  google.protobuf.Timestamp revision_create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // The human-readable name of the phrase matcher. +  string display_name = 5; + +  // Required. The type of this phrase matcher. +  PhraseMatcherType type = 6 [(google.api.field_behavior) = REQUIRED]; + +  // Applies the phrase matcher only when it is active. +  bool active = 7; + +  // A list of phase match rule groups that are included in this matcher. +  repeated PhraseMatchRuleGroup phrase_match_rule_groups = 8; + +  // Output only. The most recent time at which the activation status was updated. +  google.protobuf.Timestamp activation_update_time = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // The role whose utterances the phrase matcher should be matched +  // against. If the role is ROLE_UNSPECIFIED it will be matched against any +  // utterances in the transcript. +  ConversationParticipant.Role role_match = 10; + +  // Output only. The most recent time at which the phrase matcher was updated. +  google.protobuf.Timestamp update_time = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +// A message representing a rule in the phrase matcher. +message PhraseMatchRuleGroup { +  // Specifies how to combine each phrase match rule for whether there is a +  // match. +  enum PhraseMatchRuleGroupType { +    // Unspecified. +    PHRASE_MATCH_RULE_GROUP_TYPE_UNSPECIFIED = 0; + +    // Must meet all phrase match rules or there is no match. +    ALL_OF = 1; + +    // If any of the phrase match rules are met, there is a match. +    ANY_OF = 2; +  } + +  // Required. The type of this phrase match rule group. +  PhraseMatchRuleGroupType type = 1 [(google.api.field_behavior) = REQUIRED]; + +  // A list of phase match rules that are included in this group. +  repeated PhraseMatchRule phrase_match_rules = 2; +} + +// The data for a phrase match rule. +message PhraseMatchRule { +  // Required. The phrase to be matched. +  string query = 1 [(google.api.field_behavior) = REQUIRED]; + +  // Specifies whether the phrase must be missing from the transcript segment or +  // present in the transcript segment. +  bool negated = 2; + +  // Provides additional information about the rule that specifies how to apply +  // the rule. +  PhraseMatchRuleConfig config = 3; +} + +// Configuration information of a phrase match rule. +message PhraseMatchRuleConfig { +  // The configuration of the phrase match rule. +  oneof config { +    // The configuration for the exact match rule. +    ExactMatchConfig exact_match_config = 1; +  } +} + +// Exact match configuration. +message ExactMatchConfig { +  // Whether to consider case sensitivity when performing an exact match. +  bool case_sensitive = 1; +} + +// The settings resource. +message Settings { +  option (google.api.resource) = { +    type: "contactcenterinsights.googleapis.com/Settings" +    pattern: "projects/{project}/locations/{location}/settings" +  }; + +  // Default configuration when creating Analyses in Insights. +  message AnalysisConfig { +    // Percentage of conversations created using Dialogflow runtime integration +    // to analyze automatically, between [0, 100]. +    double runtime_integration_analysis_percentage = 1; +  } + +  // Immutable. The resource name of the settings resource. +  // Format: +  // projects/{project}/locations/{location}/settings +  string name = 1 [(google.api.field_behavior) = IMMUTABLE]; + +  // Output only. The time at which the settings was created. +  google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The time at which the settings were last updated. +  google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // A language code to be applied to each transcript segment unless the segment +  // already specifies a language code. Language code defaults to "en-US" if it +  // is neither specified on the segment nor here. +  string language_code = 4; + +  // The default TTL for newly-created conversations. If a conversation has a +  // specified expiration, that value will be used instead. Changing this +  // value will not change the expiration of existing conversations. +  // Conversations with no expire time persist until they are deleted. +  google.protobuf.Duration conversation_ttl = 5; + +  // A map that maps a notification trigger to a Pub/Sub topic. Each time a +  // specified trigger occurs, Insights will notify the corresponding Pub/Sub +  // topic. +  // +  // Keys are notification triggers. Supported keys are: +  // +  // * "all-triggers": Notify each time any of the supported triggers occurs. +  // * "create-analysis": Notify each time an analysis is created. +  // * "create-conversation": Notify each time a conversation is created. +  // * "export-insights-data": Notify each time an export is complete. +  // * "update-conversation": Notify each time a conversation is updated via +  // UpdateConversation. +  // +  // Values are Pub/Sub topics. The format of each Pub/Sub topic is: +  // projects/{project}/topics/{topic} +  map<string, string> pubsub_notification_settings = 6; + +  // Default analysis settings. +  AnalysisConfig analysis_config = 7; +} + +// An annotation that was generated during the customer and agent interaction. +message RuntimeAnnotation { +  // The data in the annotation. +  oneof data { +    // Agent Assist Article Suggestion data. +    ArticleSuggestionData article_suggestion = 6; + +    // Agent Assist FAQ answer data. +    FaqAnswerData faq_answer = 7; + +    // Agent Assist Smart Reply data. +    SmartReplyData smart_reply = 8; + +    // Agent Assist Smart Compose suggestion data. +    SmartComposeSuggestionData smart_compose_suggestion = 9; + +    // Dialogflow interaction data. +    DialogflowInteractionData dialogflow_interaction = 10; +  } + +  // The unique identifier of the annotation. +  // Format: +  // projects/{project}/locations/{location}/conversationDatasets/{dataset}/conversationDataItems/{data_item}/conversationAnnotations/{annotation} +  string annotation_id = 1; + +  // The time at which this annotation was created. +  google.protobuf.Timestamp create_time = 2; + +  // The boundary in the conversation where the annotation starts, inclusive. +  AnnotationBoundary start_boundary = 3; + +  // The boundary in the conversation where the annotation ends, inclusive. +  AnnotationBoundary end_boundary = 4; + +  // The feedback that the customer has about the answer in `data`. +  AnswerFeedback answer_feedback = 5; +} + +// The feedback that the customer has about a certain answer in the +// conversation. +message AnswerFeedback { +  // The correctness level of an answer. +  enum CorrectnessLevel { +    // Correctness level unspecified. +    CORRECTNESS_LEVEL_UNSPECIFIED = 0; + +    // Answer is totally wrong. +    NOT_CORRECT = 1; + +    // Answer is partially correct. +    PARTIALLY_CORRECT = 2; + +    // Answer is fully correct. +    FULLY_CORRECT = 3; +  } + +  // The correctness level of an answer. +  CorrectnessLevel correctness_level = 1; + +  // Indicates whether an answer or item was clicked by the human agent. +  bool clicked = 2; + +  // Indicates whether an answer or item was displayed to the human agent in the +  // agent desktop UI. +  bool displayed = 3; +} + +// Agent Assist Article Suggestion data. +message ArticleSuggestionData { +  // Article title. +  string title = 1; + +  // Article URI. +  string uri = 2; + +  // The system's confidence score that this article is a good match for this +  // conversation, ranging from 0.0 (completely uncertain) to 1.0 (completely +  // certain). +  float confidence_score = 3; + +  // Map that contains metadata about the Article Suggestion and the document +  // that it originates from. +  map<string, string> metadata = 4; + +  // The name of the answer record. +  // Format: +  // projects/{project}/locations/{location}/answerRecords/{answer_record} +  string query_record = 5; + +  // The knowledge document that this answer was extracted from. +  // Format: +  // projects/{project}/knowledgeBases/{knowledge_base}/documents/{document} +  string source = 6; +} + +// Agent Assist frequently-asked-question answer data. +message FaqAnswerData { +  // The piece of text from the `source` knowledge base document. +  string answer = 1; + +  // The system's confidence score that this answer is a good match for this +  // conversation, ranging from 0.0 (completely uncertain) to 1.0 (completely +  // certain). +  float confidence_score = 2; + +  // The corresponding FAQ question. +  string question = 3; + +  // Map that contains metadata about the FAQ answer and the document that +  // it originates from. +  map<string, string> metadata = 4; + +  // The name of the answer record. +  // Format: +  // projects/{project}/locations/{location}/answerRecords/{answer_record} +  string query_record = 5; + +  // The knowledge document that this answer was extracted from. +  // Format: +  // projects/{project}/knowledgeBases/{knowledge_base}/documents/{document}. +  string source = 6; +} + +// Agent Assist Smart Reply data. +message SmartReplyData { +  // The content of the reply. +  string reply = 1; + +  // The system's confidence score that this reply is a good match for this +  // conversation, ranging from 0.0 (completely uncertain) to 1.0 (completely +  // certain). +  double confidence_score = 2; + +  // Map that contains metadata about the Smart Reply and the document from +  // which it originates. +  map<string, string> metadata = 3; + +  // The name of the answer record. +  // Format: +  // projects/{project}/locations/{location}/answerRecords/{answer_record} +  string query_record = 4; +} + +// Agent Assist Smart Compose suggestion data. +message SmartComposeSuggestionData { +  // The content of the suggestion. +  string suggestion = 1; + +  // The system's confidence score that this suggestion is a good match for this +  // conversation, ranging from 0.0 (completely uncertain) to 1.0 (completely +  // certain). +  double confidence_score = 2; + +  // Map that contains metadata about the Smart Compose suggestion and the +  // document from which it originates. +  map<string, string> metadata = 3; + +  // The name of the answer record. +  // Format: +  // projects/{project}/locations/{location}/answerRecords/{answer_record} +  string query_record = 4; +} + +// Dialogflow interaction data. +message DialogflowInteractionData { +  // The Dialogflow intent resource path. Format: +  // projects/{project}/agent/{agent}/intents/{intent} +  string dialogflow_intent_id = 1; + +  // The confidence of the match ranging from 0.0 (completely uncertain) to 1.0 +  // (completely certain). +  float confidence = 2; +} + +// The call participant speaking for a given utterance. +message ConversationParticipant { +  // The role of the participant. +  enum Role { +    // Participant's role is not set. +    ROLE_UNSPECIFIED = 0; + +    // Participant is a human agent. +    HUMAN_AGENT = 1; + +    // Participant is an automated agent. +    AUTOMATED_AGENT = 2; + +    // Participant is an end user who conversed with the contact center. +    END_USER = 3; + +    // Participant is either a human or automated agent. +    ANY_AGENT = 4; +  } + +  oneof participant { +    // The name of the participant provided by Dialogflow. Format: +    // projects/{project}/locations/{location}/conversations/{conversation}/participants/{participant} +    string dialogflow_participant_name = 5 [(google.api.resource_reference) = { +                                              type: "dialogflow.googleapis.com/Participant" +                                            }]; + +    // A user-specified ID representing the participant. +    string user_id = 6; +  } + +  // Deprecated. Use `dialogflow_participant_name` instead. +  // The name of the Dialogflow participant. Format: +  // projects/{project}/locations/{location}/conversations/{conversation}/participants/{participant} +  string dialogflow_participant = 1 [deprecated = true]; + +  // Obfuscated user ID from Dialogflow. +  string obfuscated_external_user_id = 3; + +  // The role of the participant. +  Role role = 2; +} + +// The View resource. +message View { +  option (google.api.resource) = { +    type: "contactcenterinsights.googleapis.com/View" +    pattern: "projects/{project}/locations/{location}/views/{view}" +  }; + +  // Immutable. The resource name of the view. +  // Format: +  // projects/{project}/locations/{location}/views/{view} +  string name = 1 [(google.api.field_behavior) = IMMUTABLE]; + +  // The human-readable display name of the view. +  string display_name = 2; + +  // Output only. The time at which this view was created. +  google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The most recent time at which the view was updated. +  google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // String with specific view properties. +  string value = 5; +}  | 
