Después de recibir un mensaje de un usuario, puedes enviar una respuesta a continuar la conversación. Puedes enviar mensajes a un usuario hasta 30 días después el último mensaje del usuario.
Los agentes se comunican con los usuarios a través del envío y la recepción de mensajes. Para enviar mensajes a los usuarios, tu agente envía solicitudes de mensajes a Business Messages.
Para enviar un mensaje, debes enviar una solicitud HTTP POST a la API de Business Messages que incluye
- un ID de mensaje único
- el ID de la conversación
- el contenido del mensaje
Cuando la API de Business Messages envía tu mensaje al usuario, se muestra
200 OK
Si faltan valores obligatorios en tu mensaje, la API
muestra un error 400
. Si el mensaje usa credenciales no válidas, la API muestra
un error 401
Usar los registros de Business Communications Developer Console página para depurar problemas de entrega de mensajes.
Estrategia de resguardo
Si el dispositivo de un usuario no admite un mensaje que intentas enviar, por ejemplo, si un
si el usuario no admite las respuestas sugeridas, la API mostrará un error 400 (FAILED
PRECONDITION)
. Sin embargo, puedes evitar los tipos de mensajes no admitidos si haces lo siguiente:
Especifica el texto fallback
para cada mensaje que envíes. Si especificas fallback
texto, la API muestra una respuesta 200 OK
incluso si el dispositivo del usuario
admitir el tipo de mensaje.
Si un usuario recibe un mensaje que indica que su dispositivo no es compatible, pero que
fallback
, en su dispositivo, se mostrará el texto fallback
. Esta
te permite continuar la conversación de manera proactiva sin
interrumpir el flujo de la conversación o tomarse más tiempo para procesar un error 400
(FAILED PRECONDITION)
e identificar un mensaje alternativo.
El texto fallback
de cualquier mensaje dado debe reflejar la función del mensaje.
Por ejemplo:
- Para los mensajes con acciones o respuestas sugeridas, incluye el texto del mensaje en
el texto
fallback
y, además, incluir orientación sobre las opciones que tienen los usuarios para continuar la conversación. - Para tarjetas enriquecidas o carruseles, incluye el título y la descripción en la
fallback
y agregar vínculos a imágenes o sitios web.
Para insertar saltos de línea en el texto fallback
, usa \n
o \r\n
.
Texto de resguardo de prueba
Antes de iniciar un agente, puedes probar cómo aparece el texto de resguardo en una
conversación enviando un mensaje con el parámetro de URL forceFallback
establecido en
true
Cuando fuerzas el texto de resguardo, la conversación ignora el principal
el contenido del mensaje (texto y sugerencia de Open URL en el siguiente ejemplo) y
muestra el texto alternativo.
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a text message to the user with a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#fallback_strategy # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST \ "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages?forceFallback=true" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'text': 'Hello world!', 'fallback': 'Hello, world!\n\nSay \"Hello\" at https://www.growingtreebank.com', 'suggestions': [ { 'action': { 'text': 'Hello', 'postbackData': 'hello-formal', 'openUrlAction': { 'url': 'https://www.growingtreebank.com', } }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' } }"
/** * This code sends a text message to the user with a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#fallback_strategy * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a message to the Business Messages API defaulting to the fallback text. * * @param {string} conversationId The unique id for this user and agent. * @param {string} message The message text to send the user. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, message, representativeType) { const authClient = await initCredentials(); // Create the payload for sending a message const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, forceFallback: true, // Force usage of the fallback text resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, text: message, fallback: 'This is the fallback text' }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } /** * 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class TestFallbackTestSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a basic text message with fallback text BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setFallback("This is the fallback text") .setText("MESSAGE_TEXT") .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Force usage of the fallback text messageRequest.setForceFallback(true); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""This code sends a text message to the user with a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#fallback_strategy This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create message with fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), fallback='This is the fallback text', representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='This is a sample text') # Create the message request, force usage of the fallback text create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, forceFallback=True, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Para obtener más información, consulta Message
.
Representantes
Cuando tu agente envía un mensaje, especificas un representante: la persona o
automatización que redactó el mensaje. Business Messages admite HUMAN
y
BOT
representantes.
Especifica un representante de BOT
cuando cualquier tipo de automatización redacte un mensaje
si la automatización es una respuesta automática que les dice a los usuarios su lugar en un
en una fila, un agente complejo de comprensión del lenguaje natural que tiene acceso dinámico a
los detalles del usuario o cualquier otra cosa. Aparecerán mensajes con BOT
representantes
con un ícono pequeño
que ayuda a definir las necesidades las expectativas sobre los tipos de interacciones
participar.
Especifica un representante de HUMAN
solo cuando un agente humano redacte un mensaje.
Antes de enviar un mensaje de un representante de HUMAN
, envía un
REPRESENTATIVE_JOINED
evento para permitir
los usuarios saben que pueden enviar mensajes más libres o complejos. Después de que envíes tu
último mensaje de un representante de HUMAN
, enviar un evento de REPRESENTATIVE_LEFT
para establecer las expectativas de los usuarios.
Por ejemplo, si un usuario inicia una conversación con tu agente y
enviar un mensaje automático indicando que debe esperar un agente humano en un plazo de dos
minutos, ese mensaje debe ser enviado por un representante de BOT
. Antes del
se une un agente en vivo, envía un evento de REPRESENTATIVE_JOINED
. Todos los mensajes del
Se debe etiquetar el agente humano como si fuera un representante de HUMAN
. Cuando
El agente en vivo sale de la conversación y envía un evento REPRESENTATIVE_LEFT
. Todo
Los mensajes posteriores deben provenir de un representante de BOT
, a menos que se envíe otro
un agente se une a la conversación.
Consulta Transferencia del bot a la transmisión
agente
para una conversación de muestra y código para la transición entre BOT
y HUMAN
representantes.
Si un representante es BOT
o HUMAN
, puedes especificar un representante
nombre visible y avatar. Los usuarios pueden ver tanto los nombres visibles como los avatares.
Las imágenes de avatar deben tener un tamaño de 1024 x 1024 px y un máximo de 50 KB, y se deben especificar
como URL disponibles públicamente. Si no proporcionas una imagen de avatar, el nombre del
logotipo se usa para el avatar del representante.
Texto
Los mensajes más simples están compuestos por texto. Los mensajes de texto son más adecuados para comunicar información sin la necesidad de imágenes, interacción compleja o respuesta.
Ejemplo
El siguiente código envía un mensaje de texto simple. Para obtener información de referencia, consulta
conversations.messages.create
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a text message to the user. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#text # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'text': 'Hello world!', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' } }"
/** * This code sends a text message to the user. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#text * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a text message to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} message The message text to send the user. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, message, representativeType) { const authClient = await initCredentials(); // Create the payload for sending a message const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, text: message, }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } /** * 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); } }); }); } sendMessage(CONVERSATION_ID, 'This is a test message', 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendTextMessageSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a basic text message BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("MESSAGE_TEXT") .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""This code sends a text message to the user. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#text This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a text message message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='This is a sample text') # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Texto enriquecido
Los mensajes de texto en los que el containsRichText
se estableció como true
puede incluir lo siguiente:
el formateo básico de Markdown. Puedes incluir hipervínculos o poner el texto en negrita, o
cursiva. En la tabla se muestran algunos ejemplos válidos:
Formato | Caracteres | Texto sin formato | Texto renderizado |
---|---|---|---|
Negrita | ** |
**Some text** |
Algo de texto |
Cursiva | * |
*Some text* |
Algo de texto |
Hipervínculo | []() |
[Click here](https://www.example.com) |
Haz clic aquí |
Salto de línea | \n
|
Line one\nLine two
|
Línea uno Línea dos |
El formato debe seguir algunas reglas adicionales:
- Todos los vínculos deben comenzar con
https://
ohttp://
- Se pueden anidar diferentes tipos de formato, pero es posible que no se superpongan.
- Se permiten saltos de línea con
\n
en cualquier parte del mensaje, pero los saltos de línea en el final del mensaje no aparecen. - Para mostrar normalmente cualquiera de los caracteres reservados (
*
,\
,[
o]
), haz lo siguiente: debes agregarles un carácter de barra invertida (\
) como prefijo.
No se pueden enviar los mensajes con un formato no válido con un mensaje de error sobre Markdown no válido. La tabla muestra algunos ejemplos más válidos y no válidos según las reglas anteriores:
Texto sin formato | Validez | Texto renderizado |
---|---|---|
[Click here](www.example.com) |
No válido. El vínculo no comienza con http:// ni con https:// |
No se renderiza. |
[**Click here**](https://www.example.com) |
Válida Se permite la anidación. | Haz clic aquí |
**This is [not** valid](https://www.example.com) |
No válido. No se permite la superposición de formatos. | No se renderiza. |
** Some bold text ** |
No válido. No se permiten espacios en blanco al final dentro de ** . |
No se renderiza. |
Citation below\* |
Válida Se tiene el carácter de escape * . |
Cita debajo* |
Ejemplo
El siguiente código envía un mensaje de texto enriquecido. Para obtener información de referencia, consulta
conversations.messages.create
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a rich text to the user with a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich_text # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'fallback': 'Hello, check out this link https://www.google.com.', 'text': 'Hello, here is some **bold text**, *italicized text*, and a [link](https://www.google.com).', 'containsRichText': 'true', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' } }"
/** * This code sends a rich text to the user with a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich_text * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a rich text message using markdown to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, message, representativeType) { const authClient = await initCredentials(); // Create the payload for sending a rich text message const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, containsRichText: true, // Force this message to be processed as rich text text: 'Hello, here is some **bold text**, *italicized text*, and a [link](https://www.google.com).', fallback: 'Hello, check out this link https://www.google.com.' }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } /** * 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendRichTextMessageSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a rich text message BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setContainsRichText(true) // Force this message to be processed as rich text .setText("Hello, here is some **bold text**, *italicized text*, and a [link](https://www.google.com).") .setFallback("Hello, check out this link https://www.google.com.") .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""This code sends a rich text to the user with a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich_text This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a rich text message with fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), fallback='Hello, check out this link https://www.google.com.', containsRichText=True, # Force this message to be processed as rich text representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Hello, here is some **bold text**, *italicized text*, and a [link](https://www.google.com).') # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Imágenes
Envía una imagen a un usuario en un mensaje.
Puedes enviar un mensaje de imagen con las URLs a la imagen y a la miniatura de la imagen.
Ejemplo
El siguiente código envía una imagen. Para dar formato y
opciones de valores, consulta
conversations.messages.create
y
Image
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends an image to the user with a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#images # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, 'fallback': 'Hello, world!\nAn image has been sent with Business Messages.', 'image': { 'contentInfo':{ 'altText': 'Image alternative text', 'fileUrl': 'https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg', 'forceRefresh': 'false' } }, }"
/** * This code sends an image to the user with a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#images * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts an image message to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, representativeType) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending an image message const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Hello, world!\n An image has been sent with Business Messages.', image: { contentInfo: { altText: 'Some alternative text', fileUrl: 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png', forceRefresh: true, }, }, }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import com.google.communications.businessmessages.v1.MediaHeight; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendImageMessageSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create an Image BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setRepresentative(representative) .setImage(new BusinessMessagesImage() .setContentInfo( new BusinessMessagesContentInfo() .setFileUrl("FILE_URL") .setAltText("ALT_TEXT") .setForceRefresh("FORCE_REFRESH") )); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""This code sends an image to the user with a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#images This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessMessagesContentInfo from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesImage from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' image_file_url = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create an image message with fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), fallback='Hello, world!\nAn image has been sent with Business Messages.', image=BusinessMessagesImage( contentInfo=BusinessMessagesContentInfo( altText='Alternative text', fileUrl=image_file_url, forceRefresh=True ) )) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Respuestas sugeridas
Las respuestas sugeridas guían a los usuarios a través de las conversaciones, ya que ofrecen respuestas que tu agente sabe cómo reaccionar.
Cuando un usuario presiona una respuesta sugerida, tu agente recibe un mensaje que el texto y los datos de notificación de conversión de la respuesta.
Las respuestas sugeridas tienen 25 caracteres como máximo, y un mensaje tiene un máximo de 25 caracteres. de 13 sugerencias.
Ejemplo
El siguiente código envía texto con dos respuestas sugeridas. Para dar formato y
opciones de valores, consulta
conversations.messages.create
y
SuggestedReply
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a text mesage to the user with suggested replies. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#suggested_replies # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', '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', }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, }"
/** * This code sends a text mesage to the user with suggested replies. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#suggested_replies * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a message of "Hello, world!" to the Business Messages API along with two suggested replies. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, representativeType) { const authClient = await initCredentials(); // Create a text message with two suggested replies const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Hello, world!\n\nReply with "Hello" or "Hi!"', text: 'Hello, world!', suggestions: [ { reply: { text: 'Hello', postbackData: 'hello-formal', }, }, { reply: { text: 'Hello', postbackData: 'hello-informal', }, }, ], }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } /** * 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendSuggestedReplySnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with two suggested replies BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Hello, world!") .setFallback("Hello, world!\n\nReply with \"Hello\" or \"Hi!\"") .setSuggestions(Arrays.asList( new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Hello").setPostbackData("hello-formal") ), new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Hi!").setPostbackData("hello-informal") )) ) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""This code sends a text mesage to the user with suggested replies. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#suggested_replies This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedReply from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a text message with two suggested replies and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Hello, world!', fallback='Hello, world!\n\nReply with \"Hello\" or \"Hi!\"', suggestions=[ BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Hello', postbackData='hello-formal') ), BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Hi!', postbackData='hello-informal') ) ]) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Acciones sugeridas
Las acciones sugeridas guían a los usuarios a través de las conversaciones con la tecnología nativa la funcionalidad de sus dispositivos. Cuando un usuario presiona una acción sugerida, tus el agente recibe un mensaje que contiene los datos de texto y de notificación de conversión de la acción.
Las acciones sugeridas tienen 25 caracteres como máximo, y los mensajes tienen un máximo de de 13 sugerencias.
Para ver las opciones de formato y valor, consulta
conversations.messages.create
y
SuggestedAction
Acción de abrir URL
Con la acción Abrir URL, tu agente sugiere una URL para que un usuario la abra. Si un se registra como un controlador predeterminado para la URL, la aplicación se abre en su lugar y el icono de la acción es el icono de la aplicación. Las acciones de URL abiertas solo admiten URLs con protocolos HTTP y HTTPS, otros protocolos (como mailto) no se no es compatible.
El siguiente código envía texto con una acción de Open URL. Para el formato y el valor
opciones, consulta
OpenUrlAction
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a text mesage to the user with a suggestion action toopen a URL # and a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#open_url_action # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'text': 'Hello world!', 'fallback': 'Hello, world!\n\nSay \"Hello\" at https://www.growingtreebank.com', 'suggestions': [ { 'action': { 'text': 'Hello', 'postbackData': 'hello-formal', 'openUrlAction': { 'url': 'https://www.growingtreebank.com', } }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, }"
/** * This code sends a text mesage to the user with a suggestion action toopen a URL * and a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#open_url_action * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a message with an open URL action to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, representativeType) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending a message along with an open url action const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Hello, world!\n\nSay \"Hello\" at https://www.growingtreebank.com', text: 'Hello world!', suggestions: [ { action: { text: 'Hello', postbackData: 'hello-formal', openUrlAction: { url: 'https://www.growingtreebank.com', }, }, }, ], }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendSuggestedActionSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with an open url action BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Hello world!") .setFallback("Hello, world!\n\nSay \"Hello\" at https://www.growingtreebank.com") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setAction(new BusinessMessagesSuggestedAction() .setText("Hello").setPostbackData("hello-formal") .setOpenUrlAction( new BusinessMessagesOpenUrlAction().setUrl("https://www.growingtreebank.com")) )) ) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""This code sends a text mesage to the user with a suggestion action to open a URL. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#open_url_action This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesOpenUrlAction from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedAction from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a text message with an open url action and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Hello, world!', fallback='Hello, world!\n\nReply with \"Hello\" or \"Hi!\"', suggestions=[ BusinessMessagesSuggestion( action=BusinessMessagesSuggestedAction( text='Hello', postbackData='hello-formal', openUrlAction=BusinessMessagesOpenUrlAction( url='https://www.growingtreebank.com')) ), ]) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Acción de marcado
La acción Marcar sugiere un número de teléfono para que el usuario marque. Cuando un usuario toca un Chip de sugerencias de acciones de marcado, se abre la app de Teléfono predeterminada del usuario con el número de teléfono especificado prepropagado.
El siguiente código envía texto con una acción de Marcar. Para el formato y el valor
opciones, consulta
DialAction
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a text mesage to the user with a suggestion action to dial # a phone number and a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#dial_action # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'text': 'Contact support for help with this issue.', 'fallback': 'Give us a call at +12223334444.', 'suggestions': [ { 'action': { 'text': 'Call support', 'postbackData': 'call-support', 'dialAction': { 'phoneNumber': '+12223334444', } }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, }"
/** * This code sends a text mesage to the user with a suggestion action to dial * a phone number and a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#dial_action * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a message with a dial suggested action to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, representativeType) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending a message along with a dial action const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Give us a call at +12223334444.', text: 'Contact support for help with this issue.', suggestions: [ { action: { text: 'Call support', postbackData: 'call-support', dialAction: { phoneNumber: '+12223334444', }, }, }, ], }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendDialActionSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with a dial action BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Contact support for help with this issue.") .setFallback("Give us a call at +12223334444.") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setAction(new BusinessMessagesSuggestedAction() .setText("Call support").setPostbackData("call-support") .setDialAction( new BusinessMessagesDialAction().setPhoneNumber("+12223334444")) ))) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""Sends a text mesage to the user with a suggestion action to dial a phone number. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#dial_action This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesDialAction from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedAction from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a text message with a dial action and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Contact support for help with this issue.', fallback='Give us a call at +12223334444.', suggestions=[ BusinessMessagesSuggestion( action=BusinessMessagesSuggestedAction( text='Call support', postbackData='call-support', dialAction=BusinessMessagesDialAction( phoneNumber='+12223334444')) ), ]) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Sugerencia de solicitud de autenticación
La sugerencia de solicitud de autenticación solicita a los usuarios que accedan a un Aplicación compatible con OAuth 2.0, pasando los códigos de autenticación para confirmar datos de la cuenta de Google Ads y habilitar experiencias de usuario personalizadas y conversaciones detalladas a los flujos de trabajo. Consulta Autenticación con OAuth
Ejemplo
El siguiente código envía texto con una sugerencia de solicitud de autenticación. Para
de formato y valores, consulta
conversations.messages.create
y
Suggestion
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a text message to the user with an authentication request suggestion # that allows the user to authenticate with OAuth. It also has a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#authentication-request-suggestion # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json # Replace the __CLIENT_ID__ # Replace the __CODE_CHALLENGE__ # Replace the __SCOPE__ curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'text': 'Sign in to continue the conversation.', 'fallback': 'Visit support.growingtreebank.com to continue.', 'suggestions': [ { 'authenticationRequest': { 'oauth': { 'clientId': '__CLIENT_ID__', 'codeChallenge': '__CODE_CHALLENGE__', 'scopes': [ '__SCOPE__', ], }, }, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' } }"
/** * This code sends a text message to the user with an authentication request suggestion * that allows the user to authenticate with OAuth. It also has a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#authentication-request-suggestion * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Before continuing, learn more about the prerequisites for authenticating * with OAuth at: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/oauth?hl=en * * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const OAUTH_CLIENT_ID = 'EDIT_HERE'; const OAUTH_CODE_CHALLENGE = 'EDIT_HERE'; const OAUTH_SCOPE = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a message to the Business Messages API along with an authentication request. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, representativeType) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending a message along with an authentication request const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, fallback: 'Visit support.growingtreebank.com to continue.', text: 'Sign in to continue the conversation.', suggestions: [ { authenticationRequest: { oauth: { clientId: OAUTH_CLIENT_ID, codeChallenge: OAUTH_CODE_CHALLENGE, scopes: [OAUTH_SCOPE] } } }, ], }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendAuthenticationRequestSuggestionSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with an authentication request BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Would you like to chat with a live agent?") .setFallback("Would you like to chat with a live agent?") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setAuthenticationRequest(new BusinessMessagesAuthenticationRequest() .setOauth(new BusinessMessagesAuthenticationRequestOauth() .setClientId("CLIENT_ID") .setCodeChallenge("CODE_CHALLENGE") .setScopes(Arrays.asList("SCOPE")) ))) ) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""Sends a text message to the user with an authentication request suggestion. It allows the user to authenticate with OAuth and has a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#authentication-request-suggestion This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessMessagesAuthenticationRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesAuthenticationRequestOauth from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Before continuing, learn more about the prerequisites for authenticating # with OAuth at: https://developers.google.com/business-communications/business-messages/guides/how-to/integrate/oauth?hl=en # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' oauth_client_id = 'EDIT_HERE' oauth_code_challenge = 'EDIT_HERE' oauth_scope = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a text message with an authentication request message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), text='Sign in to continue the conversation.', fallback='Visit support.growingtreebank.com to continue.', suggestions=[ BusinessMessagesSuggestion( authenticationRequest=BusinessMessagesAuthenticationRequest( oauth=BusinessMessagesAuthenticationRequestOauth( clientId=oauth_client_id, codeChallenge=oauth_code_challenge, scopes=[oauth_scope]) ) ), ] ) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Sugerencia de solicitud de agente en vivo
La sugerencia de solicitud de agente en vivo te permite guiar a los usuarios para que interactúen con representantes humanos durante interacciones complejas o cuando la automatización no puede manejar una solicitud de usuario.
Los usuarios pueden solicitar un agente humano en cualquier momento de una conversación desde el menú ampliado. . Esta sugerencia les da a los agentes una forma de sugerir de manera programática interacciones con representantes humanos en función del contexto del conversación. Tu agente siempre debe estar listo para responderle a un agente humano evento solicitado, incluso si no se envió una sugerencia de solicitud de agente en vivo.
Cuando los usuarios presionan una sugerencia de solicitud de agente en vivo, se activa un agente en vivo. solicitado evento.
Ejemplo
El siguiente código envía texto con una sugerencia de solicitud de agente en vivo. Para
de formato y valores, consulta
conversations.messages.create
y
Suggestion
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a text message to the user with a Live agent request suggestion # that allows the user to connect with a Live agent. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#live_agent_request_suggestion # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'text': 'Would you like to chat with a live agent?', 'fallback': 'Would you like to chat with a live agent?', 'suggestions': [ { 'liveAgentRequest': {}, }, ], 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, }"
/** * This code sends a text message to the user with a Live agent request suggestion * that allows the user to connect with a Live agent. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#live_agent_request_suggestion * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a message with a live agent request action to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. */ async function sendMessage(conversationId) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending a message along with a request for live agent action const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: 'BOT', // Must be sent from a BOT representative }, fallback: 'Would you like to chat with a live agent?', text: 'Would you like to chat with a live agent?', suggestions: [ { liveAgentRequest: {} }, ], }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } 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); } }); }); } sendMessage(CONVERSATION_ID);
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendLiveAgentRequestSuggestionSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a text message with a live request action BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setText("Would you like to chat with a live agent?") .setFallback("Would you like to chat with a live agent?") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setLiveAgentRequest(new BusinessMessagesLiveAgentRequest())) ) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("BOT")); // Must be sent from a BOT representative // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""Sends a text message to the user with a Live agent request suggestion. It allows the user to connect with a Live agent. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#live_agent_request_suggestion This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesLiveAgentRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) # Create a text message with a live agent request action and fallback text # Follow instructions at https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#live_agent_request_suggestion message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( # Must be sent from a BOT representative representativeType=BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT ), text='Would you like to chat with a live agent?', fallback='Would you like to chat with a live agent?', suggestions=[ BusinessMessagesSuggestion( liveAgentRequest=BusinessMessagesLiveAgentRequest() ) ]) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Tarjetas enriquecidas
Cuando necesitas enviar información, contenido multimedia o sugerencias relacionadas, debería enviar una tarjeta enriquecida. Las tarjetas enriquecidas permiten que tu agente envíe varias unidades de información en un solo mensaje.
Las tarjetas enriquecidas pueden contener los siguientes elementos:
- Contenido multimedia (JPG, JPEG o PNG, 5 MB como máximo)
- Miniatura de contenido multimedia (en formato JPG, JPEG o PNG, 25 KB como máximo)
- Título (200 caracteres como máximo)
- Descripción (2,000 caracteres como máximo)
- Una lista de respuestas sugeridas y acciones sugeridas (4 como máximo)
Una tarjeta enriquecida puede contener algunos de los elementos de la lista o todos, al menos contenido multimedia o un título para que sean válidos. Una tarjeta enriquecida puede contener un máximo de cuatro acciones sugeridas y respuestas sugeridas.
El agente puede enviar varias tarjetas enriquecidas en una tarjeta enriquecida carrusel.
Ejemplo
El siguiente código envía una tarjeta enriquecida con una imagen y respuestas sugeridas. Para
de formato y valores, consulta
conversations.messages.create
y
RichCard
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends a rich card to the user with a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-cards # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, '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' } } ] } } } }"
/** * This code sends a rich card to the user with a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-cards * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a rich card message to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, representativeType) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending a rich card message with two suggested replies const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, 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', }, }, ], }, }, }, }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import com.google.communications.businessmessages.v1.MediaHeight; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendRichCardMessageSnippet { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a rich card with two suggested replies BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setFallback("Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"") .setRichCard(new BusinessMessagesRichCard() .setStandaloneCard(new BusinessMessagesStandaloneCard() .setCardContent( new BusinessMessagesCardContent() .setTitle("Hello, world!") .setDescription("Sent with Business Messages.") .setSuggestions(Arrays.asList( new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Suggestion #1").setPostbackData("suggestion_1") ), new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Suggestion #2").setPostbackData("suggestion_2") )) ) .setMedia(new BusinessMessagesMedia() .setHeight(MediaHeight.MEDIUM.toString()) .setContentInfo( new BusinessMessagesContentInfo() .setAltText("Google logo") .setFileUrl("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png") .setForceRefresh(false) )) ))) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""This code sends a rich card to the user with a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-cards This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessMessagesCardContent from businessmessages.businessmessages_v1_messages import BusinessMessagesContentInfo from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMedia from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesRichCard from businessmessages.businessmessages_v1_messages import BusinessMessagesStandaloneCard from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedReply from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a rich card message with two suggested replies and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), fallback='Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"', richCard=BusinessMessagesRichCard( standaloneCard=BusinessMessagesStandaloneCard( cardContent=BusinessMessagesCardContent( title='Hello, world!', description='Sent with Business Messages.', suggestions=[ BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Suggestion #1', postbackData='suggestion_1') ), BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Suggestion #2', postbackData='suggestion_2') ) ], media=BusinessMessagesMedia( height=BusinessMessagesMedia.HeightValueValuesEnum.TALL, contentInfo=BusinessMessagesContentInfo( altText='Google logo', fileUrl='https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png', forceRefresh=False )) )))) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)
Carruseles de tarjeta enriquecida
Cuando necesites presentar a un usuario varias opciones entre las cuales elegir, usa un carrusel de tarjetas enriquecidas. Carruseles que unen múltiples elementos enriquecidos tarjetas que permiten a los usuarios comparar elementos y reaccionar a cada uno individualmente.
Los carruseles pueden contener un mínimo de dos y un máximo de diez tarjetas enriquecidas. Enriquecido las tarjetas dentro de los carruseles deben cumplir con los requisitos generales de tarjetas enriquecidas para el contenido y la altura.
Ejemplo
El siguiente código envía un carrusel de tarjetas enriquecidas. Para dar formato y
opciones de valores, consulta
conversations.messages.create
y
RichCard
# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # https://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # This code sends to the user a carousel with rich cards and a fallback text. # Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-card-carousels # Replace the __CONVERSATION_ID__ with a conversation id that you can send messages to # Make sure a service account key file exists at ./service_account_key.json curl -X POST "https://businessmessages.googleapis.com/v1/conversations/__CONVERSATION_ID__/messages" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/business-messages" \ -H "$(oauth2l header --json ./service_account_key.json businessmessages)" \ -d "{ 'messageId': '$(uuidgen)', 'representative': { 'avatarImage': 'https://developers.google.com/identity/images/g-logo.png', 'displayName': 'Chatbot', 'representativeType': 'BOT' }, '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://storage.googleapis.com/kitchen-sink-sample-images/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://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg', 'forceRefresh': 'false', } } } ] } } }"
/** * This code sends to the user a carousel with rich cards and a fallback text. * Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-card-carousels * * This code is based on the https://github.com/google-business-communications/nodejs-businessmessages Node.js * Business Messages client library. */ /** * Edit the values below: */ const PATH_TO_SERVICE_ACCOUNT_KEY = './service_account_key.json'; const CONVERSATION_ID = 'EDIT_HERE'; const businessmessages = require('businessmessages'); const uuidv4 = require('uuid').v4; const {google} = require('googleapis'); // Initialize the Business Messages API const bmApi = new businessmessages.businessmessages_v1.Businessmessages({}); // Set the scope that we need for the Business Messages API const scopes = [ 'https://www.googleapis.com/auth/businessmessages', ]; // Set the private key to the service account file const privatekey = require(PATH_TO_SERVICE_ACCOUNT_KEY); /** * Posts a carousel card message to the Business Messages API. * * @param {string} conversationId The unique id for this user and agent. * @param {string} representativeType A value of BOT or HUMAN. */ async function sendMessage(conversationId, representativeType) { const authClient = await initCredentials(); if (authClient) { // Create the payload for sending carousel message // with two cards and a suggested reply for each card const apiParams = { auth: authClient, parent: 'conversations/' + conversationId, resource: { messageId: uuidv4(), representative: { representativeType: representativeType, }, 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://storage.googleapis.com/kitchen-sink-sample-images/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://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg', forceRefresh: 'false', } } } ] } } }, }; // Call the message create function using the // Business Messages client library bmApi.conversations.messages.create(apiParams, {auth: authClient}, (err, response) => { console.log(err); console.log(response); }); } 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); } }); }); } sendMessage(CONVERSATION_ID, 'BOT');
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler; import com.google.api.client.http.HttpRequest; 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.client.util.ExponentialBackOff; import com.google.api.services.businessmessages.v1.Businessmessages; import com.google.api.services.businessmessages.v1.model.*; import com.google.communications.businessmessages.v1.MediaHeight; import java.io.FileInputStream; import java.util.Arrays; import java.util.UUID; class SendRichCardCarouselMessage { /** * Initializes credentials used by the Business Messages API. */ private static Businessmessages.Builder getBusinessMessagesBuilder() { Businessmessages.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/businessmessages")); credential.refreshToken(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); // Create instance of the Business Messages API builder = new Businessmessages .Builder(httpTransport, jsonFactory, null) .setApplicationName("Sample Application"); // Set the API credentials and endpoint builder.setHttpRequestInitializer(credential); } catch (Exception e) { e.printStackTrace(); } return builder; } public static void main(String args[]) { try { String conversationId = "CONVERSATION_ID"; // Create client library reference Businessmessages.Builder builder = getBusinessMessagesBuilder(); // Create a rich card with two suggested replies BusinessMessagesMessage message = new BusinessMessagesMessage() .setMessageId(UUID.randomUUID().toString()) .setFallback("Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"") .setRichCard(new BusinessMessagesRichCard() .setCarouselCard(new BusinessMessagesCarouselCard().setCardWidth("MEDIUM") .setCardContents(Arrays.asList( new BusinessMessagesCardContent() .setTitle("Card #1") .setDescription("The description for card #1") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Card #1").setPostbackData("card_1") ))) .setMedia(new BusinessMessagesMedia() .setHeight(MediaHeight.MEDIUM.toString()) .setContentInfo(new BusinessMessagesContentInfo() .setFileUrl("https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg"))), new BusinessMessagesCardContent() .setTitle("Card #2") .setDescription("The description for card #2") .setSuggestions(Arrays.asList(new BusinessMessagesSuggestion() .setReply(new BusinessMessagesSuggestedReply() .setText("Card #2").setPostbackData("card_2") ))) .setMedia(new BusinessMessagesMedia() .setHeight(MediaHeight.MEDIUM.toString()) .setContentInfo(new BusinessMessagesContentInfo() .setFileUrl("https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg"))) ) ))) .setRepresentative(new BusinessMessagesRepresentative() .setRepresentativeType("TYPE")); // Create message request Businessmessages.Conversations.Messages.Create messageRequest = builder.build().conversations().messages() .create("conversations/" + conversationId, message); // Setup retries with exponential backoff HttpRequest httpRequest = ((AbstractGoogleClientRequest) messageRequest).buildHttpRequest(); httpRequest.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler( new ExponentialBackOff())); // Execute request httpRequest.execute(); } catch (Exception e) { e.printStackTrace(); } } }
"""This code sends to the user a carousel with rich cards and a fallback text. Read more: https://developers.google.com/business-communications/business-messages/guides/how-to/message/send?hl=en#rich-card-carousels This code is based on the https://github.com/google-business-communications/python-businessmessages Python Business Messages client library. """ import uuid from businessmessages import businessmessages_v1_client as bm_client from businessmessages.businessmessages_v1_messages import BusinessMessagesCardContent from businessmessages.businessmessages_v1_messages import BusinessMessagesCarouselCard from businessmessages.businessmessages_v1_messages import BusinessMessagesContentInfo from businessmessages.businessmessages_v1_messages import BusinessmessagesConversationsMessagesCreateRequest from businessmessages.businessmessages_v1_messages import BusinessMessagesMedia from businessmessages.businessmessages_v1_messages import BusinessMessagesMessage from businessmessages.businessmessages_v1_messages import BusinessMessagesRepresentative from businessmessages.businessmessages_v1_messages import BusinessMessagesRichCard from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestedReply from businessmessages.businessmessages_v1_messages import BusinessMessagesSuggestion from oauth2client.service_account import ServiceAccountCredentials # Edit the values below: path_to_service_account_key = './service_account_key.json' conversation_id = 'EDIT_HERE' credentials = ServiceAccountCredentials.from_json_keyfile_name( path_to_service_account_key, scopes=['https://www.googleapis.com/auth/businessmessages']) client = bm_client.BusinessmessagesV1(credentials=credentials) representative_type_as_string = 'BOT' if representative_type_as_string == 'BOT': representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.BOT else: representative_type = BusinessMessagesRepresentative.RepresentativeTypeValueValuesEnum.HUMAN # Create a carousel message with two cards and a suggested reply for each card # and fallback text message = BusinessMessagesMessage( messageId=str(uuid.uuid4().int), representative=BusinessMessagesRepresentative( representativeType=representative_type ), 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=BusinessMessagesRichCard( carouselCard=BusinessMessagesCarouselCard( cardWidth=BusinessMessagesCarouselCard.CardWidthValueValuesEnum.MEDIUM, cardContents=[ BusinessMessagesCardContent( title='Card #1', description='The description for card #1', suggestions=[ BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Card #1', postbackData='card_1') ) ], media=BusinessMessagesMedia( height=BusinessMessagesMedia.HeightValueValuesEnum.MEDIUM, contentInfo=BusinessMessagesContentInfo( fileUrl='https://storage.googleapis.com/kitchen-sink-sample-images/cute-dog.jpg', forceRefresh=False))), BusinessMessagesCardContent( title='Card #2', description='The description for card #2', suggestions=[ BusinessMessagesSuggestion( reply=BusinessMessagesSuggestedReply( text='Card #2', postbackData='card_2') ) ], media=BusinessMessagesMedia( height=BusinessMessagesMedia.HeightValueValuesEnum.MEDIUM, contentInfo=BusinessMessagesContentInfo( fileUrl='https://storage.googleapis.com/kitchen-sink-sample-images/elephant.jpg', forceRefresh=False))) ]))) # Create the message request create_request = BusinessmessagesConversationsMessagesCreateRequest( businessMessagesMessage=message, parent='conversations/' + conversation_id) # Send the message bm_client.BusinessmessagesV1.ConversationsMessagesService( client=client).Create(request=create_request)