<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="contactcenterinsights_v1.html">Contact Center AI Insights API</a> . <a href="contactcenterinsights_v1.projects.html">projects</a> . <a href="contactcenterinsights_v1.projects.locations.html">locations</a> . <a href="contactcenterinsights_v1.projects.locations.conversations.html">conversations</a> . <a href="contactcenterinsights_v1.projects.locations.conversations.analyses.html">analyses</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 an analysis. The long running operation is done when the analysis has completed.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an analysis.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an analysis.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists analyses.</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>
<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 an analysis. The long running operation is done when the analysis has completed.

Args:
  parent: string, Required. The parent resource of the analysis. (required)
  body: object, The request body.
    The object takes the form of:

{ # The analysis resource.
  &quot;analysisResult&quot;: { # The result of an analysis. # Output only. The result of the analysis, which is populated when the analysis finishes.
    &quot;callAnalysisMetadata&quot;: { # Call-specific metadata created during analysis. # Call-specific metadata created by the analysis.
      &quot;annotations&quot;: [ # A list of call annotations that apply to this call.
        { # A piece of metadata that applies to a window of a call.
          &quot;annotationEndBoundary&quot;: { # A point in a conversation that marks the start or the end of an annotation. # The boundary in the conversation where the annotation ends, inclusive.
            &quot;transcriptIndex&quot;: 42, # The index in the sequence of transcribed pieces of the conversation where the boundary is located. This index starts at zero.
            &quot;wordIndex&quot;: 42, # The word index of this boundary with respect to the first word in the transcript piece. This index starts at zero.
          },
          &quot;annotationStartBoundary&quot;: { # A point in a conversation that marks the start or the end of an annotation. # The boundary in the conversation where the annotation starts, inclusive.
            &quot;transcriptIndex&quot;: 42, # The index in the sequence of transcribed pieces of the conversation where the boundary is located. This index starts at zero.
            &quot;wordIndex&quot;: 42, # The word index of this boundary with respect to the first word in the transcript piece. This index starts at zero.
          },
          &quot;channelTag&quot;: 42, # The channel of the audio where the annotation occurs. For single-channel audio, this field is not populated.
          &quot;entityMentionData&quot;: { # The data for an entity mention annotation. This represents a mention of an `Entity` in the conversation. # Data specifying an entity mention.
            &quot;entityUniqueId&quot;: &quot;A String&quot;, # The key of this entity in conversation entities. Can be used to retrieve the exact `Entity` this mention is attached to.
            &quot;sentiment&quot;: { # The data for a sentiment annotation. # Sentiment expressed for this mention of the entity.
              &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
              &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
            },
            &quot;type&quot;: &quot;A String&quot;, # The type of the entity mention.
          },
          &quot;holdData&quot;: { # The data for a hold annotation. # Data specifying a hold.
          },
          &quot;intentMatchData&quot;: { # 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. # Data specifying an intent match.
            &quot;intentUniqueId&quot;: &quot;A String&quot;, # The id of the matched intent. Can be used to retrieve the corresponding intent information.
          },
          &quot;interruptionData&quot;: { # The data for an interruption annotation. # Data specifying an interruption.
          },
          &quot;phraseMatchData&quot;: { # The data for a matched phrase matcher. Represents information identifying a phrase matcher for a given match. # Data specifying a phrase match.
            &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the phrase matcher.
            &quot;phraseMatcher&quot;: &quot;A String&quot;, # The unique identifier (the resource name) of the phrase matcher.
          },
          &quot;sentimentData&quot;: { # The data for a sentiment annotation. # Data specifying sentiment.
            &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
            &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
          },
          &quot;silenceData&quot;: { # The data for a silence annotation. # Data specifying silence.
          },
        },
      ],
      &quot;entities&quot;: { # All the entities in the call.
        &quot;a_key&quot;: { # 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.
          &quot;displayName&quot;: &quot;A String&quot;, # The representative name for the entity.
          &quot;metadata&quot;: { # 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.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;salience&quot;: 3.14, # 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.
          &quot;sentiment&quot;: { # The data for a sentiment annotation. # The aggregate sentiment expressed for this entity in the conversation.
            &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
            &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
          },
          &quot;type&quot;: &quot;A String&quot;, # The entity type.
        },
      },
      &quot;intents&quot;: { # All the matched intents in the call.
        &quot;a_key&quot;: { # The data for an intent. Represents a detected intent in the conversation, for example MAKES_PROMISE.
          &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the intent.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier of the intent.
        },
      },
      &quot;issueModelResult&quot;: { # Issue Modeling result on a conversation. # Overall conversation-level issue modeling result.
        &quot;issueModel&quot;: &quot;A String&quot;, # Issue model that generates the result.
        &quot;issues&quot;: [ # All the matched issues.
          { # Information about the issue.
            &quot;displayName&quot;: &quot;A String&quot;, # Immutable. Display name of the assigned issue. This field is set at time of analyis and immutable since then.
            &quot;issue&quot;: &quot;A String&quot;, # Resource name of the assigned issue.
            &quot;score&quot;: 3.14, # Score indicating the likelihood of the issue assignment. currently bounded on [0,1].
          },
        ],
      },
      &quot;phraseMatchers&quot;: { # All the matched phrase matchers in the call.
        &quot;a_key&quot;: { # The data for a matched phrase matcher. Represents information identifying a phrase matcher for a given match.
          &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the phrase matcher.
          &quot;phraseMatcher&quot;: &quot;A String&quot;, # The unique identifier (the resource name) of the phrase matcher.
        },
      },
      &quot;sentiments&quot;: [ # Overall conversation-level sentiment for each channel of the call.
        { # One channel of conversation-level sentiment data.
          &quot;channelTag&quot;: 42, # The channel of the audio that the data applies to.
          &quot;sentimentData&quot;: { # The data for a sentiment annotation. # Data specifying sentiment.
            &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
            &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
          },
        },
      ],
    },
    &quot;endTime&quot;: &quot;A String&quot;, # The time at which the analysis ended.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the analysis was created, which occurs when the long-running operation completes.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the analysis. Format: projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis}
  &quot;requestTime&quot;: &quot;A String&quot;, # Output only. The time at which the analysis was requested.
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes an analysis.

Args:
  name: string, Required. The name of the analysis to delete. (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>Gets an analysis.

Args:
  name: string, Required. The name of the analysis to get. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The analysis resource.
  &quot;analysisResult&quot;: { # The result of an analysis. # Output only. The result of the analysis, which is populated when the analysis finishes.
    &quot;callAnalysisMetadata&quot;: { # Call-specific metadata created during analysis. # Call-specific metadata created by the analysis.
      &quot;annotations&quot;: [ # A list of call annotations that apply to this call.
        { # A piece of metadata that applies to a window of a call.
          &quot;annotationEndBoundary&quot;: { # A point in a conversation that marks the start or the end of an annotation. # The boundary in the conversation where the annotation ends, inclusive.
            &quot;transcriptIndex&quot;: 42, # The index in the sequence of transcribed pieces of the conversation where the boundary is located. This index starts at zero.
            &quot;wordIndex&quot;: 42, # The word index of this boundary with respect to the first word in the transcript piece. This index starts at zero.
          },
          &quot;annotationStartBoundary&quot;: { # A point in a conversation that marks the start or the end of an annotation. # The boundary in the conversation where the annotation starts, inclusive.
            &quot;transcriptIndex&quot;: 42, # The index in the sequence of transcribed pieces of the conversation where the boundary is located. This index starts at zero.
            &quot;wordIndex&quot;: 42, # The word index of this boundary with respect to the first word in the transcript piece. This index starts at zero.
          },
          &quot;channelTag&quot;: 42, # The channel of the audio where the annotation occurs. For single-channel audio, this field is not populated.
          &quot;entityMentionData&quot;: { # The data for an entity mention annotation. This represents a mention of an `Entity` in the conversation. # Data specifying an entity mention.
            &quot;entityUniqueId&quot;: &quot;A String&quot;, # The key of this entity in conversation entities. Can be used to retrieve the exact `Entity` this mention is attached to.
            &quot;sentiment&quot;: { # The data for a sentiment annotation. # Sentiment expressed for this mention of the entity.
              &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
              &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
            },
            &quot;type&quot;: &quot;A String&quot;, # The type of the entity mention.
          },
          &quot;holdData&quot;: { # The data for a hold annotation. # Data specifying a hold.
          },
          &quot;intentMatchData&quot;: { # 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. # Data specifying an intent match.
            &quot;intentUniqueId&quot;: &quot;A String&quot;, # The id of the matched intent. Can be used to retrieve the corresponding intent information.
          },
          &quot;interruptionData&quot;: { # The data for an interruption annotation. # Data specifying an interruption.
          },
          &quot;phraseMatchData&quot;: { # The data for a matched phrase matcher. Represents information identifying a phrase matcher for a given match. # Data specifying a phrase match.
            &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the phrase matcher.
            &quot;phraseMatcher&quot;: &quot;A String&quot;, # The unique identifier (the resource name) of the phrase matcher.
          },
          &quot;sentimentData&quot;: { # The data for a sentiment annotation. # Data specifying sentiment.
            &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
            &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
          },
          &quot;silenceData&quot;: { # The data for a silence annotation. # Data specifying silence.
          },
        },
      ],
      &quot;entities&quot;: { # All the entities in the call.
        &quot;a_key&quot;: { # 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.
          &quot;displayName&quot;: &quot;A String&quot;, # The representative name for the entity.
          &quot;metadata&quot;: { # 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.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;salience&quot;: 3.14, # 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.
          &quot;sentiment&quot;: { # The data for a sentiment annotation. # The aggregate sentiment expressed for this entity in the conversation.
            &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
            &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
          },
          &quot;type&quot;: &quot;A String&quot;, # The entity type.
        },
      },
      &quot;intents&quot;: { # All the matched intents in the call.
        &quot;a_key&quot;: { # The data for an intent. Represents a detected intent in the conversation, for example MAKES_PROMISE.
          &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the intent.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier of the intent.
        },
      },
      &quot;issueModelResult&quot;: { # Issue Modeling result on a conversation. # Overall conversation-level issue modeling result.
        &quot;issueModel&quot;: &quot;A String&quot;, # Issue model that generates the result.
        &quot;issues&quot;: [ # All the matched issues.
          { # Information about the issue.
            &quot;displayName&quot;: &quot;A String&quot;, # Immutable. Display name of the assigned issue. This field is set at time of analyis and immutable since then.
            &quot;issue&quot;: &quot;A String&quot;, # Resource name of the assigned issue.
            &quot;score&quot;: 3.14, # Score indicating the likelihood of the issue assignment. currently bounded on [0,1].
          },
        ],
      },
      &quot;phraseMatchers&quot;: { # All the matched phrase matchers in the call.
        &quot;a_key&quot;: { # The data for a matched phrase matcher. Represents information identifying a phrase matcher for a given match.
          &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the phrase matcher.
          &quot;phraseMatcher&quot;: &quot;A String&quot;, # The unique identifier (the resource name) of the phrase matcher.
        },
      },
      &quot;sentiments&quot;: [ # Overall conversation-level sentiment for each channel of the call.
        { # One channel of conversation-level sentiment data.
          &quot;channelTag&quot;: 42, # The channel of the audio that the data applies to.
          &quot;sentimentData&quot;: { # The data for a sentiment annotation. # Data specifying sentiment.
            &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
            &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
          },
        },
      ],
    },
    &quot;endTime&quot;: &quot;A String&quot;, # The time at which the analysis ended.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the analysis was created, which occurs when the long-running operation completes.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the analysis. Format: projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis}
  &quot;requestTime&quot;: &quot;A String&quot;, # Output only. The time at which the analysis was requested.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists analyses.

Args:
  parent: string, Required. The parent resource of the analyses. (required)
  filter: string, A filter to reduce results to a specific subset. Useful for querying conversations with specific properties.
  pageSize: integer, The maximum number of analyses to return in the response. If this value is zero, the service will select a default size. A call might return fewer objects than requested. A non-empty `next_page_token` in the response indicates that more data is available.
  pageToken: string, The value returned by the last `ListAnalysesResponse`; indicates that this is a continuation of a prior `ListAnalyses` call and the system should return the next page of data.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response to list analyses.
  &quot;analyses&quot;: [ # The analyses that match the request.
    { # The analysis resource.
      &quot;analysisResult&quot;: { # The result of an analysis. # Output only. The result of the analysis, which is populated when the analysis finishes.
        &quot;callAnalysisMetadata&quot;: { # Call-specific metadata created during analysis. # Call-specific metadata created by the analysis.
          &quot;annotations&quot;: [ # A list of call annotations that apply to this call.
            { # A piece of metadata that applies to a window of a call.
              &quot;annotationEndBoundary&quot;: { # A point in a conversation that marks the start or the end of an annotation. # The boundary in the conversation where the annotation ends, inclusive.
                &quot;transcriptIndex&quot;: 42, # The index in the sequence of transcribed pieces of the conversation where the boundary is located. This index starts at zero.
                &quot;wordIndex&quot;: 42, # The word index of this boundary with respect to the first word in the transcript piece. This index starts at zero.
              },
              &quot;annotationStartBoundary&quot;: { # A point in a conversation that marks the start or the end of an annotation. # The boundary in the conversation where the annotation starts, inclusive.
                &quot;transcriptIndex&quot;: 42, # The index in the sequence of transcribed pieces of the conversation where the boundary is located. This index starts at zero.
                &quot;wordIndex&quot;: 42, # The word index of this boundary with respect to the first word in the transcript piece. This index starts at zero.
              },
              &quot;channelTag&quot;: 42, # The channel of the audio where the annotation occurs. For single-channel audio, this field is not populated.
              &quot;entityMentionData&quot;: { # The data for an entity mention annotation. This represents a mention of an `Entity` in the conversation. # Data specifying an entity mention.
                &quot;entityUniqueId&quot;: &quot;A String&quot;, # The key of this entity in conversation entities. Can be used to retrieve the exact `Entity` this mention is attached to.
                &quot;sentiment&quot;: { # The data for a sentiment annotation. # Sentiment expressed for this mention of the entity.
                  &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
                  &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
                },
                &quot;type&quot;: &quot;A String&quot;, # The type of the entity mention.
              },
              &quot;holdData&quot;: { # The data for a hold annotation. # Data specifying a hold.
              },
              &quot;intentMatchData&quot;: { # 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. # Data specifying an intent match.
                &quot;intentUniqueId&quot;: &quot;A String&quot;, # The id of the matched intent. Can be used to retrieve the corresponding intent information.
              },
              &quot;interruptionData&quot;: { # The data for an interruption annotation. # Data specifying an interruption.
              },
              &quot;phraseMatchData&quot;: { # The data for a matched phrase matcher. Represents information identifying a phrase matcher for a given match. # Data specifying a phrase match.
                &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the phrase matcher.
                &quot;phraseMatcher&quot;: &quot;A String&quot;, # The unique identifier (the resource name) of the phrase matcher.
              },
              &quot;sentimentData&quot;: { # The data for a sentiment annotation. # Data specifying sentiment.
                &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
                &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
              },
              &quot;silenceData&quot;: { # The data for a silence annotation. # Data specifying silence.
              },
            },
          ],
          &quot;entities&quot;: { # All the entities in the call.
            &quot;a_key&quot;: { # 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.
              &quot;displayName&quot;: &quot;A String&quot;, # The representative name for the entity.
              &quot;metadata&quot;: { # 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.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;salience&quot;: 3.14, # 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.
              &quot;sentiment&quot;: { # The data for a sentiment annotation. # The aggregate sentiment expressed for this entity in the conversation.
                &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
                &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
              },
              &quot;type&quot;: &quot;A String&quot;, # The entity type.
            },
          },
          &quot;intents&quot;: { # All the matched intents in the call.
            &quot;a_key&quot;: { # The data for an intent. Represents a detected intent in the conversation, for example MAKES_PROMISE.
              &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the intent.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier of the intent.
            },
          },
          &quot;issueModelResult&quot;: { # Issue Modeling result on a conversation. # Overall conversation-level issue modeling result.
            &quot;issueModel&quot;: &quot;A String&quot;, # Issue model that generates the result.
            &quot;issues&quot;: [ # All the matched issues.
              { # Information about the issue.
                &quot;displayName&quot;: &quot;A String&quot;, # Immutable. Display name of the assigned issue. This field is set at time of analyis and immutable since then.
                &quot;issue&quot;: &quot;A String&quot;, # Resource name of the assigned issue.
                &quot;score&quot;: 3.14, # Score indicating the likelihood of the issue assignment. currently bounded on [0,1].
              },
            ],
          },
          &quot;phraseMatchers&quot;: { # All the matched phrase matchers in the call.
            &quot;a_key&quot;: { # The data for a matched phrase matcher. Represents information identifying a phrase matcher for a given match.
              &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the phrase matcher.
              &quot;phraseMatcher&quot;: &quot;A String&quot;, # The unique identifier (the resource name) of the phrase matcher.
            },
          },
          &quot;sentiments&quot;: [ # Overall conversation-level sentiment for each channel of the call.
            { # One channel of conversation-level sentiment data.
              &quot;channelTag&quot;: 42, # The channel of the audio that the data applies to.
              &quot;sentimentData&quot;: { # The data for a sentiment annotation. # Data specifying sentiment.
                &quot;magnitude&quot;: 3.14, # A non-negative number from 0 to infinity which represents the abolute magnitude of sentiment regardless of score.
                &quot;score&quot;: 3.14, # The sentiment score between -1.0 (negative) and 1.0 (positive).
              },
            },
          ],
        },
        &quot;endTime&quot;: &quot;A String&quot;, # The time at which the analysis ended.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the analysis was created, which occurs when the long-running operation completes.
      &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the analysis. Format: projects/{project}/locations/{location}/conversations/{conversation}/analyses/{analysis}
      &quot;requestTime&quot;: &quot;A String&quot;, # Output only. The time at which the analysis was requested.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
}</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>

</body></html>