В диалогах с агентами Business Messages приветственное сообщение задает тон общению. Оно также сообщает пользователям о возможностях агента, что формирует вопросы и ожидания пользователя.
Агент отправляет приветственное сообщение каждый раз, когда пользователь начинает диалог. Агент также может отображать подсказки для начала разговора , чтобы направлять пользователей по знакомым или часто используемым сценариям.
Если пользователь пытается начать разговор вне рабочего времени оператора, оператор отображает сообщение об отсутствии на связи, которое вы можете использовать для предоставления альтернативных каналов связи или предложения дальнейших действий. Используя эти настройки, вы можете повысить надежность и удобство использования вашего оператора.

Настройки на уровне агента и местоположения
Вы можете задать параметры диалога на уровне агента или местоположения.
На уровне агента: Эти настройки диалога применяются ко всем разговорам с агентом на всех точках входа.
Приветственное сообщение для оператора может начинаться со слов: «Спасибо за обращение в Bridgepoint Runners...». Начало разговора может быть посвящено общекорпоративным действиям или информации.
На уровне местоположения: Эти настройки переопределяют настройки на уровне агента и применяются только к разговорам с данным местоположением через точки входа
PLACESHEETиMAPS.Приветственное сообщение, указывающее на местоположение, может начинаться со слов: «Спасибо за обращение в Bridgepoint Runners на Amphitheatre Pkwy...». Начало разговора может быть посвящено задачам или информации, связанным с местоположением. В сообщении, отправленном вне сети, может быть указано, когда данное место будет открыто в следующий раз.
Локалы
Агенты и подразделения могут указывать отдельные настройки для поддерживаемых ими языковых версий. Например, агент может указать приветственное сообщение на английском языке для языковой версии «en» и такое же приветственное сообщение на испанском языке для языковой версии «es». Функция «Деловые сообщения» определяет соответствие между языковой версией, указанной на устройстве пользователя, и языковыми версиями, для которых у агента или подразделения есть настройки диалога.
Соответствие локали отображается в поле resolvedLocale каждого сообщения. Вы можете указать defaultLocale агента или местоположения, которое определяет вес совпадения локали. См. раздел «Локализация и локали» .
В Business Messages используется определенная локаль для выбора подходящих настроек диалога.
Приветственное сообщение
Первое сообщение в диалоге между агентом и пользователем — это приветственное сообщение агента. Приветственное сообщение автоматически появляется после того, как пользователь начинает новый диалог. Хорошее приветственное сообщение задает пользователю ожидания от взаимодействия с агентом. Чтобы отредактировать приветственное сообщение, см. раздел «Обновление настроек диалога» .
Темы для начала разговора
Хотя хорошее приветственное сообщение в общих чертах описывает функциональные возможности оператора и не содержит развернутых ответов, удачные заставки для начала разговора направляют пользователей к часто задаваемым вопросам или известным функциям.
Варианты начала разговора отображаются в виде вертикально расположенных предложений и следуют непосредственно за приветственным сообщением. Когда пользователь нажимает на вариант начала разговора, агент получает предопределенный контент и данные обратной связи, которые вы задаете при указании варианта начала разговора.
Если агент поддерживает автоматизированные функции для определенных запросов, то начальные фразы диалога могут быть привязаны к этим запросам, позволяя вам использовать известные входные данные для автоматизации и отправлять свободные вопросы пользователей живым агентам, готовым ответить.
У агента может быть максимум 5 тем для начала разговора, и каждая тема может содержать максимум 35 символов.
Чтобы добавить или изменить варианты начала разговора, см. раздел «Обновление настроек разговора» .
Офлайн-сообщения
Когда пользователь начинает разговор с оператором вне его рабочего времени (определяемого параметром MessagingAvailability ), он получает сообщение об отсутствии на рабочем месте. При отправке сообщения об отсутствии на рабочем месте учитывается только доступность оператора-человека. Операторы, работающие только с ботами, всегда отправляют приветственное сообщение. Хорошее сообщение об отсутствии на рабочем месте.
- Объясняет причину недоступности агента.
- Предоставляет пользователю инструкции по дальнейшим действиям или альтернативным каналам связи.
- Соответствует тону приветственного сообщения и тем для начала разговора.
Неверное сообщение об отсутствии на сайте
«Извините, мы закрыты».
Хорошее сообщение в офлайн-режиме
«Сейчас мы закрыты, но завтра снова будем доступны в 8:00. Если вам нужна срочная помощь, свяжитесь со службой поддержки по телефону +12223334444 или по электронной почте support@gtb.com».
Чтобы отредактировать сообщение, отправленное в автономном режиме, см. раздел «Обновление настроек диалога» .
Обновить настройки диалога
Для управления приветственным сообщением или темами для начала разговора необходимо отправить PATCH-запрос через API бизнес-коммуникаций , чтобы обновить поле conversationalSettings у агента или местоположения.
При обновлении поля conversationalSettings необходимо указать значения для всех полей объекта ConversationalSetting . Запросы на обновление перезаписывают содержимое всех редактируемых полей, включая дочерние поля. Например, если вы отправляете запрос на изменение приветственного сообщения, но не указываете варианты начала разговора, запрос удаляет все предыдущие варианты начала разговора.
Предварительные требования
Перед обновлением настроек диалога вам понадобятся следующие элементы:
- Путь к ключу учетной записи службы вашего проекта GCP на вашей машине разработки.
- Язык, для которого вы хотите обновить настройки.
Для настроек на уровне агента укажите
nameагента (например, "brands/12345/agents/67890")Если вы не знаете
nameагента, см. раздел «Список всех агентов для данного бренда» .Для настроек на уровне местоположения укажите
nameместоположения (например, "brands/12345/locations/67890")Если вы не знаете
nameзаведения, см. раздел «Список всех заведений данного бренда» .Код локали для обновления, представленный в виде двухсимвольного кода языка ISO 639-1.
Новое приветственное сообщение
URL политики конфиденциальности
(Необязательно) Текст для начала разговора
(Необязательно) Данные обратной связи для начала разговора
(Необязательно) Новое сообщение об отсутствии на связи
Если вам неизвестны текущие значения conversationalSettings , см. разделы «Получение информации об агенте» и «Получение информации о местоположении» .
Отправьте запрос на обновление.
Для обновления агента или местоположения выполните следующую команду. Замените переменные значениями, указанными вами в разделе «Предварительные условия» .
Если вам не нужны поля для начала разговора, опустите поле conversationStarters и все его дочерние поля.
Настройки на уровне агента
cURL
# This code updates the conversational settings of a Business Messages agent. # Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.agents/patch # Replace the __BRAND_ID__, __AGENT_ID__ and __LOCALE__ # 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__?updateMask=businessMessagesAgent.conversationalSettings.__LOCALE__" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -d '{ "businessMessagesAgent": { "conversationalSettings": { "__LOCALE__": { "welcomeMessage": { "text": "My first welcome message" }, "offlineMessage": { "text": "My first offline message" }, "privacyPolicy": { "url": "https://www.your-company-website.com/privacy" }, "conversationStarters": [ { "suggestion": { "reply": { "text": "Suggestion 1", "postbackData": "post_back_suggestion_1" } } } ] } } } }'
Node.js
/** * This code snippet updates the conversationalSettings of a Business Messages agent. * Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.agents/patch * * 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 LOCALE = 'en'; 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 agentName = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID; if (authClient) { // Setup the parameters for the API call const apiParams = { auth: authClient, name: agentName, updateMask: 'businessMessagesAgent.conversationalSettings.' + LOCALE, resource: { businessMessagesAgent: { conversationalSettings: { [LOCALE]: { privacyPolicy: { url: 'https://www.your-company-website.com/privacy' }, welcomeMessage: { text: 'My updated welcome message' }, offlineMessage: { text: 'My updated offline message' }, conversationStarters: [ { suggestion: { reply: { 'text': 'Suggestion 2', 'postbackData': 'post_back_suggestion_2', }, }, } ], }, } } } }; bcApi.brands.agents.patch(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();
Java
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.businesscommunications.v1.BusinessCommunications; import com.google.api.services.businesscommunications.v1.model.*; import com.google.common.collect.ImmutableMap; import java.io.FileInputStream; import java.util.Arrays; class Main { /** * Initializes credentials used by the Business Communications API. */ private static BusinessCommunications.Builder getBusinessCommunicationsBuilder() { BusinessCommunications.Builder builder = null; try { GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY")); credential = credential.createScoped(Arrays.asList( "https://www.googleapis.com/auth/businesscommunications")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Communications API builder = new BusinessCommunications .Builder(httpTransport, jsonFactory, null) .setApplicationName(credential.getServiceAccountProjectId()); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { // Create client library reference BusinessCommunications.Builder builder = getBusinessCommunicationsBuilder(); String agentName = "brands/BRAND_ID/agents/AGENT_ID"; Agent agent = new Agent().setBusinessMessagesAgent( new BusinessMessagesAgent().setConversationalSettings(ImmutableMap.of("LOCALE", new ConversationalSetting() .setPrivacyPolicy(new PrivacyPolicy().setUrl("PRIVACY_POLICY_URL")) .setWelcomeMessage(new WelcomeMessage().setText("WELCOME_MESSAGE")) .setOfflineMessage(new OfflineMessage().setText("OFFLINE_MESSAGE")) .setConversationStarters(Arrays.asList( new ConversationStarters().setSuggestion(new Suggestion() .setReply(new SuggestedReply() .setText("REPLY_TEXT") .setPostbackData("POSTBACK_DATA"))), ))))); BusinessCommunications.Brands.Agents.Patch request = builder .build().brands().agents().patch(agentName, agent); request.setUpdateMask("businessMessagesAgent.conversationalSettings.LOCALE"); Agent updatedAgent = request.execute(); System.out.println(updatedAgent.toPrettyString()); } catch (Exception e) { e.printStackTrace(); } } }
Python
"""This code updates the conversational settings of a Business Messages agent. Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.agents/patch 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, BusinessMessagesAgent, ConversationStarters, ConversationalSetting, OfflineMessage, PrivacyPolicy, WelcomeMessage, NegativeBotFeedbackMessage, BusinesscommunicationsBrandsAgentsPatchRequest, ) # 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) agents_service = BusinesscommunicationsV1.BrandsAgentsService(client) agent_name = 'brands/' + BRAND_ID + '/agents/' + AGENT_ID agent=Agent( businessMessagesAgent=BusinessMessagesAgent( conversationalSettings=BusinessMessagesAgent.ConversationalSettingsValue( additionalProperties=[BusinessMessagesAgent.ConversationalSettingsValue.AdditionalProperty( key='en', value=ConversationalSetting( privacyPolicy=PrivacyPolicy(url='https://www.your-company-website.com/privacy'), welcomeMessage=WelcomeMessage(text='Welcome to Business Messages'), offlineMessage=OfflineMessage(text='This is an offline message'), conversationStarters=[ ConversationStarters( suggestion=Suggestion( reply=SuggestedReply(text='Option 1', postbackData='option_1') ) )] ) ) ] ) ) ) updated_agent = agents_service.Patch( BusinesscommunicationsBrandsAgentsPatchRequest( agent=agent, name=agent_name, updateMask='businessMessagesAgent.conversationalSettings.en' ) ) print(updated_agent)
Настройки на уровне местоположения
# This code updates the agent interaction of a bot and human representatives. # Read more: https://developers.google.com/business-communications/business-messages/reference/business-communications/rest/v1/brands.locations/patch # Replace the __BRAND_ID__, __AGENT_ID__, __LOCATION_ID__, __LOCALE__ # Make sure a service account key file exists at ./service_account_key.json curl -X PATCH \ "https://businesscommunications.googleapis.com/v1/brands/__BRAND_ID__/locations/__LOCATION_ID__?updateMask=conversationalSettings.__LOCALE__" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-communications" \ -H "$(oauth2l header --json ./service_account_key.json businesscommunications)" \ -d '{ "conversationalSettings": { "__LOCALE__": { "welcomeMessage": { "text": "My second welcome message" }, "offlineMessage": { "text": "My second offline message" }, "privacyPolicy": { "url": "https://www.your-company-website.com/privacy" }, "conversationStarters": [ { "suggestion": { "reply": { "text": "Suggestion 2", "postbackData": "post_back_suggestion_2" } } } ] } } }'
Информацию о форматировании и значениях см. в файлах brands.agents.patch , brands.locations.patch и ConversationalSetting .
Примеры
Настройки на уровне агента
curl -X PATCH \
"https://businesscommunications.googleapis.com/v1/brands/BRAND_ID/agents/AGENT_ID?updateMask=businessMessagesAgent.conversationalSettings.en" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-communications" \
-H "$(oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications)" \
-d "{
'businessMessagesAgent': {
'conversationalSettings': {
'en': {
'welcomeMessage': {
'text': 'Thanks for contacting Growing Tree Bank. What can I help with today?',
},
'offlineMessage': {
'text': 'We\'re closed for the night. Please reach out to us again tomorrow.',
},
'privacyPolicy': {
'url': 'https://www.growingtreebank.com/privacy',
},
'conversationStarters': [
{
'suggestion': {
'reply': {
'text': 'Set up an account',
'postbackData': 'new-account',
},
},
},
{
'suggestion': {
'reply': {
'text': 'Look up account information',
'postbackData': 'account-lookup',
},
},
},
],
},
},
},
}"Настройки на уровне местоположения
curl -X PATCH \
"https://businesscommunications.googleapis.com/v1/brands/12345/locations/67890?updateMask=conversationalSettings.en" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/business-communications" \
-H "$(oauth2l header --json /path/to/service/account/key businesscommunications)" \
-d "{
'conversationalSettings': {
'en': {
'welcomeMessage': {
'text': 'Thanks for contacting Growing Tree Bank on Amphitheatre Pkwy. What can I help with today?',
},
'offlineMessage': {
'text': 'We\'re closed for the night. Please reach out to us again tomorrow.',
},
'privacyPolicy': {
'url': 'https://www.growingtreebank.com/privacy',
},
'conversationStarters': [
{
'suggestion': {
'reply': {
'text': 'What are your hours?',
'postbackData': 'hours',
},
},
},
{
'suggestion': {
'reply': {
'text': 'Set up an account',
'postbackData': 'new-account',
},
},
},
{
'suggestion': {
'reply': {
'text': 'Look up account information',
'postbackData': 'account-lookup',
},
},
},
{
'suggestion': {
'action': {
'text': 'Call us',
'postbackData': 'call',
'dialAction': {
'phoneNumber': '+12223334444',
},
},
},
},
],
},
},
}"