В разговорах с агентами Business Messages приветственное сообщение задает тон взаимодействия. Это также позволяет пользователям узнать, что может делать агент, что формирует вопросы и ожидания пользователя.
Агент отправляет приветственное сообщение каждый раз, когда пользователь открывает беседу. Агент также может отображать начала разговора , чтобы направлять пользователей по известным или часто встречающимся путям.
Если пользователь пытается начать разговор в нерабочие часы агента, агент отображает автономное сообщение, которое вы можете использовать, чтобы поделиться альтернативными каналами или предложить следующие шаги. Используя эти настройки, вы можете повысить надежность и удобство использования вашего агента.
Настройки на уровне агента и местоположения
Вы можете указать настройки диалога на уровне агента или местоположения.
Уровень агента: эти настройки диалога применяются ко всем разговорам с агентом во всех точках входа.
Приветственное сообщение на уровне агента может начинаться со слов «Спасибо за обращение в Bridgepoint Runners...». В начале разговора можно сосредоточиться на действиях или информации в масштабах всей компании.
Уровень местоположения: эти настройки переопределяют настройки уровня агента и применяются только к разговорам с этим местоположением через точки входа
PLACESHEET
иMAPS
.Приветственное сообщение на уровне местоположения может начинаться со слов «Спасибо, что связались с Bridgepoint Runners на Амфитеатре Пкви...». Начало разговора может быть сосредоточено на задачах или информации, связанных с местоположением. В офлайн-сообщении может быть указано, когда заведение откроется в следующий раз.
Места
Агенты и местоположения могут указывать отдельные параметры для тех языковых стандартов, которые они поддерживают. Например, агент может указать приветственное сообщение на английском языке для локали «en» и иметь такое же приветственное сообщение на испанском языке для локали «es». Business Messages разрешает совпадение между заявленным языковым стандартом пользовательского устройства и языковыми стандартами, для которых у агента или местоположения есть настройки диалога.
Соответствие локали указывается в поле resolvedLocale
каждого сообщения. Вы можете указать defaultLocale
агента или местоположения, который учитывает разрешенное соответствие языкового стандарта. См. Локализация и локали .
Business Messages использует разрешенный языковой стандарт, чтобы определить, какие настройки диалога применить.
Приветственное сообщение
Первое сообщение в разговоре между агентом и пользователем — это приветственное сообщение агента. Приветственное сообщение автоматически появляется после того, как пользователь начинает новый разговор. Хорошее приветственное сообщение формирует ожидания пользователя от взаимодействия с агентом. Чтобы изменить приветственное сообщение, см. раздел Обновление диалоговых настроек .
Начало разговора
В то время как хорошее приветственное сообщение охватывает функциональные возможности агента на высоком уровне и является открытым, хорошее начало разговора направляет пользователей к частым вопросам или известным функциям.
Начало разговора отображается в виде предлагаемых ответов, расположенных вертикально, и сразу же следует за приветственным сообщением. Когда пользователь нажимает кнопку начала разговора, агент получает предопределенный контент и данные обратной передачи, которые вы устанавливаете при указании начала разговора.
Если агент поддерживает автоматизированные функции для определенных запросов, средства начала разговора могут сопоставляться с этими запросами, позволяя вам полагаться на известные входные данные для автоматизации и отправлять пользовательские вопросы в произвольной форме живым агентам, готовым ответить.
У агента может быть максимум 5 участников разговора, и каждый из них может иметь не более 35 символов.
Чтобы добавить или изменить начало беседы, см. раздел Обновление настроек беседы .
Офлайн-сообщения
Когда пользователь начинает разговор с агентом в нерабочие часы агента (как определено MessagingAvailability
), пользователь получает автономное сообщение агента. При отправке автономного сообщения учитывается только доступность представителя человека. Агенты, у которых есть только представители ботов, всегда отправляют приветственное сообщение. Хорошее офлайн-сообщение
- Рассказывает, почему агент недоступен
- Инструктирует пользователя о соответствующих дальнейших шагах или альтернативных каналах связи.
- Соответствует тону приветственного сообщения и начала разговора.
Плохое офлайн-сообщение
«Извините, мы закрыты».
Хорошее офлайн-сообщение
«Сейчас мы закрыты, но снова будем доступны завтра в 8 утра. Если вам нужна срочная помощь, свяжитесь со службой поддержки по телефону +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
и все его дочерние поля.
Настройки уровня агента
КУЛЬ
# 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();
Ява
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(); } } }Этот код основан на клиентской библиотеке Java Business Communications .
Питон
"""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', }, }, }, }, ], }, }, }"