Nas conversas com agentes do Business Messages, a mensagem de boas-vindas define o tom da interação. Ele também informa aos usuários o que o agente pode fazer, o que moldam as perguntas e expectativas do usuário.
O agente envia uma mensagem de boas-vindas sempre que o usuário abre uma conversa. O agente também pode mostrar inícios de conversa para guiar os usuários por caminhos conhecidos ou frequentes.
Se um usuário tentar iniciar uma conversa fora do horário de funcionamento de um agente, o agente vai mostrar uma mensagem off-line que você pode usar para compartilhar canais alternativos ou sugerir próximas etapas. Ao usar essas configurações, você pode aumentar a confiabilidade e a usabilidade do seu agente.
Configurações no nível do agente e do local
É possível especificar configurações de conversa no nível do agente ou do local.
Nível do agente:essas configurações de conversa se aplicam a todas as conversas com o agente em todos os pontos de entrada.
Uma mensagem de boas-vindas no nível do agente pode começar com "Agradecemos por entrar em contato com Bridgepoint Runners..." As ativações de conversa podem se concentrar em ações ou informações de toda a empresa.
No nível do local:essas configurações substituem as do agente e se aplicam apenas a conversas com esse local nos pontos de entrada
PLACESHEETeMAPS.Uma mensagem de boas-vindas no nível do local pode começar com "Agradecemos por entrar em contato com a Bridgepoint Runners na Amphitheatre Pkwy..." Os iniciadores de conversa podem se concentrar em tarefas ou informações com base na localização. Uma mensagem off-line pode mencionar quando o local vai abrir novamente.
Localidades
Os agentes e locais podem especificar configurações separadas para as localidades que oferecem suporte. Por exemplo, um agente pode especificar uma mensagem de boas-vindas em inglês para a localidade "en" e ter a mesma mensagem em espanhol para a localidade "es". O Business Messages resolve uma correspondência entre a localidade informada do dispositivo do usuário e as localidades para as quais um agente ou local tem configurações de conversa.
Essa correspondência de localidade é informada no campo resolvedLocale de cada mensagem. É possível especificar um defaultLocale de um agente ou local, que pondera a correspondência de localidade resolvida. Consulte Localização e
locais.
As mensagens comerciais usam a localidade resolvida para determinar quais configurações de conversa aplicar.
Mensagem de recepção
A primeira mensagem em uma conversa entre um agente e um usuário é a mensagem de boas-vindas do agente. A mensagem de boas-vindas aparece automaticamente depois que um usuário inicia uma nova conversa. Uma boa mensagem de recepção define as expectativas do usuário ao interagir com o agente. Para editar uma mensagem de boas-vindas, consulte Atualizar as configurações de conversa.
Sugestões de conversa
Uma boa mensagem de boas-vindas aborda a funcionalidade de um agente em um nível alto e é aberta. Já os bons iniciadores de conversa guiam os usuários para perguntas frequentes ou funcionalidades conhecidas.
As sugestões de conversa aparecem como respostas sugeridas em sequência logo após a mensagem de boas-vindas. Quando um usuário toca em um início de conversa, o agente recebe conteúdo predefinido e dados de postback que você define ao especificar o início.
Se um agente oferecer suporte à funcionalidade automatizada para determinadas solicitações, os iniciadores de conversa poderão ser mapeados para essas solicitações, permitindo que você confie em entradas conhecidas para automação e envie perguntas de usuários em formato livre para atendentes disponíveis para responder.
Um agente pode ter no máximo cinco iniciadores de conversa, e cada um deles pode ter no máximo 35 caracteres.
Para adicionar ou editar iniciadores de conversa, consulte Atualizar as configurações de conversa.
Mensagens off-line
Quando um usuário inicia uma conversa com um agente fora do horário de atendimento dele (definido por MessagingAvailability), ele recebe a mensagem off-line do agente. Somente a disponibilidade de um representante humano é considerada ao acionar uma mensagem off-line. Os agentes que só têm representantes de bot sempre enviam uma mensagem de boas-vindas. Uma boa mensagem off-line
- Explica por que o agente está indisponível
- Instrui o usuário sobre as próximas etapas adequadas ou canais de contato alternativos
- Corresponde ao tom da mensagem de boas-vindas e dos puxa-conversa
Mensagem off-line inadequada
"Desculpe, estamos fechados."
Boa mensagem off-line
"Estamos fechados agora, mas estaremos disponíveis novamente amanhã às 8h. Se precisar de ajuda urgente, entre em contato com o suporte pelo número +12223334444 ou pelo e-mail support@gtb.com."
Para editar uma mensagem off-line, consulte Atualizar as configurações de conversa.
Atualizar as configurações de conversa
Para gerenciar uma mensagem de boas-vindas ou iniciadores de conversa, faça uma solicitação PATCH com a API Business Communications para atualizar o campo conversationalSettings de um agente ou local.
Ao atualizar o campo conversationalSettings, inclua valores para
todos os campos no objeto
ConversationalSetting. As solicitações de atualização substituem o conteúdo de todos os campos editados, incluindo
campos filhos. Por exemplo, se você fizer uma solicitação para modificar uma mensagem de boas-vindas, mas não incluir iniciadores de conversa, a solicitação vai remover todos os iniciadores anteriores.
Pré-requisitos
Antes de atualizar as configurações de conversa, você precisa dos seguintes itens:
- Caminho para a chave da conta de serviço do projeto do GCP na sua máquina de desenvolvimento
- A localidade para a qual você quer atualizar as configurações
Para configurações no nível do agente, use
name(por exemplo, "brands/12345/agents/67890")Se você não souber o
namedo agente, consulte Listar todos os agentes de uma marca.Para configurações no nível do local,
name(por exemplo, "brands/12345/locations/67890")Se você não souber o
namedo local, consulte Listar todos os locais de uma marca.A localidade a ser atualizada, como um código de idioma ISO 639-1 de dois caracteres
Nova mensagem de boas-vindas
URL da Política de Privacidade
(Opcional) Texto para sugestões de conversa
(Opcional) Dados de postback para sugestões de conversa
(Opcional) Nova mensagem off-line
Se você não souber os valores atuais de conversationalSettings, consulte Receber informações do agente e Receber informações de local.
Enviar o pedido de atualização
Para atualizar o agente ou o local, execute o seguinte comando: Substitua as variáveis pelos valores identificados em Pré-requisitos.
Se você não quiser sugestões de início de conversa, omita conversationStarters e todos os campos filhos dele.
Configurações no nível do agente
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)
Configurações no nível do local
# 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" } } } ] } } }'
Para informações sobre formatação e valores, consulte
brands.agents.patch,
brands.locations.patch
e
ConversationalSetting.
Exemplos
Configurações no nível do agente
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',
},
},
},
],
},
},
},
}"Configurações no nível do local
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',
},
},
},
},
],
},
},
}"