<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="dialogflow_v2.html">Dialogflow API</a> . <a href="dialogflow_v2.projects.html">projects</a> . <a href="dialogflow_v2.projects.locations.html">locations</a> . <a href="dialogflow_v2.projects.locations.answerRecords.html">answerRecords</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="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the list of all answer records in the specified project in reverse chronological order.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified answer record.</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="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns the list of all answer records in the specified project in reverse chronological order.

Args:
  parent: string, Required. The project to list all answer records for in reverse chronological order. Format: `projects//locations/`. (required)
  filter: string, Required. Filters to restrict results to specific answer records. Filter on answer record type. Currently predicates on `type` is supported, valid values are `ARTICLE_ANSWER`, `FAQ_ANSWER`. For more information about filtering, see [API Filtering](https://aip.dev/160).
  pageSize: integer, Optional. The maximum number of records to return in a single page. The server may return fewer records than this. If unspecified, we use 10. The maximum is 100.
  pageToken: string, Optional. The ListAnswerRecordsResponse.next_page_token value returned from a previous list request used to continue listing on the next page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for AnswerRecords.ListAnswerRecords.
  &quot;answerRecords&quot;: [ # The list of answer records.
    { # Answer records are records to manage answer history and feedbacks for Dialogflow. Currently, answer record includes: - human agent assistant article suggestion - human agent assistant faq article It doesn&#x27;t include: - `DetectIntent` intent matching - `DetectIntent` knowledge Answer records are not related to the conversation history in the Dialogflow Console. A Record is generated even when the end-user disables conversation history in the console. Records are created when there&#x27;s a human agent assistant suggestion generated. A typical workflow for customers provide feedback to an answer is: 1. For human agent assistant, customers get suggestion via ListSuggestions API. Together with the answers, AnswerRecord.name are returned to the customers. 2. The customer uses the AnswerRecord.name to call the UpdateAnswerRecord method to send feedback about a specific answer that they believe is wrong.
      &quot;agentAssistantRecord&quot;: { # Represents a record of a human agent assist answer. # Output only. The record for human agent assistant.
        &quot;articleSuggestionAnswer&quot;: { # Represents article answer. # Output only. The article suggestion answer.
          &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
          &quot;confidence&quot;: 3.14, # Article match confidence. The system&#x27;s confidence score that this article is a good match for this conversation, as a value from 0.0 (completely uncertain) to 1.0 (completely certain).
          &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;snippets&quot;: [ # Article snippets.
            &quot;A String&quot;,
          ],
          &quot;title&quot;: &quot;A String&quot;, # The article title.
          &quot;uri&quot;: &quot;A String&quot;, # The article URI.
        },
        &quot;faqAnswer&quot;: { # Represents answer from &quot;frequently asked questions&quot;. # Output only. The FAQ answer.
          &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document.
          &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
          &quot;confidence&quot;: 3.14, # The system&#x27;s confidence score that this Knowledge answer is a good match for this conversational query, range from 0.0 (completely uncertain) to 1.0 (completely certain).
          &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;question&quot;: &quot;A String&quot;, # The corresponding FAQ question.
          &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//locations//agent/knowledgeBases//documents/`.
        },
      },
      &quot;answerFeedback&quot;: { # Represents feedback the customer has about the quality &amp; correctness of a certain answer in a conversation. # Required. The AnswerFeedback for this record. You can set this with AnswerRecords.UpdateAnswerRecord in order to give us feedback about this answer.
        &quot;agentAssistantDetailFeedback&quot;: { # Detail feedback of Agent Assist result. # Detail feedback of agent assist suggestions.
          &quot;answerRelevance&quot;: &quot;A String&quot;, # Optional. Whether or not the suggested answer is relevant. For example: * Query: &quot;Can I change my mailing address?&quot; * Suggested document says: &quot;Items must be returned/exchanged within 60 days of the purchase date.&quot; * answer_relevance: AnswerRelevance.IRRELEVANT
          &quot;documentCorrectness&quot;: &quot;A String&quot;, # Optional. Whether or not the information in the document is correct. For example: * Query: &quot;Can I return the package in 2 days once received?&quot; * Suggested document says: &quot;Items must be returned/exchanged within 60 days of the purchase date.&quot; * Ground truth: &quot;No return or exchange is allowed.&quot; * [document_correctness]: INCORRECT
          &quot;documentEfficiency&quot;: &quot;A String&quot;, # Optional. Whether or not the suggested document is efficient. For example, if the document is poorly written, hard to understand, hard to use or too long to find useful information, document_efficiency is DocumentEfficiency.INEFFICIENT.
        },
        &quot;clickTime&quot;: &quot;A String&quot;, # Time when the answer/item was clicked.
        &quot;clicked&quot;: True or False, # Indicates whether the answer/item was clicked by the human agent or not. Default to false.
        &quot;correctnessLevel&quot;: &quot;A String&quot;, # The correctness level of the specific answer.
        &quot;displayTime&quot;: &quot;A String&quot;, # Time when the answer/item was displayed.
        &quot;displayed&quot;: True or False, # Indicates whether the answer/item was displayed to the human agent in the agent desktop UI. Default to false.
      },
      &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this answer record. Format: `projects//locations//answerRecords/`.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve next page of results. Or empty if there are no more results. Pass this value in the ListAnswerRecordsRequest.page_token field in the subsequent call to `ListAnswerRecords` method to retrieve the next page of results.
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified answer record.

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

{ # Answer records are records to manage answer history and feedbacks for Dialogflow. Currently, answer record includes: - human agent assistant article suggestion - human agent assistant faq article It doesn&#x27;t include: - `DetectIntent` intent matching - `DetectIntent` knowledge Answer records are not related to the conversation history in the Dialogflow Console. A Record is generated even when the end-user disables conversation history in the console. Records are created when there&#x27;s a human agent assistant suggestion generated. A typical workflow for customers provide feedback to an answer is: 1. For human agent assistant, customers get suggestion via ListSuggestions API. Together with the answers, AnswerRecord.name are returned to the customers. 2. The customer uses the AnswerRecord.name to call the UpdateAnswerRecord method to send feedback about a specific answer that they believe is wrong.
  &quot;agentAssistantRecord&quot;: { # Represents a record of a human agent assist answer. # Output only. The record for human agent assistant.
    &quot;articleSuggestionAnswer&quot;: { # Represents article answer. # Output only. The article suggestion answer.
      &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
      &quot;confidence&quot;: 3.14, # Article match confidence. The system&#x27;s confidence score that this article is a good match for this conversation, as a value from 0.0 (completely uncertain) to 1.0 (completely certain).
      &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;snippets&quot;: [ # Article snippets.
        &quot;A String&quot;,
      ],
      &quot;title&quot;: &quot;A String&quot;, # The article title.
      &quot;uri&quot;: &quot;A String&quot;, # The article URI.
    },
    &quot;faqAnswer&quot;: { # Represents answer from &quot;frequently asked questions&quot;. # Output only. The FAQ answer.
      &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document.
      &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
      &quot;confidence&quot;: 3.14, # The system&#x27;s confidence score that this Knowledge answer is a good match for this conversational query, range from 0.0 (completely uncertain) to 1.0 (completely certain).
      &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;question&quot;: &quot;A String&quot;, # The corresponding FAQ question.
      &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//locations//agent/knowledgeBases//documents/`.
    },
  },
  &quot;answerFeedback&quot;: { # Represents feedback the customer has about the quality &amp; correctness of a certain answer in a conversation. # Required. The AnswerFeedback for this record. You can set this with AnswerRecords.UpdateAnswerRecord in order to give us feedback about this answer.
    &quot;agentAssistantDetailFeedback&quot;: { # Detail feedback of Agent Assist result. # Detail feedback of agent assist suggestions.
      &quot;answerRelevance&quot;: &quot;A String&quot;, # Optional. Whether or not the suggested answer is relevant. For example: * Query: &quot;Can I change my mailing address?&quot; * Suggested document says: &quot;Items must be returned/exchanged within 60 days of the purchase date.&quot; * answer_relevance: AnswerRelevance.IRRELEVANT
      &quot;documentCorrectness&quot;: &quot;A String&quot;, # Optional. Whether or not the information in the document is correct. For example: * Query: &quot;Can I return the package in 2 days once received?&quot; * Suggested document says: &quot;Items must be returned/exchanged within 60 days of the purchase date.&quot; * Ground truth: &quot;No return or exchange is allowed.&quot; * [document_correctness]: INCORRECT
      &quot;documentEfficiency&quot;: &quot;A String&quot;, # Optional. Whether or not the suggested document is efficient. For example, if the document is poorly written, hard to understand, hard to use or too long to find useful information, document_efficiency is DocumentEfficiency.INEFFICIENT.
    },
    &quot;clickTime&quot;: &quot;A String&quot;, # Time when the answer/item was clicked.
    &quot;clicked&quot;: True or False, # Indicates whether the answer/item was clicked by the human agent or not. Default to false.
    &quot;correctnessLevel&quot;: &quot;A String&quot;, # The correctness level of the specific answer.
    &quot;displayTime&quot;: &quot;A String&quot;, # Time when the answer/item was displayed.
    &quot;displayed&quot;: True or False, # Indicates whether the answer/item was displayed to the human agent in the agent desktop UI. Default to false.
  },
  &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this answer record. Format: `projects//locations//answerRecords/`.
}

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

Returns:
  An object of the form:

    { # Answer records are records to manage answer history and feedbacks for Dialogflow. Currently, answer record includes: - human agent assistant article suggestion - human agent assistant faq article It doesn&#x27;t include: - `DetectIntent` intent matching - `DetectIntent` knowledge Answer records are not related to the conversation history in the Dialogflow Console. A Record is generated even when the end-user disables conversation history in the console. Records are created when there&#x27;s a human agent assistant suggestion generated. A typical workflow for customers provide feedback to an answer is: 1. For human agent assistant, customers get suggestion via ListSuggestions API. Together with the answers, AnswerRecord.name are returned to the customers. 2. The customer uses the AnswerRecord.name to call the UpdateAnswerRecord method to send feedback about a specific answer that they believe is wrong.
  &quot;agentAssistantRecord&quot;: { # Represents a record of a human agent assist answer. # Output only. The record for human agent assistant.
    &quot;articleSuggestionAnswer&quot;: { # Represents article answer. # Output only. The article suggestion answer.
      &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
      &quot;confidence&quot;: 3.14, # Article match confidence. The system&#x27;s confidence score that this article is a good match for this conversation, as a value from 0.0 (completely uncertain) to 1.0 (completely certain).
      &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;snippets&quot;: [ # Article snippets.
        &quot;A String&quot;,
      ],
      &quot;title&quot;: &quot;A String&quot;, # The article title.
      &quot;uri&quot;: &quot;A String&quot;, # The article URI.
    },
    &quot;faqAnswer&quot;: { # Represents answer from &quot;frequently asked questions&quot;. # Output only. The FAQ answer.
      &quot;answer&quot;: &quot;A String&quot;, # The piece of text from the `source` knowledge base document.
      &quot;answerRecord&quot;: &quot;A String&quot;, # The name of answer record, in the format of &quot;projects//locations//answerRecords/&quot;
      &quot;confidence&quot;: 3.14, # The system&#x27;s confidence score that this Knowledge answer is a good match for this conversational query, range from 0.0 (completely uncertain) to 1.0 (completely certain).
      &quot;metadata&quot;: { # A map that contains metadata about the answer and the document from which it originates.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;question&quot;: &quot;A String&quot;, # The corresponding FAQ question.
      &quot;source&quot;: &quot;A String&quot;, # Indicates which Knowledge Document this answer was extracted from. Format: `projects//locations//agent/knowledgeBases//documents/`.
    },
  },
  &quot;answerFeedback&quot;: { # Represents feedback the customer has about the quality &amp; correctness of a certain answer in a conversation. # Required. The AnswerFeedback for this record. You can set this with AnswerRecords.UpdateAnswerRecord in order to give us feedback about this answer.
    &quot;agentAssistantDetailFeedback&quot;: { # Detail feedback of Agent Assist result. # Detail feedback of agent assist suggestions.
      &quot;answerRelevance&quot;: &quot;A String&quot;, # Optional. Whether or not the suggested answer is relevant. For example: * Query: &quot;Can I change my mailing address?&quot; * Suggested document says: &quot;Items must be returned/exchanged within 60 days of the purchase date.&quot; * answer_relevance: AnswerRelevance.IRRELEVANT
      &quot;documentCorrectness&quot;: &quot;A String&quot;, # Optional. Whether or not the information in the document is correct. For example: * Query: &quot;Can I return the package in 2 days once received?&quot; * Suggested document says: &quot;Items must be returned/exchanged within 60 days of the purchase date.&quot; * Ground truth: &quot;No return or exchange is allowed.&quot; * [document_correctness]: INCORRECT
      &quot;documentEfficiency&quot;: &quot;A String&quot;, # Optional. Whether or not the suggested document is efficient. For example, if the document is poorly written, hard to understand, hard to use or too long to find useful information, document_efficiency is DocumentEfficiency.INEFFICIENT.
    },
    &quot;clickTime&quot;: &quot;A String&quot;, # Time when the answer/item was clicked.
    &quot;clicked&quot;: True or False, # Indicates whether the answer/item was clicked by the human agent or not. Default to false.
    &quot;correctnessLevel&quot;: &quot;A String&quot;, # The correctness level of the specific answer.
    &quot;displayTime&quot;: &quot;A String&quot;, # Time when the answer/item was displayed.
    &quot;displayed&quot;: True or False, # Indicates whether the answer/item was displayed to the human agent in the agent desktop UI. Default to false.
  },
  &quot;name&quot;: &quot;A String&quot;, # The unique identifier of this answer record. Format: `projects//locations//answerRecords/`.
}</pre>
</div>

</body></html>