Business Messages 代理支持直接与
如需将 Business Messages 代理与 Dialogflow ES 或 Dialogflow CX 的其他功能集成,请参阅每个产品的文档。
当用户向具有 Dialogflow 集成的代理发送消息时,Business Messages 会将该用户消息传递给 Dialogflow,并在该消息的 dialogflowResponse
对象中向代理发送 Dialogflow 响应。您可以将代理配置为自动向用户发送 Dialogflow 的响应,而无需您执行任何操作。如需了解详情,请参阅自动回复。
Dialogflow 集成
您需要先启用 Dialogflow 集成,然后才能通过 Business Messages 使用基于 Dialogflow 的自动化功能。
前提条件
首先,您需要
- Business Messages 代理
- 全球区域,根语言为英语 (en) 的 Dialogflow 代理
如果您没有 Dialogflow 代理,请创建一个。
Dialogflow ES
在启用 Dialogflow ES 集成之前,您需要 Dialogflow 代理的项目 ID。如需查找项目 ID,请执行以下操作:
- 导航到 Dialogflow 控制台。
- 选择要关联到 Business Messages 的 Dialogflow 代理,然后点击代理名称旁边的齿轮图标 。
- 在 Google 项目下,记下项目 ID 值。
Dialogflow CX
在启用 Dialogflow CX 集成之前,您需要 Dialogflow 代理的项目 ID 和代理 ID。要找到这些 ID,请执行以下操作:
- 导航到 Dialogflow CX 控制台。
- 选择您的 Dialogflow 项目。
- 在代理选择器中,点击 Dialogflow 代理旁边的溢出菜单 。
- 点击复制名称。此操作会按照以下格式复制代理的全名:
projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID
。 - 记下项目 ID 和代理 ID 值。
创建集成
从
dialogflowServiceAccountEmail
获取合作伙伴的 Dialogflow 服务帐号电子邮件地址。将 PARTNER_ID 替换为您的合作伙伴 ID。cURL
# This code gets the partner. # Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/partners/get # Replace the __PARTNER_ID__ # Make sure a service account key file exists at ./service_account_key.json curl -X GET \ "https://businesscommunications.googleapis.com/v1/partners/__PARTNER_ID__" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)"
Node.js
/** * This code snippet gets a partner. * Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/partners/get * * This code is based on the https://github.com/google-business-communications/nodejs-businesscommunications Node.js * Business Communications client library. */ /** * Edit the values below: */ const PARTNER_ID = 'EDIT_HERE'; const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const businesscommunications = require('businesscommunications'); const {google} = require('googleapis'); // Initialize the Business Communications API const bcApi = new businesscommunications.businesscommunications_v1.Businesscommunications({}); // Set the scope that we need for the Business Communications API const scopes = [ 'https://www.googleapis.com/auth/businesscommunications', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); async function main() { const authClient = await initCredentials(); const partnerName = 'partners/' + PARTNER_ID; if (authClient) { // Setup the parameters for the API call const apiParams = { auth: authClient, name: partnerName, }; bcApi.partners.get(apiParams, {}, (err, response) => { if (err !== undefined && err !== null) { console.dir(err); } else { // Agent found console.log(response.data); } }); } else { console.log('Authentication failure.'); } } /** * Initializes the Google credentials for calling the * Business Messages API. */ async function initCredentials() { // Configure a JWT auth client const authClient = new google.auth.JWT( privatekey.client_email, null, privatekey.private_key, scopes, ); return new Promise(function(resolve, reject) { // Authenticate request authClient.authorize(function(err, tokens) { if (err) { reject(false); } else { resolve(authClient); } }); }); } main();
Python
"""This code gets a partner. Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/partners/get This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ from oauth2client.service_account import ServiceAccountCredentials from businesscommunications.businesscommunications_v1_client import BusinesscommunicationsV1 from businesscommunications.businesscommunications_v1_messages import ( Agent, BusinesscommunicationsPartnersGetRequest, ) # Edit the values below: PARTNER_ID = 'EDIT_HERE' SCOPES = ['https://www.googleapis.com/auth/businesscommunications'] SERVICE_ACCOUNT_FILE = './service_account_key.json' credentials = ServiceAccountCredentials.from_json_keyfile_name( SERVICE_ACCOUNT_FILE, scopes=SCOPES) client = BusinesscommunicationsV1(credentials=credentials) partners_service = BusinesscommunicationsV1.PartnersService(client) partner_name = 'partners/' + PARTNER_ID partner = partners_service.Get(BusinesscommunicationsPartnersGetRequest( name=partner_name )) print(partner)
复制服务帐号电子邮件地址。此帐号会将您的企业消息与 Dialogflow 代理连接起来。
在 Google Cloud Console 中,选择您的 Dialogflow 项目。
导航到 IAM 权限。
点击添加,然后输入新成员的服务帐号电子邮件地址。
在选择角色部分,选择 Dialogflow 控制台代理编辑器。
点击添加其他角色,然后选择 Dialogflow API 客户端。
点击保存。
将 Dialogflow 项目与 Business Messages 代理集成。
将 AUTO_RESPONSE_STATUS 替换为 ENABLED 或 DISABLED,具体取决于您是否希望 Business Messages 使用 Dialogflow 响应自动响应用户。
Dialogflow ES
cURL
# This code creates a Dialogflow ES integration. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#dialogflow_es # Replace the __BRAND_ID__, __AGENT_ID__, __DIALOGFLOW_ES_PROJECT_ID__ and __AUTO_RESPONSE_STATUS__ # Make sure a service account key file exists at ./service_account_key.json curl -X POST \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -d '{ "dialogflowEsIntegration": { "dialogflowProjectId": "__DIALOGFLOW_ES_PROJECT_ID__", "autoResponseStatus": "__AUTO_RESPONSE_STATUS__" } }'
Node.js
/** * This code snippet creates a Dialogflow ES integration. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#dialogflow_es * * This code is based on the https://github.com/google-business-communications/nodejs-businesscommunications Node.js * Business Communications client library. */ /** * Edit the values below: */ const BRAND_ID = 'EDIT_HERE'; const AGENT_ID = 'EDIT_HERE'; const DIALOGFLOW_ES_PROJECT_ID = 'EDIT_HERE' const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const businesscommunications = require('businesscommunications'); const {google} = require('googleapis'); const uuidv4 = require('uuid').v4; // Initialize the Business Communications API const bcApi = new businesscommunications.businesscommunications_v1.Businesscommunications({}); // Set the scope that we need for the Business Communications API const scopes = [ 'https://www.googleapis.com/auth/businesscommunications', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); async function main() { const authClient = await initCredentials(); const agentName = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID; if (authClient) { const integrationObject = { dialogflowEsIntegration: { dialogflowProjectId: DIALOGFLOW_ES_PROJECT_ID, autoResponseStatus: 'ENABLED' } }; // Setup the parameters for the API call const apiParams = { auth: authClient, parent: agentName, resource: integrationObject }; bcApi.brands.agents.integrations.create(apiParams, {}, (err, response) => { if (err !== undefined && err !== null) { console.dir(err); } else { // Agent created console.log(response.data); } }); } else { console.log('Authentication failure.'); } } /** * Initializes the Google credentials for calling the * Business Messages API. */ async function initCredentials() { // Configure a JWT auth client const authClient = new google.auth.JWT( privatekey.client_email, null, privatekey.private_key, scopes, ); return new Promise(function(resolve, reject) { // Authenticate request authClient.authorize(function(err, tokens) { if (err) { reject(false); } else { resolve(authClient); } }); }); } main();
Python
"""This code snippet creates a Dialogflow ES integration. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#dialogflow_es This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ from oauth2client.service_account import ServiceAccountCredentials from businesscommunications.businesscommunications_v1_client import BusinesscommunicationsV1 from businesscommunications.businesscommunications_v1_messages import ( BusinesscommunicationsBrandsAgentsIntegrationsCreateRequest, DialogflowEsIntegration ) # Edit the values below: BRAND_ID = 'EDIT_HERE' AGENT_ID = 'EDIT_HERE' DIALOGFLOW_ES_PROJECT_ID = 'EDIT_HERE' SCOPES = ['https://www.googleapis.com/auth/businesscommunications'] SERVICE_ACCOUNT_FILE = './service_account_key.json' credentials = ServiceAccountCredentials.from_json_keyfile_name( SERVICE_ACCOUNT_FILE, scopes=SCOPES) client = BusinesscommunicationsV1(credentials=credentials) integrations_service = BusinesscommunicationsV1.BrandsAgentsIntegrationsService(client) agent_name = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID integration = integrations_service.Create(BusinesscommunicationsBrandsAgentsIntegrationsCreateRequest( integration=DialogflowEsIntegration( autoResponseStatus=DialogflowEsIntegration.AutoResponseStatusValueValuesEnum.ENABLED, dialogflowProjectId=DIALOGFLOW_ES_PROJECT_ID ), parent=agent_name )) print(integration)
Dialogflow CX
cURL
# This code creates a Dialogflow CX integration. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#dialogflow_cx # Replace the __BRAND_ID__, __AGENT_ID__, __DIALOGFLOW_CX_PROJECT_ID__, __DIALOGFLOW_CX_AGENT_ID__ and __AUTO_RESPONSE_STATUS__ # Make sure a service account key file exists at ./service_account_key.json curl -X POST \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -d '{ "dialogflowCxIntegration": { "dialogflowProjectId": "__DIALOGFLOW_CX_PROJECT_ID__", "dialogflowAgentId": "__DIALOGFLOW_CX_AGENT_ID__", "autoResponseStatus": "__AUTO_RESPONSE_STATUS__" } }'
Node.js
/** * This code snippet creates a Dialogflow CX integration. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#dialogflow_cx * * This code is based on the https://github.com/google-business-communications/nodejs-businesscommunications Node.js * Business Communications client library. */ /** * Edit the values below: */ const BRAND_ID = 'EDIT_HERE'; const AGENT_ID = 'EDIT_HERE'; const DIALOGFLOW_CX_AGENT_ID = 'EDIT_HERE' const DIALOGFLOW_CX_PROJECT_ID = 'EDIT_HERE' const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const businesscommunications = require('businesscommunications'); const {google} = require('googleapis'); const uuidv4 = require('uuid').v4; // Initialize the Business Communications API const bcApi = new businesscommunications.businesscommunications_v1.Businesscommunications({}); // Set the scope that we need for the Business Communications API const scopes = [ 'https://www.googleapis.com/auth/businesscommunications', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); async function main() { const authClient = await initCredentials(); const agentName = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID; if (authClient) { const integrationObject = { dialogflowCxIntegration: { dialogflowProjectId: DIALOGFLOW_CX_PROJECT_ID, dialogflowAgentId: DIALOGFLOW_CX_AGENT_ID, autoResponseStatus: 'ENABLED' } }; // Setup the parameters for the API call const apiParams = { auth: authClient, parent: agentName, resource: integrationObject }; bcApi.brands.agents.integrations.create(apiParams, {}, (err, response) => { if (err !== undefined && err !== null) { console.dir(err); } else { // Agent created console.log(response.data); } }); } else { console.log('Authentication failure.'); } } /** * Initializes the Google credentials for calling the * Business Messages API. */ async function initCredentials() { // Configure a JWT auth client const authClient = new google.auth.JWT( privatekey.client_email, null, privatekey.private_key, scopes, ); return new Promise(function(resolve, reject) { // Authenticate request authClient.authorize(function(err, tokens) { if (err) { reject(false); } else { resolve(authClient); } }); }); } main();
Python
"""This code snippet creates a Dialogflow CX integration. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#dialogflow_cx This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ from oauth2client.service_account import ServiceAccountCredentials from businesscommunications.businesscommunications_v1_client import BusinesscommunicationsV1 from businesscommunications.businesscommunications_v1_messages import ( BusinesscommunicationsBrandsAgentsIntegrationsCreateRequest, DialogflowCxIntegration ) # Edit the values below: BRAND_ID = 'EDIT_HERE' AGENT_ID = 'EDIT_HERE' DIALOGFLOW_CX_AGENT_ID = 'EDIT_HERE' DIALOGFLOW_CX_PROJECT_ID = 'EDIT_HERE' SCOPES = ['https://www.googleapis.com/auth/businesscommunications'] SERVICE_ACCOUNT_FILE = './service_account_key.json' credentials = ServiceAccountCredentials.from_json_keyfile_name( SERVICE_ACCOUNT_FILE, scopes=SCOPES) client = BusinesscommunicationsV1(credentials=credentials) integrations_service = BusinesscommunicationsV1.BrandsAgentsIntegrationsService(client) agent_name = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID integration = integrations_service.Create(BusinesscommunicationsBrandsAgentsIntegrationsCreateRequest( integration=DialogflowCxIntegration( autoResponseStatus=DialogflowCxIntegration.AutoResponseStatusValueValuesEnum.ENABLED, dialogflowAgentId=DIALOGFLOW_CX_AGENT_ID, dialogflowProjectId=DIALOGFLOW_CX_PROJECT_ID ), parent=agent_name )) print(integration)
如需了解格式设置和值选项,请参阅
Integration
。
Business Messages 与 Dialogflow 连接大约需要两分钟时间。如需检查集成的状态,请获取集成的 OperationInfo
。
更新集成
如需更新代理的自动响应设置,请运行以下命令。将 AUTO_RESPONSE_STATUS 替换为 ENABLED 或 DISABLED,具体取决于您是否希望 Business Messages 使用 Dialogflow 响应自动回复用户。
Dialogflow ES
cURL
# This code updates the Dialogflow association. # Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.agents/updateDialogflowAssociation # Replace the __BRAND_ID__ and __AGENT_ID__ # Make sure a service account key file exists at ./service_account_key.json curl -X PATCH \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/dialogflowAssociation?updateMask=enableAutoResponse" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -d '{ "enableAutoResponse": true }'
Dialogflow CX
cURL
# This code updates the Dialogflow association. # Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.agents/updateDialogflowAssociation # Replace the __BRAND_ID__ and __AGENT_ID__ # Make sure a service account key file exists at ./service_account_key.json curl -X PATCH \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/dialogflowAssociation?updateMask=enableAutoResponse" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -d '{ "enableAutoResponse": true }'
如需了解格式设置和值选项,请参阅 Integration
。
在 Dialogflow 版本之间切换
Business Messages 代理一次只能支持一个 Dialogflow 集成。要从一个 Dialogflow 版本切换到另一个 Dialogflow 版本,您需要先移除当前的集成,然后再创建新集成。
删除集成
如果您需要从 Business Messages 代理中移除 Dialogflow,请使用以下命令删除集成。
cURL
# This code deletes an integration. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#delete_the_integration # Replace the __BRAND_ID__, __AGENT_ID__ and __INTEGRATION_ID__ # Make sure a service account key file exists at ./service_account_key.json curl -X DELETE \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations/__INTEGRATION_ID__" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)"
Node.js
/** * This code snippet deletes an integration. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#delete_the_integration * * This code is based on the https://github.com/google-business-communications/nodejs-businesscommunications Node.js * Business Communications client library. */ /** * Edit the values below: */ const BRAND_ID = 'EDIT_HERE'; const AGENT_ID = 'EDIT_HERE'; const INTEGRATION_ID = 'EDIT_HERE'; const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const businesscommunications = require('businesscommunications'); const {google} = require('googleapis'); const uuidv4 = require('uuid').v4; // Initialize the Business Communications API const bcApi = new businesscommunications.businesscommunications_v1.Businesscommunications({}); // Set the scope that we need for the Business Communications API const scopes = [ 'https://www.googleapis.com/auth/businesscommunications', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); async function main() { const authClient = await initCredentials(); const integrationName = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID + '/integrations/' + INTEGRATION_ID; if (authClient) { // Setup the parameters for the API call const apiParams = { auth: authClient, name: integrationName, }; bcApi.brands.agents.integrations.delete(apiParams, {}, (err, response) => { if (err !== undefined && err !== null) { console.dir(err); } else { // Agent created console.log(response.data); } }); } else { console.log('Authentication failure.'); } } /** * Initializes the Google credentials for calling the * Business Messages API. */ async function initCredentials() { // Configure a JWT auth client const authClient = new google.auth.JWT( privatekey.client_email, null, privatekey.private_key, scopes, ); return new Promise(function(resolve, reject) { // Authenticate request authClient.authorize(function(err, tokens) { if (err) { reject(false); } else { resolve(authClient); } }); }); } main();
Python
"""This code snippet deletes an integration. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#delete_the_integration This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ from oauth2client.service_account import ServiceAccountCredentials from businesscommunications.businesscommunications_v1_client import BusinesscommunicationsV1 from businesscommunications.businesscommunications_v1_messages import ( BusinesscommunicationsBrandsAgentsIntegrationsDeleteRequest ) # Edit the values below: BRAND_ID = 'EDIT_HERE' AGENT_ID = 'EDIT_HERE' INTEGRATION_ID = 'EDIT_HERE' SCOPES = ['https://www.googleapis.com/auth/businesscommunications'] SERVICE_ACCOUNT_FILE = './service_account_key.json' credentials = ServiceAccountCredentials.from_json_keyfile_name( SERVICE_ACCOUNT_FILE, scopes=SCOPES) client = BusinesscommunicationsV1(credentials=credentials) integrations_service = BusinesscommunicationsV1.BrandsAgentsIntegrationsService(client) integration_name = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID + '/integrations/' + INTEGRATION_ID integration = integrations_service.Delete(BusinesscommunicationsBrandsAgentsIntegrationsDeleteRequest( name=integration_name )) print(integration)
如需了解格式设置和值选项,请参阅 Integration
。
获取集成信息
如需获取有关集成的信息,您可以使用 Business Communications API,前提是具有该集成的 name
值。
获取单个集成的信息
如需获取集成信息,请运行以下命令。
cURL
# This code gets information about an integration. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#get_info_for_a_single_integration # Replace the __BRAND_ID__, __AGENT_ID__ and __INTEGRATION_ID__ # Make sure a service account key file exists at ./service_account_key.json curl -X GET \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations/__INTEGRATION_ID__" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)"
Node.js
/** * This code snippet gets information about an integration. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#get_info_for_a_single_integration * * This code is based on the https://github.com/google-business-communications/nodejs-businesscommunications Node.js * Business Communications client library. */ /** * Edit the values below: */ const BRAND_ID = 'EDIT_HERE'; const AGENT_ID = 'EDIT_HERE'; const INTEGRATION_ID = 'EDIT_HERE'; const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const businesscommunications = require('businesscommunications'); const {google} = require('googleapis'); const uuidv4 = require('uuid').v4; // Initialize the Business Communications API const bcApi = new businesscommunications.businesscommunications_v1.Businesscommunications({}); // Set the scope that we need for the Business Communications API const scopes = [ 'https://www.googleapis.com/auth/businesscommunications', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); async function main() { const authClient = await initCredentials(); const integrationName = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID + '/integrations/' + INTEGRATION_ID; if (authClient) { // Setup the parameters for the API call const apiParams = { auth: authClient, name: integrationName, }; bcApi.brands.agents.integrations.get(apiParams, {}, (err, response) => { if (err !== undefined && err !== null) { console.dir(err); } else { // Agent created console.log(response.data); } }); } else { console.log('Authentication failure.'); } } /** * Initializes the Google credentials for calling the * Business Messages API. */ async function initCredentials() { // Configure a JWT auth client const authClient = new google.auth.JWT( privatekey.client_email, null, privatekey.private_key, scopes, ); return new Promise(function(resolve, reject) { // Authenticate request authClient.authorize(function(err, tokens) { if (err) { reject(false); } else { resolve(authClient); } }); }); } main();
Python
"""This code snippet gets information about an integration. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#get_info_for_a_single_integration This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ from oauth2client.service_account import ServiceAccountCredentials from businesscommunications.businesscommunications_v1_client import BusinesscommunicationsV1 from businesscommunications.businesscommunications_v1_messages import ( BusinesscommunicationsBrandsAgentsIntegrationsDeleteRequest ) # Edit the values below: BRAND_ID = 'EDIT_HERE' AGENT_ID = 'EDIT_HERE' INTEGRATION_ID = 'EDIT_HERE' SCOPES = ['https://www.googleapis.com/auth/businesscommunications'] SERVICE_ACCOUNT_FILE = './service_account_key.json' credentials = ServiceAccountCredentials.from_json_keyfile_name( SERVICE_ACCOUNT_FILE, scopes=SCOPES) client = BusinesscommunicationsV1(credentials=credentials) integrations_service = BusinesscommunicationsV1.BrandsAgentsIntegrationsService(client) integration_name = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID + '/integrations/' + INTEGRATION_ID integration = integrations_service.Get(BusinesscommunicationsBrandsAgentsIntegrationsDeleteRequest( name=integration_name )) print(integration)
如需了解格式设置和值选项,请参阅 Integration
。
列出代理的所有集成
如果您不知道集成的名称,则可以从 GET 请求网址中省略 INTEGRATION_ID 值,以获取与代理关联的所有集成的信息。
cURL
# This code lists all integrations for an agent. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#list_all_integrations_for_an_agent # Replace the __BRAND_ID__ and __AGENT_ID__ # Make sure a service account key file exists at ./service_account_key.json curl -X GET \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)"
Node.js
/** * This code snippet lists all integrations for an agent. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#list_all_integrations_for_an_agent * * This code is based on the https://github.com/google-business-communications/nodejs-businesscommunications Node.js * Business Communications client library. */ /** * Edit the values below: */ const BRAND_ID = 'EDIT_HERE'; const AGENT_ID = 'EDIT_HERE'; const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const businesscommunications = require('businesscommunications'); const {google} = require('googleapis'); const uuidv4 = require('uuid').v4; // Initialize the Business Communications API const bcApi = new businesscommunications.businesscommunications_v1.Businesscommunications({}); // Set the scope that we need for the Business Communications API const scopes = [ 'https://www.googleapis.com/auth/businesscommunications', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); async function main() { const authClient = await initCredentials(); if (authClient) { // Setup the parameters for the API call const apiParams = { auth: authClient, parent: 'brands/' + BRAND_ID + '/agents/' + AGENT_ID, }; bcApi.brands.agents.integrations.list(apiParams, {}, (err, response) => { if (err !== undefined && err !== null) { console.dir(err); } else { // Agent created console.log(response.data); } }); } else { console.log('Authentication failure.'); } } /** * Initializes the Google credentials for calling the * Business Messages API. */ async function initCredentials() { // Configure a JWT auth client const authClient = new google.auth.JWT( privatekey.client_email, null, privatekey.private_key, scopes, ); return new Promise(function(resolve, reject) { // Authenticate request authClient.authorize(function(err, tokens) { if (err) { reject(false); } else { resolve(authClient); } }); }); } main();
Python
"""This code snippet lists all integrations for an agent. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#list_all_integrations_for_an_agent This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ from oauth2client.service_account import ServiceAccountCredentials from businesscommunications.businesscommunications_v1_client import BusinesscommunicationsV1 from businesscommunications.businesscommunications_v1_messages import ( BusinesscommunicationsBrandsAgentsIntegrationsListRequest ) # Edit the values below: BRAND_ID = 'EDIT_HERE' AGENT_ID = 'EDIT_HERE' SCOPES = ['https://www.googleapis.com/auth/businesscommunications'] SERVICE_ACCOUNT_FILE = './service_account_key.json' credentials = ServiceAccountCredentials.from_json_keyfile_name( SERVICE_ACCOUNT_FILE, scopes=SCOPES) client = BusinesscommunicationsV1(credentials=credentials) integrations_service = BusinesscommunicationsV1.BrandsAgentsIntegrationsService(client) agent_name = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID integration = integrations_service.List( BusinesscommunicationsBrandsAgentsIntegrationsListRequest(parent=agent_name) ) print(integration)
如需了解格式设置和值选项,请参阅 Integration
。
意图匹配
为 Business Messages 代理启用 Dialogflow 集成后,您的代理可以使用 Dialogflow 项目的已配置意图来了解和响应用户问题,而无需编写代码。如需详细了解意图,请参阅 Dialogflow ES 和 Dialogflow CX 文档。
针对您希望通过自动化功能支持的每个对话选项,配置 Dialogflow intent。Business Messages 代理依靠 Dialogflow 来了解用户消息。
调用 Dialogflow API 时,Business Messages 会将用户消息载荷传递给您的 intent 和 fulfillment 网络钩子。当用户消息与 intent 匹配时,您可以在 QueryParameters
内的 business_messages_payload
字段中以 Struct
格式访问此载荷。
载荷包含用户消息中的所有字段(DialogflowResponse
除外)。
对于 Dialogflow CX,Business Messages 还会将名为 channel
且值为 google_business_messages
的会话参数传递给您的 intent,您可以使用如下格式在代理中引用它:$session.params.channel
此参数可用于向 Dialogflow 执行方式添加条件,以支持同一 Dialogflow 代理中的多个渠道。
如需详细了解查询参数,请参阅 Dialogflow ES 和 Dialogflow CX 参考文档。
前提条件
在 Dialogflow 中创建 NLU 模型时,您可以为意图配置不同的响应类型。Business Messages 支持默认响应,其中可能包括:
- 文字
- 自定义负载
- 在线客服人员转接(仅限 Dialogflow CX)
自定义载荷必须与有效的 Business Messages JSON 消息响应对象相匹配。为 intent 配置自定义载荷响应时,Business Messages 会忽略以下字段:
name
messageId
representative
请参阅以下示例响应。
包含建议的文本
{
"text": "Hello World!",
"fallback": "Hello World!\n\nReply with \"Hello\" or \"Hi!\"",
"suggestions": [
{
"reply": {
"text": "Hello",
"postbackData": "hello-formal"
}
},
{
"reply": {
"text": "Hi!",
"postbackData": "hello-informal"
}
}
]
}
复合信息卡
{
"fallback": "Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"",
"richCard": {
"standaloneCard": {
"cardContent": {
"title": "Hello, world!",
"description": "Sent with Business Messages.",
"media": {
"height": "TALL",
"contentInfo":{
"altText": "Google logo",
"fileUrl": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png",
"forceRefresh": "false"
}
},
"suggestions": [
{
"reply": {
"text": "Suggestion #1",
"postbackData": "suggestion_1"
}
},
{
"reply": {
"text": "Suggestion #2",
"postbackData": "suggestion_2"
}
}
]
}
}
}
}
复合信息卡轮播界面
{
"fallback": "Card #1\nThe description for card #1\n\nCard #2\nThe description for card #2\n\nReply with \"Card #1\" or \"Card #2\"",
"richCard": {
"carouselCard": {
"cardWidth": "MEDIUM",
"cardContents": [
{
"title": "Card #1",
"description": "The description for card #1",
"suggestions": [
{
"reply": {
"text": "Card #1",
"postbackData": "card_1"
}
}
],
"media": {
"height": "MEDIUM",
"contentInfo": {
"fileUrl": "https://my.files/cute-dog.jpg",
"forceRefresh": false
}
}
},
{
"title": "Card #2",
"description": "The description for card #2",
"suggestions": [
{
"reply": {
"text": "Card #2",
"postbackData": "card_2"
}
}
],
"media": {
"height": "MEDIUM",
"contentInfo": {
"fileUrl": "https://my.files/elephant.jpg",
"forceRefresh": false
}
}
}
]
}
}
}
在线客服人员转接
{
"metadata": {}
}
常见问题解答聊天机器人
为 Business Messages 代理启用 Dialogflow ES 集成后,您可以创建常见问题解答聊天机器人。当您将问题和答案作为受支持的知识文档提供时,Business Messages 和 Dialogflow 会创建必要的基础架构来了解和回答用户问题,而无需您编写代码。
如需查看常见问题解答聊天机器人的实际运用,请与 Business Messages 常见问题解答聊天机器人聊天。
前提条件
在创建 FAQ 聊天机器人之前,您需要以知识文档(最多 50 MB)的形式提供问题和答案:公开发布的 HTML 文件或 CSV 文件。
一般而言,知识文档
- 可以在答案中包含有限的 Markdown,如富文本中所述。
- 大小不超过 50 MB。
- 问题/答案对不应超过 2000 个。
- 请勿提供重复回答不同答案的问题。
对于 HTML 文件,
- 来自公共网址的文件必须已被 Google 搜索索引器抓取,因此存在于搜索索引中。您可以使用 Google Search Console 检查是否满足此项要求。请注意,索引器不会及时更新您的内容。当源内容发生更改时,您必须明确更新文档。
- Dialogflow 在创建响应时从内容中移除 HTML 标记。因此,最好避免使用 HTML 标记并尽可能使用纯文本。
- 不支持包含单个问题/答案对的文件。
对于 CSV 文件,请执行以下操作:
- 文件的第一列必须为问题,第二列必须为答案,且不得有标题。
- 文件必须使用英文逗号作为分隔符。
创建常见问题解答聊天机器人
如需创建常见问题解答聊天机器人,请先创建一个知识库来存储聊天机器人的所有数据,然后将一个或多个包含问题/答案对的文档添加到知识库。
创建知识库
如需创建知识库,请运行以下命令。将 BRAND_ID、AGENT_ID 和 INTEGRATION_ID 替换为文档的 name
中的唯一值。将 KNOWLEDGE_BASE_DISPLAY_NAME 替换为您选择的标识字符串。
创建知识库后,您可以在其中创建文档。
cURL
# This code creates a knowledge base. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#create-knowledge-base # Replace the __BRAND_ID__, __AGENT_ID__, __INTEGRATION_ID__ and __KNOWLEDGE_BASE_DISPLAY_NAME__ # Make sure a service account key file exists at ./service_account_key.json curl -X PATCH \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations/__INTEGRATION_ID__?updateMask=dialogflowEsIntegration.dialogflowKnowledgeBases" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -d '{ "dialogflowEsIntegration": { "dialogflowKnowledgeBases": [ { "displayName": "__KNOWLEDGE_BASE_DISPLAY_NAME__" } ] } }'
如需了解格式设置和值选项,请参阅 DialogflowKnowledgebase
。
创建知识文档
如需创建知识文档,请运行以下命令。
将文档添加到现有文档列表中,或创建一个新列表(如果尚无列表)。现有文档的列表应在请求中包含文档的 name
值。
公开 HTML 文件
执行以下变量替换操作:
- 将 BRAND_ID、AGENT_ID 和 INTEGRATION_ID 替换为集成的
name
中的唯一值。 - KNOWLEDGE_BASE_DISPLAY_NAME 和 DOCUMENT_DISPLAY_NAME(用于标识您选择的字符串)
将 PUBLIC_URL 替换为知识文档的公开网址
cURL
# This code creates a knowledge base document from an HTML document and adds it to the knowledge base. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#create-document # Replace the __BRAND_ID__, __AGENT_ID__, __INTEGRATION_ID__, __KNOWLEDGE_BASE_DISPLAY_NAME__, __DOCUMENT_DISPLAY_NAME__ and __PUBLIC_URL__ # Make sure a service account key file exists at ./service_account_key.json curl -X PATCH \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations/__INTEGRATION_ID__?updateMask=dialogflowEsIntegration.dialogflowKnowledgeBases" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -d '{ "dialogflowEsIntegration": { "dialogflowKnowledgeBases": [ { "displayName": "__KNOWLEDGE_BASE_DISPLAY_NAME__", "documents": [ { "displayName": "__DOCUMENT_DISPLAY_NAME__", "faqUrl": "__PUBLIC_URL__" } ] } ] } }'
本地 CSV 文件
执行以下变量替换操作:
- 将 BRAND_ID、AGENT_ID 和 INTEGRATION_ID 替换为集成的
name
中的唯一值。 - KNOWLEDGE_BASE_DISPLAY_NAME 和 DOCUMENT_DISPLAY_NAME(用于标识您选择的字符串)
将 CSV_RAW_BYTES 替换为 CSV 文件(采用 base64 编码的字符串)
cURL
# This code creates a knowledge base document from a CSV document and adds it to the knowledge base. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#create-document # Replace the __BRAND_ID__, __AGENT_ID__, __INTEGRATION_ID__, __KNOWLEDGE_BASE_DISPLAY_NAME__, __DOCUMENT_DISPLAY_NAME__ and __CSV_RAW_BYTES__ # Make sure a service account key file exists at ./service_account_key.json curl -X PATCH \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations/__INTEGRATION_ID__?updateMask=dialogflowEsIntegration.dialogflowKnowledgeBases" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -d '{ "dialogflowEsIntegration": { "dialogflowKnowledgeBases": [ { "displayName": "__KNOWLEDGE_BASE_DISPLAY_NAME__", "documents": [ { "displayName": "__DOCUMENT_DISPLAY_NAME__", "rawContent": "__CSV_RAW_BYTES__" } ] } ] } }'
如需了解格式设置和值选项,请参阅 DialogflowKnowledgebase
。
将文档添加到知识库大约需要两分钟。如需检查文档的状态,请获取集成的 OperationInfo
。
删除知识文档
如果您需要从 Business Messages 代理中移除问题/答案对,请使用以下命令删除包含知识/知识库的知识文档。
运行以下命令可删除单个现有文档。将 BRAND_ID、AGENT_ID 和 INTEGRATION_ID 替换为文档的 name
中的唯一值。将 KNOWLEDGE_BASE_DISPLAY_NAME 替换为适当的字符串。
cURL
# This code deletes a knowledge base document. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/dialogflow?method=api#delete_a_knowledge_document # Replace the __BRAND_ID__, __AGENT_ID__, __INTEGRATION_ID__ and __KNOWLEDGE_BASE_DISPLAY_NAME__ # To delete all knowledge bases, set dialogflowKnowledgeBases to an empty list. Otherwise, the list should contain all existing knowledgebases except the one you would like to remove. # Make sure a service account key file exists at ./service_account_key.json curl -X PATCH \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/agents/__AGENT_ID__/integrations/__INTEGRATION_ID__?updateMask=dialogflowEsIntegration.dialogflowKnowledgeBases" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -d '{ "dialogflowEsIntegration": { "dialogflowKnowledgeBases": [ { "displayName": "__KNOWLEDGE_BASE_DISPLAY_NAME__" } ] } }'
如需了解格式设置和值选项,请参阅 DialogflowKnowledgebase
。
自动回复
如果您在 Dialogflow 集成期间启用自动回复,则 Business Messages 会通过 Dialogflow 自动响应用户。您的商家消息代理会以最高的置信度匹配项进行响应。借助 Dialogflow ES 集成,如果常见问题解答和自定义意图都匹配,Business Messages 会给出置信度最高的匹配项。
Business Messages 会将所有自动回复的消息标记为来自 BOT
代表。如果代理支持实时代理,Business Messages 会在 REPRESENTATIVE_JOINED
事件后暂停自动回复,并在 REPRESENTATIVE_LEFT
事件后恢复自动回复。请参阅从聊天机器人转移到人工客服。
自动回复常见问题解答
借助 Dialogflow ES 集成,如果 FAQ 答案的置信度最高,Business Messages 会将答案映射到短信。如果存在相关但不同的答案,该消息会显示“查看其他答案”建议。否则,消息会包含问题和建议的回复,询问该消息是否满足用户的请求。
自动回复 intent 响应
intent 响应可以包括以下一个或多个响应。
- Dialogflow ES:Text、Custom payload
- Dialogflow CX:文本、自定义载荷、在线客服人员转接
如果意图响应具有最高的置信度匹配,则以下操作适用。
- 如果响应至少有一个文本值,则 Business Messages 会将此值映射到短信。
- 如果响应至少有一个具有有效 Business Messages JSON 对象结构的自定义载荷,则 Business Messages 会使用提供的 JSON 对象创建消息。
- 如果响应至少有一个在线代理切换响应,请参阅使用在线代理请求自动回复。
由于 Dialogflow 可以在一个意图匹配中包含多个响应,因此 Business Messages 会将每个文本、自定义载荷或在线客服人员转接响应作为单独的消息发送。如果 intent 匹配中有多条消息,但其中部分消息的格式不正确,则 Business Messages 只会将有效消息作为自动回复发送。
自动回复人工客服请求
Dialogflow CX 支持在线客服人员转接响应。它表明应将对话移交给人工代表,并让您为移交程序传递自定义元数据。如果意图响应具有最高的置信度匹配,并且包含在线客服人员转接,则 Business Messages 会向您的网络钩子发送在线客服人员请求的事件。如需处理此事件,请参阅从聊天机器人切换到实时代理。
自动回复后备消息
如果 Dialogflow 没有获得高置信度的匹配项,Business Business Messages 会发送一个后备响应。在 Dialogflow ES 和 Dialogflow CX 中,回退的处理方式不同。
Dialogflow ES
对于常见问题解答聊天机器人,如果没有找到常见问题解答,则 Business Messages 会发送一条找不到答案的后备消息。
对于配置的 intent,如果没有与 intent 响应匹配,则 Business Messages 会发送后备 intent 响应。 您可以使用 Dialogflow 提供的后备文本,也可以使用额外的文本和自定义载荷配置回退。
下面是您的网络钩子可以接收的后备 intent 响应示例:
{
"intentResponses": [
{
"intentName": "projects/df-integration/agent/intents/12345",
"intentDisplayName": "Default Fallback Intent",
"intentDetectionConfidence": "1.0",
"fulfillmentMessages": [
{
"text": "One more time?"
}
]
}
]
}
Dialogflow 会预先填充 intent_name
和 intent_display_name
。
Dialogflow CX
Dialogflow CX 将后备 intent 响应作为内置事件进行处理。如果没有与意图响应匹配,Business Messages 会从 Dialogflow 中的无匹配默认事件发送回退消息。您可以使用 Dialogflow 提供的后备文字,或使用其他文字、自定义载荷和实时代理切换选项来配置后备。
下面是您的网络钩子可以接收的后备 intent 响应示例:
{
"intentResponses": [
{
"intentName": "sys.no-match-default",
"intentDisplayName": "Default Fallback Intent",
"intentDetectionConfidence": "0.3",
"fulfillmentMessages": [
{
"text": "I missed that, say that again?"
}
]
}
]
}
Business Messages 硬编码 intent_name
和 intent_display_name
。
Dialogflow 专用字段
启用 Dialogflow 集成后,代理收到的用户消息将包含 dialogflowResponse
对象。无论 Business Messages 是否代表您自动回复消息,网络钩子都会收到所有用户消息的载荷。如需检查是否存在自动回复,请查看 autoResponded
字段的值,然后决定是否需要响应用户。
Dialogflow ES
... "dialogflowResponse": { "queryText": "TEXT", "intentResponse": { "intentName": "INTENT_ID", "intentDisplayName": "INTENT_NAME", "intentDetectionConfidence": "CONFIDENCE_NUMERIC", "fulfillmentMessages": [{ "text": "FULFILLMENT_TEXT", "jsonPayload": "JSON", "error": "ERROR_STATUS", }], "faqResponse": { "userQuestion": "USER_QUESTION", "answers": [{ "faqQuestion": "FAQ_QUESTION", "faqAnswer": "FAQ_ANSWER", "matchConfidenceLevel": "CONFIDENCE_LEVEL", "matchConfidence": "CONFIDENCE_NUMERIC", }], }, "autoResponded": "BOOLEAN", "autoRespondedMessages": [{ "message": "MESSAGE_JSON", "responseSource": "SOURCE", }], }, ...
字段 | 说明 |
---|---|
queryText
|
原始对话查询文本。如果为 Dialogflow 模型启用了自动拼写更正,则 queryText 包含更正后的用户输入。 |
intentName |
匹配意图的唯一标识符。 |
intentDisplayName |
匹配的意图的名称。 |
intentDetectionConfidence
|
queryText 和 intentName 之间的匹配度数值置信度。 |
text |
文本响应。 |
jsonPayload
|
自定义载荷响应。
此字符串与 Dialogflow 中定义的自定义载荷匹配。如果载荷没有有效的 Business Messages JSON 对象结构,error 会描述问题。 |
error |
对 intent 执行消息的错误的说明。 |
userQuestion |
用户提出的问题,由 Dialogflow 解析。 |
faqQuestion |
Dialogflow 中与用户的问题匹配。 |
faqAnswer |
Dialogflow 的回答与用户的问题相匹配。 |
matchConfidenceLevel
|
userQuestion 和 faqQuestion 之间的匹配置信度。 |
matchConfidence
|
userQuestion 和 faqQuestion 之间的匹配数值置信度评分。 |
autoResponded
|
Business Messages 是否使用 Dialogflow 的答案自动回复用户。 |
message |
自动响应的载荷。 |
responseSource
|
自动回复的来源。请参阅 ResponseSource 。 |
Dialogflow CX
... "dialogflowResponse": { "queryText": "TEXT", "intentResponse": { "intentName": "INTENT_ID", "intentDisplayName": "INTENT_NAME", "intentDetectionConfidence": "CONFIDENCE_NUMERIC", "fulfillmentMessages": [{ "text": "FULFILLMENT_TEXT", "jsonPayload": "JSON", "error": "ERROR_STATUS", "liveAgentHandoff": { "metadata": {} } }], "autoResponded": "BOOLEAN", "autoRespondedMessages": [{ "message": "MESSAGE_JSON", "responseSource": "SOURCE", }], }, ...
字段 | 说明 |
---|---|
queryText
|
原始对话查询文本。如果为 Dialogflow 模型启用了自动拼写更正,则 queryText 包含更正后的用户输入。 |
intentName |
匹配意图的唯一标识符。 |
intentDisplayName |
匹配的意图的名称。 |
intentDetectionConfidence
|
queryText 和 intentName 之间的匹配度数值置信度。 |
text |
文本响应。 |
jsonPayload
|
自定义载荷响应。
此字符串与 Dialogflow 中定义的自定义载荷匹配。如果载荷没有有效的 Business Messages JSON 对象结构,error 会描述问题。 |
error |
对 intent 执行消息的错误的说明。 |
liveAgentHandoff |
在线客服人员转接流程的自定义元数据。 |
autoResponded
|
Business Messages 是否使用 Dialogflow 的答案自动回复用户。 |
message |
自动响应的载荷。 |
responseSource
|
自动回复的来源。请参阅 ResponseSource 。 |