The Agent Assist Article Suggestion feature follows a conversation between a human agent and an end-user and provides the human agent with relevant document suggestions. A human agent can examine these suggestions while the conversation proceeds and make a decision about which documents to read or to share with the end-user. You can use Article Suggestion to help a human agent understand and resolve end-user issues while the human agent and end-user are in a conversation.
Agent Assist provides baseline Article Suggestion models that you can use to suggest articles to your agents. Optionally, you can train a custom model using your own uploaded conversation data to improve performance. If you want to train a custom suggestion model for use with Article Suggestion, contact your Google representative.
This document walks you through the process of using the API to implement Article Suggestion and get suggestions from this feature during runtime. You have the option of using the Agent Assist Console to test your Article Suggestion results during design-time, but you must call the API directly during runtime. See the tutorials section for details about testing feature performance using the Agent Assist Console.
Before you begin
Complete the following before starting this guide:
- Enable the Dialogflow API for your Google Cloud project.
Configure a conversation profile
In order to get suggestions from Agent Assist you must create a knowledge base containing your uploaded documents and configure a conversation profile. You can also perform these actions using the Agent Assist Console if you would prefer not to call the API directly.
Create a knowledge base
Before you can begin uploading documents you must first create a knowledge base
to put them in. To create a knowledge base, call the create
method on the
KnowledgeBase
type.
REST
Before using any of the request data, make the following replacements:
- PROJECT_ID: your GCP project ID
- KNOWLEDGE_BASE_DISPLAY_NAME: desired knowledge base name
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/knowledgeBases
Request JSON body:
{ "displayName": "KNOWLEDGE_BASE_DISPLAY_NAME" }
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "name": "projects/PROJECT_ID/knowledgeBases/NDA4MTM4NzE2MjMwNDUxMjAwMA", "displayName": "KNOWLEDGE_BASE_DISPLAY_NAME" }
The path segment after knowledgeBases
contains your new knowledge base ID.
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Create a knowledge document
You can now add documents to the knowledge base. To create a document in the
knowledge base, call the create
method on the Document
type.
Set
KnowledgeType
to ARTICLE_SUGGESTION
. This example uses an HTML file with return order
information
that was uploaded to a publicly shared
Cloud Storage bucket. When you set
up Article Suggestion in your own system, documents must be in one of the
following formats. See the knowledge documents
documentation for more information
about document best practices.
Knowledge document formats:
- A file stored in a Cloud Storage bucket. You can specify the path when you call the API.
- The text contents of a document, which you can send in an API request.
- A public URL.
REST
Before using any of the request data, make the following replacements:
- PROJECT_ID: your GCP project ID
- KNOWLEDGE_BASE_ID: your knowledge base ID returned from previous request
- DOCUMENT_DISPLAY_NAME: desired knowledge document name
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents
Request JSON body:
{ "displayName": "DOCUMENT_DISPLAY_NAME", "mimeType": "text/html", "knowledgeTypes": "ARTICLE_SUGGESTION", "contentUri": "gs://agent-assist-public-examples/public_article_suggestion_example_returns.html" }
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "name": "projects/PROJECT_ID/operations/ks-add_document-MzA5NTY2MTc5Mzg2Mzc5NDY4OA" }
The response is a long-running operation, which you can poll to check for completion.
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Create a conversation profile
A conversation profile configures a set of parameters that control the
suggestions made to an agent during a conversation. The following steps create a
ConversationProfile
with a
HumanAgentAssistantConfig
object. You can also perform these actions using the Agent Assist
Console if you would prefer not to
call the API directly.
We recommend that you set an initial confidence threshold of 0.44 (0.1 if you are using the legacy baseline model). You can increase the threshold beyond the recommended range if necessary. Increasing the threshold results in higher accuracy and lower coverage results (fewer suggestions); decreasing the threshold results in lower accuracy and higher coverage (more suggestions).
Inline suggestions are enabled by default. Optionally, you can enable Cloud Pub/Sub notifications when you configure the conversation profile.
REST
To create a conversation profile, call thecreate
method on the
ConversationProfile
resource.
noSmallTalk
: If true
, suggestions will not be triggered after small talk
messages (such as "hi", "how are you", and so on). If false
, suggestions will
be triggered after small talk messages.
onlyEndUser
: If true
, suggestions will be triggered only after end-user
messages. If false
, suggestions will be triggered after both end-user and
human agent messages.
Before using any of the request data, make the following replacements:
- PROJECT_ID: your GCP project ID
- KNOWLEDGE_BASE_ID: your knowledge base ID
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversationProfiles
Request JSON body:
{ "name": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID", "displayName": "my-conversation-profile-display-name", "humanAgentAssistantConfig": { "notificationConfig": {}, "humanAgentSuggestionConfig": { "featureConfigs": [ { "enableInlineSuggestion": true, "SuggestionTriggerSettings": { "noSmallTalk": true, "onlyEndUser": true, }, "suggestionFeature": { "type": "ARTICLE_SUGGESTION" }, "queryConfig": { "knowledgeBaseQuerySource": { "knowledgeBases": [ "projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID" ] } } } ] } }, "sttConfig": {}, "languageCode": "en-US" }
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "name": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID", "displayName": "my-conversation-profile-display-name", "humanAgentAssistantConfig": { ... } }
The path segment after conversationProfiles
contains your new conversation
profile ID.
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
(Optional) Set security settings
You have the option of setting security parameters to address issues such as
data redaction and data retention. To do this, you must create a
SecuritySettings
resource, then link it to a conversation profile using the securitySettings
field.
Security settings added to a conversation profile affect the behavior of Agent Assist text messages only. The behavior of the Dialogflow interaction history is controlled by Dialogflow's security settings, which you can set using the Dialogflow CX Console.
Handle conversations at runtime
Create a conversation
When a dialog begins between an end-user and a human or virtual agent, you create a conversation. In order to see suggestions, you must also create both an end-user participant and a human agent participant and add them to the conversation. The following sections walk you through this process.
First, you must create a conversation:
REST
To create a conversation, call thecreate
method on the
Conversation
resource.
Before using any of the request data, make the following replacements:
- PROJECT_ID: your Cloud project ID
- LOCATION_ID: your location ID
- CONVERSATION_PROFILE_ID: the ID you received when creating the conversation profile
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations
Request JSON body:
{ "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID", }
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID", "lifecycleState": "IN_PROGRESS", "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID", "startTime": "2018-11-05T21:05:45.622Z" }
The path segment after conversations
contains your new conversation ID.
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Create an end-user participant
You must add both end-user and human agent participants to the conversation in order to see suggestions. First, add the end-user participant to the conversation:
REST
To create an end-user participant, call the create
method on the
Participant
resource.
Before using any of the request data, make the following replacements:
- PROJECT_ID: your Cloud project ID
- LOCATION_ID: your location ID
- CONVERSATION_ID: your conversation ID
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants
Request JSON body:
{ "role": "END_USER", }
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID", "role": "END_USER" }
The path segment after participants
contains your new end-user participant ID.
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Create a human agent participant
Add a human agent participant to the conversation:
REST
To create a human agent participant, call the create
method on the
Participant
resource.
Before using any of the request data, make the following replacements:
- PROJECT_ID: your Cloud project ID
- LOCATION_ID: your location ID
- CONVERSATION_ID: your conversation ID
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants
Request JSON body:
{ "role": "HUMAN_AGENT", }
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID", "role": "HUMAN_AGENT" }
The path segment after participants
contains your new human agent participant
ID.
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Add and analyze a message from the human agent
Each time either participant types a message in the conversation, you need to send that message to the API for processing. Agent Assist bases its suggestions on analysis of human agent and end-user messages. In the following example, the human agent starts the conversation by asking "How may I help you?". No suggestions are returned yet in the response.
REST
To add and analyze a human agent message in the conversation, call the
analyzeContent
method on the
Participant
resource.
Before using any of the request data, make the following replacements:
- PROJECT_ID: your GCP project ID
- CONVERSATION_ID: your conversation ID
- PARTICIPANT_ID: your human agent participant ID
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent
Request JSON body:
{ "textInput": { "text": "How may I help you?", "languageCode": "en-US" } }
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "message": { "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID", "content": "How may I help you?", "languageCode": "en-US", "participant": "PARTICIPANT_ID", "participantRole": "HUMAN_AGENT", "createTime": "2020-02-13T00:01:30.683Z" }, "humanAgentSuggestionResults": [ { "suggestArticlesResponse": { "latestMessage": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID", "contextSize": 1 } } ] } } ] }
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Add a message from the end-user and get suggestions
In response to the human agent, the end-user says "I want to return my order." This time, the API response contains a suggested document with its associated confidence score. Earlier in this tutorial we added one knowledge document to the knowledge base, and that document was returned. Confidence scores range from 0 to 1; higher values indicate a higher likelihood that the document is relevant to the conversation. A snippet containing the first 100 characters of the document is also returned. The snippet can help a human agent quickly determine whether the document is useful. We recommend that you provide this information to your human agent, who might choose to share the recommended document with the end-user.
REST
To add and analyze an end-user message for the conversation, call the
analyzeContent
method on the
Participant
resource.
Before using any of the request data, make the following replacements:
- PROJECT_ID: your GCP project ID
- CONVERSATION_ID: your conversation ID
- PARTICIPANT_ID: your end-user participant ID
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent
Request JSON body:
{ "textInput": { "text": "I want to return my order.", "languageCode": "en-US" } }
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "message": { "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID", "content": "I want to return my order.", "languageCode": "en-US", "participant": "PARTICIPANT_ID", "participantRole": "END_USER", "createTime": "2020-02-13T00:07:35.925Z" }, "humanAgentSuggestionResults": [ { "suggestArticlesResponse": { "articleAnswers": [ { "title": "Return an order", "uri": "gs://agent-assist-public-examples/public_article_suggestion_example_returns.html", "snippets": [ "\u003cb\u003eReturn\u003c/b\u003e an \u003cb\u003eorder\u003c/b\u003e. Follow the steps below for Made-up Store \u003cb\u003ereturns\u003c/b\u003e. At this time, \nwe don't offer exchanges. In most cases, you can drop off \u003cb\u003ereturns\u003c/b\u003e at any Made-up\n ..." ], "metadata": { "title": "Return an order", "snippet": "\n \n\n\u003ch1\u003eReturn an order\u003c/h1\u003e \nFollow the steps below for Made-up Store returns. At this time, we do...", "document_display_name": "my-kdoc" }, "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID" } ], "latestMessage": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID", "contextSize": 2 } } ] }
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Complete the conversation
When the conversation ends, use the API to complete the conversation.
REST
To complete the conversation, call thecomplete
method on the
conversations
resource.
Before using any of the request data, make the following replacements:
- PROJECT_ID: your GCP project ID
- CONVERSATION_ID: the ID you received when creating the conversation
HTTP method and URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID:complete
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{ "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID", "lifecycleState": "COMPLETED", "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID", "startTime": "2018-11-05T21:05:45.622Z", "endTime": "2018-11-06T03:50:26.930Z" }
Python
To authenticate to Agent Assist, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
API request options
The sections above show how to create a simple
ConversationProfile
in order to receive suggestions. The following sections outline some optional
functionalities that you can implement during a conversation.
Pub/Sub suggestion notifications
In the sections earlier, the
ConversationProfile
was created with only a human agent assistant. During the conversation you
needed to call the API to receive suggestions after each message was added to
the conversation. If you prefer to receive notification events for suggestions,
you can set the notificationConfig
field when creating the conversation
profile. This option uses Cloud Pub/Sub to send suggestion
notifications to your application as the conversation proceeds and new
suggestions are available.