<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

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

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

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

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#complete">complete(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Completes the specified conversation. Finished conversations are purged from the database after 30 days.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, conversationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new conversation. Conversations are auto-completed after 24 hours. Conversation Lifecycle: There are two stages during a conversation: Automated Agent Stage and Assist Stage. For Automated Agent Stage, there will be a dialogflow agent responding to user queries. For Assist Stage, there's no dialogflow agent responding to user queries. But we will provide suggestions which are generated from conversation. If Conversation.conversation_profile is configured for a dialogflow agent, conversation will start from `Automated Agent Stage`, otherwise, it will start from `Assist Stage`. And during `Automated Agent Stage`, once an Intent with Intent.live_agent_handoff is triggered, conversation will transfer to Assist Stage.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specific conversation.</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">Returns the list of all conversations in the specified project.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</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="complete">complete(name, body=None, x__xgafv=None)</code>
  <pre>Completes the specified conversation. Finished conversations are purged from the database after 30 days.

Args:
  name: string, Required. Resource identifier of the conversation to close. Format: `projects//locations//conversations/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for Conversations.CompleteConversation.
}

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

Returns:
  An object of the form:

    { # Represents a conversation. A conversation is an interaction between an agent, including live agents and Dialogflow agents, and a support customer. Conversations can include phone calls and text-based chat sessions.
  &quot;conversationProfile&quot;: &quot;A String&quot;, # Required. The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`.
  &quot;conversationStage&quot;: &quot;A String&quot;, # Optional. The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was finished.
  &quot;ingestedContextReferences&quot;: { # Output only. The context reference updates provided by external systems.
    &quot;a_key&quot;: { # Represents a piece of ingested context information.
      &quot;contextContents&quot;: [ # Required. The list of content updates for a context reference.
        { # Contents ingested.
          &quot;answerRecord&quot;: &quot;A String&quot;, # If the context content was generated from a tool call, specify the answer record associated with the tool call. Format: `projects//locations//answerRecords/`.
          &quot;content&quot;: &quot;A String&quot;, # Required. The information ingested in a single request.
          &quot;contentFormat&quot;: &quot;A String&quot;, # Required. The format of the ingested string.
          &quot;ingestionTime&quot;: &quot;A String&quot;, # Output only. The time when this information was incorporated into the relevant context reference.
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the context reference was first created.
      &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the information ingested, defaults to &quot;en-US&quot; if not set.
      &quot;updateMode&quot;: &quot;A String&quot;, # Required. The mode in which context reference contents are updated.
    },
  },
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The current state of the Conversation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The unique identifier of this conversation. Format: `projects//locations//conversations/`.
  &quot;phoneNumber&quot;: { # Represents a phone number for telephony integration. It allows for connecting a particular conversation over telephony. # Output only. Required if the conversation is to be connected over telephony.
    &quot;countryCode&quot;: 42, # Output only. Desired country code for the phone number.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Output only. The phone number to connect to this conversation.
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was started.
  &quot;telephonyConnectionInfo&quot;: { # The information about phone calls connected via phone gateway to the conversation. # Output only. The telephony connection information.
    &quot;dialedNumber&quot;: &quot;A String&quot;, # Output only. The number dialed to connect this call in E.164 format.
    &quot;extraMimeContents&quot;: [ # Output only. The mime content from the initial SIP INVITE.
      { # The mime content from the initial SIP INVITE.
        &quot;content&quot;: &quot;A String&quot;, # Optional. The content payload.
        &quot;mimeType&quot;: &quot;A String&quot;, # Optional. The mime type of the content.
      },
    ],
    &quot;sdp&quot;: &quot;A String&quot;, # Optional. SDP of the call. It&#x27;s initially the SDP answer to the incoming call, but maybe later updated for the purpose of making the link active, etc.
    &quot;sipHeaders&quot;: [ # Output only. The SIP headers from the initial SIP INVITE.
      { # The SIP headers from the initial SIP INVITE.
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the header.
        &quot;value&quot;: &quot;A String&quot;, # Optional. The value of the header.
      },
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, conversationId=None, x__xgafv=None)</code>
  <pre>Creates a new conversation. Conversations are auto-completed after 24 hours. Conversation Lifecycle: There are two stages during a conversation: Automated Agent Stage and Assist Stage. For Automated Agent Stage, there will be a dialogflow agent responding to user queries. For Assist Stage, there&#x27;s no dialogflow agent responding to user queries. But we will provide suggestions which are generated from conversation. If Conversation.conversation_profile is configured for a dialogflow agent, conversation will start from `Automated Agent Stage`, otherwise, it will start from `Assist Stage`. And during `Automated Agent Stage`, once an Intent with Intent.live_agent_handoff is triggered, conversation will transfer to Assist Stage.

Args:
  parent: string, Required. Resource identifier of the project creating the conversation. Format: `projects//locations/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a conversation. A conversation is an interaction between an agent, including live agents and Dialogflow agents, and a support customer. Conversations can include phone calls and text-based chat sessions.
  &quot;conversationProfile&quot;: &quot;A String&quot;, # Required. The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`.
  &quot;conversationStage&quot;: &quot;A String&quot;, # Optional. The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was finished.
  &quot;ingestedContextReferences&quot;: { # Output only. The context reference updates provided by external systems.
    &quot;a_key&quot;: { # Represents a piece of ingested context information.
      &quot;contextContents&quot;: [ # Required. The list of content updates for a context reference.
        { # Contents ingested.
          &quot;answerRecord&quot;: &quot;A String&quot;, # If the context content was generated from a tool call, specify the answer record associated with the tool call. Format: `projects//locations//answerRecords/`.
          &quot;content&quot;: &quot;A String&quot;, # Required. The information ingested in a single request.
          &quot;contentFormat&quot;: &quot;A String&quot;, # Required. The format of the ingested string.
          &quot;ingestionTime&quot;: &quot;A String&quot;, # Output only. The time when this information was incorporated into the relevant context reference.
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the context reference was first created.
      &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the information ingested, defaults to &quot;en-US&quot; if not set.
      &quot;updateMode&quot;: &quot;A String&quot;, # Required. The mode in which context reference contents are updated.
    },
  },
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The current state of the Conversation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The unique identifier of this conversation. Format: `projects//locations//conversations/`.
  &quot;phoneNumber&quot;: { # Represents a phone number for telephony integration. It allows for connecting a particular conversation over telephony. # Output only. Required if the conversation is to be connected over telephony.
    &quot;countryCode&quot;: 42, # Output only. Desired country code for the phone number.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Output only. The phone number to connect to this conversation.
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was started.
  &quot;telephonyConnectionInfo&quot;: { # The information about phone calls connected via phone gateway to the conversation. # Output only. The telephony connection information.
    &quot;dialedNumber&quot;: &quot;A String&quot;, # Output only. The number dialed to connect this call in E.164 format.
    &quot;extraMimeContents&quot;: [ # Output only. The mime content from the initial SIP INVITE.
      { # The mime content from the initial SIP INVITE.
        &quot;content&quot;: &quot;A String&quot;, # Optional. The content payload.
        &quot;mimeType&quot;: &quot;A String&quot;, # Optional. The mime type of the content.
      },
    ],
    &quot;sdp&quot;: &quot;A String&quot;, # Optional. SDP of the call. It&#x27;s initially the SDP answer to the incoming call, but maybe later updated for the purpose of making the link active, etc.
    &quot;sipHeaders&quot;: [ # Output only. The SIP headers from the initial SIP INVITE.
      { # The SIP headers from the initial SIP INVITE.
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the header.
        &quot;value&quot;: &quot;A String&quot;, # Optional. The value of the header.
      },
    ],
  },
}

  conversationId: string, Optional. Identifier of the conversation. Generally it&#x27;s auto generated by Google. Only set it if you cannot wait for the response to return a auto-generated one to you. The conversation ID must be compliant with the regression formula `a-zA-Z*` with the characters length in range of [3,64]. If the field is provided, the caller is responsible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a conversation. A conversation is an interaction between an agent, including live agents and Dialogflow agents, and a support customer. Conversations can include phone calls and text-based chat sessions.
  &quot;conversationProfile&quot;: &quot;A String&quot;, # Required. The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`.
  &quot;conversationStage&quot;: &quot;A String&quot;, # Optional. The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was finished.
  &quot;ingestedContextReferences&quot;: { # Output only. The context reference updates provided by external systems.
    &quot;a_key&quot;: { # Represents a piece of ingested context information.
      &quot;contextContents&quot;: [ # Required. The list of content updates for a context reference.
        { # Contents ingested.
          &quot;answerRecord&quot;: &quot;A String&quot;, # If the context content was generated from a tool call, specify the answer record associated with the tool call. Format: `projects//locations//answerRecords/`.
          &quot;content&quot;: &quot;A String&quot;, # Required. The information ingested in a single request.
          &quot;contentFormat&quot;: &quot;A String&quot;, # Required. The format of the ingested string.
          &quot;ingestionTime&quot;: &quot;A String&quot;, # Output only. The time when this information was incorporated into the relevant context reference.
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the context reference was first created.
      &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the information ingested, defaults to &quot;en-US&quot; if not set.
      &quot;updateMode&quot;: &quot;A String&quot;, # Required. The mode in which context reference contents are updated.
    },
  },
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The current state of the Conversation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The unique identifier of this conversation. Format: `projects//locations//conversations/`.
  &quot;phoneNumber&quot;: { # Represents a phone number for telephony integration. It allows for connecting a particular conversation over telephony. # Output only. Required if the conversation is to be connected over telephony.
    &quot;countryCode&quot;: 42, # Output only. Desired country code for the phone number.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Output only. The phone number to connect to this conversation.
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was started.
  &quot;telephonyConnectionInfo&quot;: { # The information about phone calls connected via phone gateway to the conversation. # Output only. The telephony connection information.
    &quot;dialedNumber&quot;: &quot;A String&quot;, # Output only. The number dialed to connect this call in E.164 format.
    &quot;extraMimeContents&quot;: [ # Output only. The mime content from the initial SIP INVITE.
      { # The mime content from the initial SIP INVITE.
        &quot;content&quot;: &quot;A String&quot;, # Optional. The content payload.
        &quot;mimeType&quot;: &quot;A String&quot;, # Optional. The mime type of the content.
      },
    ],
    &quot;sdp&quot;: &quot;A String&quot;, # Optional. SDP of the call. It&#x27;s initially the SDP answer to the incoming call, but maybe later updated for the purpose of making the link active, etc.
    &quot;sipHeaders&quot;: [ # Output only. The SIP headers from the initial SIP INVITE.
      { # The SIP headers from the initial SIP INVITE.
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the header.
        &quot;value&quot;: &quot;A String&quot;, # Optional. The value of the header.
      },
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieves the specific conversation.

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

Returns:
  An object of the form:

    { # Represents a conversation. A conversation is an interaction between an agent, including live agents and Dialogflow agents, and a support customer. Conversations can include phone calls and text-based chat sessions.
  &quot;conversationProfile&quot;: &quot;A String&quot;, # Required. The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`.
  &quot;conversationStage&quot;: &quot;A String&quot;, # Optional. The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was finished.
  &quot;ingestedContextReferences&quot;: { # Output only. The context reference updates provided by external systems.
    &quot;a_key&quot;: { # Represents a piece of ingested context information.
      &quot;contextContents&quot;: [ # Required. The list of content updates for a context reference.
        { # Contents ingested.
          &quot;answerRecord&quot;: &quot;A String&quot;, # If the context content was generated from a tool call, specify the answer record associated with the tool call. Format: `projects//locations//answerRecords/`.
          &quot;content&quot;: &quot;A String&quot;, # Required. The information ingested in a single request.
          &quot;contentFormat&quot;: &quot;A String&quot;, # Required. The format of the ingested string.
          &quot;ingestionTime&quot;: &quot;A String&quot;, # Output only. The time when this information was incorporated into the relevant context reference.
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the context reference was first created.
      &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the information ingested, defaults to &quot;en-US&quot; if not set.
      &quot;updateMode&quot;: &quot;A String&quot;, # Required. The mode in which context reference contents are updated.
    },
  },
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The current state of the Conversation.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The unique identifier of this conversation. Format: `projects//locations//conversations/`.
  &quot;phoneNumber&quot;: { # Represents a phone number for telephony integration. It allows for connecting a particular conversation over telephony. # Output only. Required if the conversation is to be connected over telephony.
    &quot;countryCode&quot;: 42, # Output only. Desired country code for the phone number.
    &quot;phoneNumber&quot;: &quot;A String&quot;, # Output only. The phone number to connect to this conversation.
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was started.
  &quot;telephonyConnectionInfo&quot;: { # The information about phone calls connected via phone gateway to the conversation. # Output only. The telephony connection information.
    &quot;dialedNumber&quot;: &quot;A String&quot;, # Output only. The number dialed to connect this call in E.164 format.
    &quot;extraMimeContents&quot;: [ # Output only. The mime content from the initial SIP INVITE.
      { # The mime content from the initial SIP INVITE.
        &quot;content&quot;: &quot;A String&quot;, # Optional. The content payload.
        &quot;mimeType&quot;: &quot;A String&quot;, # Optional. The mime type of the content.
      },
    ],
    &quot;sdp&quot;: &quot;A String&quot;, # Optional. SDP of the call. It&#x27;s initially the SDP answer to the incoming call, but maybe later updated for the purpose of making the link active, etc.
    &quot;sipHeaders&quot;: [ # Output only. The SIP headers from the initial SIP INVITE.
      { # The SIP headers from the initial SIP INVITE.
        &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the header.
        &quot;value&quot;: &quot;A String&quot;, # Optional. The value of the header.
      },
    ],
  },
}</pre>
</div>

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

Args:
  parent: string, Required. The project from which to list all conversation. Format: `projects//locations/`. (required)
  filter: string, Optional. A filter expression that filters conversations listed in the response. Only `lifecycle_state` can be filtered on in this way. For example, the following expression only returns `COMPLETED` conversations: `lifecycle_state = &quot;COMPLETED&quot;` For more information about filtering, see [API Filtering](https://aip.dev/160).
  pageSize: integer, Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.
  pageToken: string, Optional. The next_page_token value returned from a previous list request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for Conversations.ListConversations.
  &quot;conversations&quot;: [ # The list of conversations. There will be a maximum number of items returned based on the page_size field in the request.
    { # Represents a conversation. A conversation is an interaction between an agent, including live agents and Dialogflow agents, and a support customer. Conversations can include phone calls and text-based chat sessions.
      &quot;conversationProfile&quot;: &quot;A String&quot;, # Required. The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`.
      &quot;conversationStage&quot;: &quot;A String&quot;, # Optional. The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.
      &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was finished.
      &quot;ingestedContextReferences&quot;: { # Output only. The context reference updates provided by external systems.
        &quot;a_key&quot;: { # Represents a piece of ingested context information.
          &quot;contextContents&quot;: [ # Required. The list of content updates for a context reference.
            { # Contents ingested.
              &quot;answerRecord&quot;: &quot;A String&quot;, # If the context content was generated from a tool call, specify the answer record associated with the tool call. Format: `projects//locations//answerRecords/`.
              &quot;content&quot;: &quot;A String&quot;, # Required. The information ingested in a single request.
              &quot;contentFormat&quot;: &quot;A String&quot;, # Required. The format of the ingested string.
              &quot;ingestionTime&quot;: &quot;A String&quot;, # Output only. The time when this information was incorporated into the relevant context reference.
            },
          ],
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time the context reference was first created.
          &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the information ingested, defaults to &quot;en-US&quot; if not set.
          &quot;updateMode&quot;: &quot;A String&quot;, # Required. The mode in which context reference contents are updated.
        },
      },
      &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The current state of the Conversation.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The unique identifier of this conversation. Format: `projects//locations//conversations/`.
      &quot;phoneNumber&quot;: { # Represents a phone number for telephony integration. It allows for connecting a particular conversation over telephony. # Output only. Required if the conversation is to be connected over telephony.
        &quot;countryCode&quot;: 42, # Output only. Desired country code for the phone number.
        &quot;phoneNumber&quot;: &quot;A String&quot;, # Output only. The phone number to connect to this conversation.
      },
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time the conversation was started.
      &quot;telephonyConnectionInfo&quot;: { # The information about phone calls connected via phone gateway to the conversation. # Output only. The telephony connection information.
        &quot;dialedNumber&quot;: &quot;A String&quot;, # Output only. The number dialed to connect this call in E.164 format.
        &quot;extraMimeContents&quot;: [ # Output only. The mime content from the initial SIP INVITE.
          { # The mime content from the initial SIP INVITE.
            &quot;content&quot;: &quot;A String&quot;, # Optional. The content payload.
            &quot;mimeType&quot;: &quot;A String&quot;, # Optional. The mime type of the content.
          },
        ],
        &quot;sdp&quot;: &quot;A String&quot;, # Optional. SDP of the call. It&#x27;s initially the SDP answer to the incoming call, but maybe later updated for the purpose of making the link active, etc.
        &quot;sipHeaders&quot;: [ # Output only. The SIP headers from the initial SIP INVITE.
          { # The SIP headers from the initial SIP INVITE.
            &quot;name&quot;: &quot;A String&quot;, # Optional. The name of the header.
            &quot;value&quot;: &quot;A String&quot;, # Optional. The value of the header.
          },
        ],
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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>