Comenzar la conversación

En las conversaciones con agentes de Business Messages, el mensaje de bienvenida establece el tono de la interacción. También les permite a los usuarios saber qué puede hacer el agente, lo que da forma a sus preguntas y expectativas.

El agente envía un mensaje de bienvenida cada vez que el usuario abre una conversación. El agente también puede mostrar temas de conversación para guiar a los usuarios por rutas conocidas o frecuentes.

Si un usuario intenta iniciar una conversación fuera del horario de atención de un agente, este muestra un mensaje sin conexión que puedes usar para compartir canales alternativos o sugerir los próximos pasos. Si aprovechas esta configuración, puedes aumentar la confiabilidad y la usabilidad de tu agente.

Preguntas para iniciar la conversación

Configuración a nivel del agente y de la ubicación

Puedes especificar la configuración conversacional a nivel del agente o de la ubicación.

  • Nivel del agente: Esta configuración conversacional se aplica a todas las conversaciones con el agente en todos los puntos de entrada.

    Un mensaje de bienvenida a nivel del agente podría comenzar con "Gracias por comunicarte con Bridgepoint Runners…". Los temas de conversación pueden centrarse en acciones o información de toda la empresa.

  • Nivel de la ubicación: Esta configuración anula la configuración a nivel del agente y solo se aplica a las conversaciones con esa ubicación a través de los puntos de entrada PLACESHEET y MAPS .

    Un mensaje de bienvenida a nivel de la ubicación podría comenzar con "Gracias por comunicarte con Bridgepoint Runners en Amphitheatre Pkwy…". Los temas de conversación pueden centrarse en tareas o información basadas en la ubicación. Un mensaje sin conexión podría mencionar cuándo volverá a abrir la ubicación.

Configuraciones regionales

Los agentes y las ubicaciones pueden especificar parámetros de configuración separados para las configuraciones regionales que admitan. Por ejemplo, un agente podría especificar un mensaje de bienvenida en inglés para la configuración regional "en" y tener el mismo mensaje de bienvenida en español para la configuración regional "es". Business Messages resuelve una coincidencia entre la configuración regional informada del dispositivo del usuario y las configuraciones regionales para las que un agente o una ubicación tienen parámetros de configuración conversacionales.

Esta coincidencia de configuración regional se informa en el campo resolvedLocale de cada mensaje. Puedes especificar el defaultLocale de un agente o una ubicación, que pondera la coincidencia de la configuración regional resuelta. Consulta Localización y configuraciones regionales.

Business Messages usa la configuración regional resuelta para determinar qué configuración conversacional aplicar.

Mensaje de bienvenida

El primer mensaje en una conversación entre un agente y un usuario es el mensaje de bienvenida del agente. El mensaje de bienvenida aparece automáticamente después de que un usuario inicia una conversación nueva. Un buen mensaje de bienvenida establece las expectativas del usuario para interactuar con el agente. Para editar un mensaje de bienvenida, consulta Actualiza la configuración conversacional.

Preguntas para iniciar la conversación

Si bien un buen mensaje de bienvenida abarca la funcionalidad de un agente a un nivel alto y es abierto, las buenas preguntas para iniciar la conversación guían a los usuarios a preguntas frecuentes o funcionalidades conocidas.

Las preguntas para iniciar la conversación aparecen como una pila de respuestas sugeridas inmediatamente después del mensaje de bienvenida. Cuando un usuario presiona una pregunta para iniciar la conversación, el agente recibe contenido predefinido y datos de devolución que estableces cuando especificas la pregunta.

Si un agente admite la funcionalidad automatizada para ciertas solicitudes, las preguntas para iniciar la conversación podrían asignarse a esas solicitudes, lo que te permite depender de entradas conocidas para la automatización y enviar preguntas de usuarios de forma libre a agentes humanos listos para responder.

Un agente puede tener un máximo de 5 preguntas para iniciar la conversación, y cada pregunta puede tener un máximo de 35 caracteres.

Para agregar o editar preguntas para iniciar la conversación, consulta Actualiza la configuración conversacional settings.

Mensajes sin conexión

Cuando un usuario inicia una conversación con un agente fuera del horario de atención del agente (según lo define MessagingAvailability), el usuario recibe el mensaje sin conexión del agente. Solo se considera la disponibilidad del representante humano cuando se activa un mensaje sin conexión. Los agentes que solo tienen representantes de bot siempre envían un mensaje de bienvenida. Un buen mensaje sin conexión

  • Comparte por qué el agente no está disponible.
  • Instruye al usuario sobre los próximos pasos adecuados o los canales de contacto alternativos.
  • Coincide con el tono del mensaje de bienvenida y las preguntas para iniciar la conversación.

Mensaje sin conexión incorrecto

"Lo sentimos, estamos cerrados".

Mensaje sin conexión correcto

"Por el momento, estamos cerrados, pero volveremos a estar disponibles mañana a las 8 a.m. Si necesitas ayuda urgente, comunícate con el equipo de asistencia al +12223334444 o a support@gtb.com".

Para editar un mensaje sin conexión, consulta Actualiza la configuración conversacional.

Actualiza la configuración conversacional

Para administrar un mensaje de bienvenida o preguntas para iniciar la conversación, debes realizar una solicitud PATCH con la API de Business Communications para actualizar el campo conversationalSettings de un agente o una ubicación.

Cuando actualizas el campo conversationalSettings, debes incluir valores para todos los campos del ConversationalSetting objeto. Las solicitudes de actualización reemplazan el contenido de todos los campos que editas, incluidos los campos secundarios. Por ejemplo, si realizas una solicitud para modificar un mensaje de bienvenida, pero no incluyes preguntas para iniciar la conversación, la solicitud quita las preguntas para iniciar la conversación anteriores.

Requisitos previos

Antes de actualizar la configuración conversacional, necesitas los siguientes elementos:

  • Ruta de acceso a la clave de la cuenta de servicio de tu proyecto de GCP en tu máquina de desarrollo
  • La configuración regional para la que deseas actualizar la configuración
  • Para la configuración a nivel del agente, el name del agente (por ejemplo, "brands/12345/agents/67890")

    Si no conoces el name del agente, consulta Cómo enumerar todos los agentes de una marca.

  • Para la configuración a nivel de la ubicación, el name de la ubicación (por ejemplo, "brands/12345/locations/67890")

    Si no conoces el name de la ubicación, consulta Cómo enumerar todas las ubicaciones de una marca.

  • La configuración regional que se actualizará, como un código de idioma ISO 639-1 de dos caracteres

  • Nuevo mensaje de bienvenida

  • URL de la política de privacidad

  • (Opcional) Texto para preguntas para iniciar la conversación

  • (Opcional) Datos de devolución para preguntas para iniciar la conversación

  • (Opcional) Nuevo mensaje sin conexión

Si no conoces los valores actuales de conversationalSettings, consulta Obtén información del agente y Obtén información de la ubicación.

Envía la solicitud de actualización

Para actualizar el agente o la ubicación, ejecuta el siguiente comando. Reemplaza las variables por los valores que identificaste en Requisitos previos.

Si no quieres preguntas para iniciar la conversación, omite conversationStarters y todos sus campos secundarios.

Configuración a nivel del 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();
    }
  }
}
Este código se basa en la biblioteca cliente de Java de Business Communications.

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)

Configuración a nivel de la ubicación

# 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 obtener información sobre el formato y los valores, consulta brands.agents.patch, brands.locations.patch, y ConversationalSetting.

Ejemplos

Configuración a nivel del 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',
                            },
                        },
                    },
                ],
            },
        },
    },
}"

Configuración a nivel de la ubicación

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',
                            },
                        },
                    },
                },
            ],
        },
    },
}"