Envía mensajes

Los agentes de RCS for Business se comunican con los usuarios enviando y recibiendo mensajes. Para enviar mensajes a los usuarios, su agente envía solicitudes de mensajes a la API de mensajería empresarial de RCS. Una sola solicitud puede incluir texto , tarjetas enriquecidas , archivos multimedia y PDF , respuestas sugeridas y acciones sugeridas .

La plataforma RCS for Business devuelve errores en determinadas situaciones para ayudarle a gestionar la entrega de mensajes:

  • Si envía un mensaje a un usuario cuyo dispositivo no admite RCS o no lo tiene habilitado, la plataforma RCS for Business devuelve un error 404 NOT_FOUND. En este caso, puede intentar contactar con el usuario mediante los métodos alternativos definidos en su infraestructura.
  • Si envía un mensaje a un usuario de RCS en una red donde su agente aún no se ha iniciado, o en una red que no ha habilitado el tráfico RCS, la plataforma RCS for Business devuelve un error 404 NOT_FOUND.
  • Si envía un mensaje con funciones que el dispositivo del usuario no admite, la plataforma RCS for Business devuelve el error 400 INVALID_ARGUMENT y no entrega el mensaje.

Como parte de tu estrategia de mensajería multicanal, lo mejor es revocar los mensajes que no se entregan después de un tiempo razonable y enviarlos a través de un canal diferente. Para revocar mensajes automáticamente en un momento predefinido, configura una fecha de caducidad para los mensajes .

El destinatario está desconectado.

La plataforma RCS for Business acepta el envío de mensajes aunque el destinatario esté desconectado. Recibirá una respuesta 200 OK y la plataforma RCS for Business retendrá el mensaje e intentará reenviarlo durante 30 días. No es necesario solicitar a RCS for Business que vuelva a enviar el mensaje.

RCS for Business elimina los mensajes no entregados 30 días después de su envío.

Dependiendo del caso de uso de su agente, es posible que desee revocar un mensaje no entregado antes de que transcurran 30 días. La revocación puede evitar que los usuarios sin conexión reciban un mensaje obsoleto cuando vuelvan a conectarse. Existen varias maneras de revocar un mensaje:

Establecer una fecha de caducidad para los mensajes

¿El mensaje de tu agente es urgente? Por ejemplo, las contraseñas de un solo uso (OTP) solo son válidas por un tiempo limitado. Las ofertas por tiempo limitado caducan. Y los recordatorios de citas dejan de ser relevantes después de la fecha de la cita. Para que los mensajes sean oportunos y relevantes, establece una fecha de caducidad. Esto evita que los usuarios sin conexión reciban contenido obsoleto al conectarse. La fecha de caducidad también es una buena señal para activar tu estrategia de mensajería alternativa, de modo que los usuarios reciban la información que necesitan a tiempo.

Para establecer un tiempo de caducidad para los mensajes, especifique uno de los siguientes campos en el mensaje del agente:

  • expireTime : la hora exacta en UTC en la que caduca el mensaje.
  • ttl (tiempo de vida): la cantidad de tiempo antes de que caduque el mensaje.

Para opciones de formato y valores, consulte AgentMessage .

El valor máximo para ttl y expireTime es de 15 días después del envío del mensaje.

Si bien no existe un valor mínimo ttl y expireTime , se recomienda que transcurran al menos 10 segundos después del envío del mensaje para reducir significativamente la probabilidad de recibir notificaciones tanto de revocación como de entrega.

Tiempo de vida (TTL) para un mensaje

Al establecer un TTL para un mensaje de RCS for Business, se especifica durante cuánto tiempo se considerará válido y entregable. Si el mensaje no se entrega correctamente al dispositivo del usuario dentro de este período de TTL, la plataforma RCS for Business intenta revocarlo automáticamente.

Al solicitar la revocación de un mensaje, se pide a la plataforma RCS for Business que deje de intentar entregar ese mensaje en particular. Sin embargo, esta acción solo afecta a los intentos de entrega futuros. Si el dispositivo del usuario ya ha recibido el mensaje correctamente, este se encuentra en proceso y la plataforma RCS for Business no puede revocarlo.

Esto es lo que puede esperar en cuanto a las notificaciones:

  • Mensaje entregado dentro del TTL: Si el dispositivo del usuario se conecta y recibe el mensaje antes de que expire el TTL, recibirá una notificación DELIVERED . No se enviará ninguna notificación de revocación, ya que el mensaje se entregó correctamente. Este es el escenario más común y esperado.

  • Mensaje no entregado antes de que expire el TTL: Si el TTL expira antes de que el mensaje llegue al dispositivo del usuario (por ejemplo, si el dispositivo está sin conexión), la plataforma RCS for Business intenta revocar el mensaje. Recibirá una notificación TTL_EXPIRATION_REVOKED , que indica que el mensaje se eliminó correctamente de la cola de entrega. En este caso, el usuario no recibirá el mensaje.

Recomendaciones para el manejo de casos excepcionales

Nuestro sistema procesa la entrega de mensajes RCS for Business y la expiración de TTL en paralelo. Por este motivo, en raras ocasiones, puede que se produzcan casos excepcionales en los que la sincronización de las notificaciones sea inesperada. Por ejemplo, podría recibir tanto una notificación de entrega como una de TTL, o ninguna de las dos.

Estas son nuestras recomendaciones para gestionar las notificaciones de mensajes de RCS for Business:

  • Notificación DELIVERED : Si recibe una notificación DELIVERED para un mensaje, significa que el mensaje llegó al usuario. Puede ignorar sin problema cualquier notificación TTL posterior para ese mensaje en particular.

  • Notificación TTL_EXPIRATION_REVOKED : Si recibe una notificación TTL con el estado TTL_EXPIRATION_REVOKED , significa que el sistema RCS for Business deja de intentar entregar ese mensaje específico. Debe considerar este mensaje como no entregado y, si es necesario, aplicar su estrategia de reserva.

  • Notificación TTL con cualquier otro estado: Si recibe una notificación TTL con cualquier otro estado, esto indica un intento de revocación inconcluso.

    • Para mensajes críticos, como contraseñas de un solo uso (OTP), active su método de respaldo.
    • Para los mensajes no críticos, decida si debe o no activar la opción de respaldo.
  • Sin notificaciones: En casos excepcionales, el sistema podría no enviar una notificación TTL y el cliente podría no generar una notificación de entrega. Esto es extremadamente raro.

Establecer el tipo de tráfico de mensajes

La API RBM incluye un campo messageTrafficType para categorizar los mensajes. Si bien los casos de uso de los agentes aún definen su comportamiento y las reglas de negocio aplicables, messageTrafficType permite una categorización más detallada del contenido de los mensajes. En definitiva, esto posibilita que un solo agente gestione múltiples casos de uso. Por el momento, esto no afecta a los casos de uso ni a las reglas de negocio existentes.

Este campo es opcional, pero se recomienda configurarlo ahora para evitar errores cuando se vuelva obligatorio.

Para configurar el tipo de tráfico de mensajes, asigne el messageTrafficType apropiado para cada mensaje según su contenido. RCS for Business admite los siguientes tipos de tráfico.

Tipo de tráfico Contenido del mensaje Caso de uso del agente
AUTHENTICATION Para mensajes de autenticación. OTP
TRANSACTION Para mensajes relacionados con los servicios o productos que un usuario ya tiene contratados. Por ejemplo: confirmaciones, recibos de pago o detalles de la reserva. Transaccional o multiuso
PROMOTION Para mensajes promocionales como ofertas, descuentos, anuncios u otro contenido promocional. Promocional o de uso múltiple
SERVICEREQUEST Para mensajes sobre servicios que el usuario ha solicitado explícitamente. OTP, transaccional, promocional o multiuso
ACKNOWLEDGEMENT Para mensajes que se utilizan para confirmar la acción de un usuario, específicamente una solicitud de baja de suscripción. Esto confirma que la solicitud del usuario se recibió y se está procesando. OTP, transaccional, promocional o multiuso

Si no se establece ningún tipo de tráfico, el sistema asigna el tipo predeterminado para el caso de uso del agente .

Caso de uso del agente Tipo de tráfico predeterminado
OTP AUTHENTICATION
Transaccional TRANSACTION
Promocional PROMOTION
Multiuso MESSAGE_TRAFFIC_TYPE_UNSPECIFIED

Los agentes multiuso no tienen un tipo de tráfico predeterminado. Debe configurar explícitamente el tipo de tráfico para cada mensaje según su contenido. Si no reemplaza el valor MESSAGE_TRAFFIC_TYPE_UNSPECIFIED , se producirá un error.

Límites de tamaño de mensaje

El tamaño máximo del AgentMessage completo en formato de cadena es de 250 KB. La parte de texto del mensaje tiene su propio límite de 3072 caracteres.

Para evitar un consumo de datos inesperado por parte de los usuarios, el tamaño máximo de un archivo que se puede enviar a través de RCS for Business es de 100 MiB, y el tamaño total combinado de todos los archivos multimedia y PDF adjuntos dentro de un mismo mensaje de RCS for Business no debe superar los 100 MiB. (1 MiB = 1.048.576 bytes). Para obtener más información, consulte la sección sobre archivos multimedia y PDF .

Texto

Los mensajes más sencillos se componen de texto. Los mensajes de texto son ideales para comunicar información sin necesidad de elementos visuales, interacción compleja ni respuesta.

Ejemplo

El siguiente código envía un mensaje de texto plano. Para opciones de formato y valores, consulte phones.agentMessages.create .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!"
  },
  "messageTrafficType": "PROMOTION"
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
};

// Send a simple message to the device
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Send simple text message to user
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444"
   );
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a simple RBM text message
message_text = messages.TextMessage('Hello, world!')

# Send text message to the device
messages.MessageCluster().append_message(message_text).send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
);
Este código es un extracto de un agente de ejemplo de RBM .

Contenido básico del mensaje: conversión de SMS

Las operadoras han introducido modelos de facturación para facilitar la migración de mensajes SMS a RCS para empresas. Un mensaje RCS para empresas que contiene hasta 160 caracteres UTF-8 se denomina Mensaje Básico.

Al crear una solicitud para enviar un mensaje básico, recuerde que cada carácter cuenta como 1 byte (UTF-8). Si envía un mensaje que contiene caracteres especiales, como emojis o un conjunto de caracteres multibyte, cada carácter cuenta como 2 a 4 caracteres UTF-8 o más.

Introduce un texto en el cuadro para comprobar su longitud:

Los clientes RCS pueden implementar vistas previas de enlaces. Si un mensaje RCS for Business de solo texto incluye una URL para un sitio web con etiquetas OpenGraph , el cliente puede generar una vista previa (imagen, título, etc.), lo que proporciona una experiencia más completa. Por ejemplo, vea un mensaje básico con una vista previa de URL .

Tenga en cuenta que el cliente RCS puede permitir al usuario desactivar las vistas previas de los enlaces.

Contraseñas de un solo uso para la verificación del usuario

Puedes usar RCS para empresas para enviar contraseñas de un solo uso (OTP) para la verificación automática de usuarios con la API de SMS Retriever. No existe una API específica para leer las OTP que llegan a través de RCS para empresas.

Cómo funciona en Android

Para las aplicaciones de Android registradas en la API de SMS Retriever , la API espera un mensaje RCS for Business con el formato correcto. Este mensaje debe contener tanto la contraseña de un solo uso (OTP) como un hash único que identifique la aplicación.

Cuando se recibe un mensaje RCS for Business con el formato correcto, la API de SMS Retriever lo procesa como si fuera un código OTP por SMS. Una vez que el hash coincide con el de tu aplicación, se extrae el código OTP y se envía a tu aplicación para la verificación automática del usuario.

  • Mensaje de texto de ejemplo de RCS para empresas para la verificación del usuario: Your code is <OTP><app hash>.
  • Ejemplo: Your code is 123456 M8tue43FGT.

Para obtener más información sobre SMS Retriever y las API relacionadas, consulte la documentación de SMS Retriever . Para obtener detalles sobre la verificación automática de usuarios en aplicaciones registradas con la API de SMS Retriever, consulte este diagrama de flujo .

Cómo funciona en iOS

En iOS, el sistema detecta y sugiere automáticamente los códigos OTP de RCS para empresas para que se rellenen automáticamente, al igual que con los códigos OTP de SMS. No se requiere ninguna integración de API específica para que la aplicación de iOS lea el código OTP.

Archivos multimedia y PDF

Cuando envíe un mensaje con una imagen, vídeo, audio o archivo PDF, su agente deberá proporcionar una URL de acceso público para el contenido o subir el archivo directamente.

El tamaño máximo de un archivo que se puede enviar es de 100 MiB, y el tamaño total combinado de todos los archivos multimedia y PDF adjuntos dentro de un solo mensaje no debe exceder los 100 MiB.

Compresión y transcodificación de medios

La plataforma RCS for Business transcodifica y comprime automáticamente los archivos multimedia (como imágenes y vídeos) antes de enviarlos para garantizar que se carguen rápidamente y funcionen correctamente en diferentes redes y dispositivos.

La compresión se basa en la calidad del medio de entrada, no estrictamente en los límites de tamaño de archivo. Esto significa que un archivo puede comprimirse incluso si su tamaño es muy inferior al límite máximo de 100 MiB. Los estándares de transcodificación cambian constantemente, por lo que no existe un límite fijo de tamaño de archivo que determine cuándo se omite la transcodificación. Experimente con diferentes formatos de medios, dimensiones y tasas de compresión para encontrar el equilibrio óptimo para sus cargas útiles.

Especificaciones de la miniatura

Para archivos multimedia, también puede especificar una imagen en miniatura que permita a los usuarios previsualizar el contenido antes de hacer clic en él. Para archivos de audio, se utiliza el widget de audio predeterminado como marcador de posición.

  • El tamaño máximo de archivo para una miniatura es de 100 kB. Para una experiencia de usuario óptima, recomendamos que sea de 50 kB o menos.
  • La relación de aspecto de la miniatura debe coincidir con la del archivo original.

Gestión de caché y URL

La plataforma RCS for Business almacena en caché los archivos durante 60 días, y la API devuelve un ID de archivo que su agente puede incluir en los mensajes a los usuarios. Transcurridos 60 días, RCS for Business elimina los archivos de la caché.

Al especificar archivos mediante URL, se recomienda establecer contentMessage.forceRefresh en false . Si se establece contentMessage.forceRefresh en true , se obliga a RCS for Business a obtener contenido nuevo de la URL especificada, incluso si el contenido de la URL está en caché, lo que aumenta los tiempos de entrega de mensajes para los usuarios.

Ejemplo de URL de archivo

El siguiente código envía una imagen. Para obtener información sobre las opciones de formato y valor, consulte AgentContentMessage .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "contentInfo": {
      "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif",
      "forceRefresh": false
    }
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

let params = {
   fileUrl: 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif',
   msisdn: '+12223334444',
};

// Send an image/video to a device
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.AgentContentMessage;
import com.google.api.services.rcsbusinessmessaging.v1.model.AgentMessage;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   String fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif";

   // create media only message
   AgentContentMessage agentContentMessage = new AgentContentMessage();
   agentContentMessage.setContentInfo(new ContentInfo().setFileUrl(fileUrl));

   // attach content to message
   AgentMessage agentMessage = new AgentMessage();
   agentMessage.setContentMessage(agentContentMessage);

   rbmApiHelper.sendAgentMessage(agentMessage, "+12223334444");
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create media file attachment
file_message = messages.FileMessage('http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif')

messages.MessageCluster().append_message(file_message).send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

string fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif";

// Create content info with the file url
ContentInfo contentInfo = new ContentInfo
{
    FileUrl = fileUrl
};

// Attach content info to a message
AgentContentMessage agentContentMessage = new AgentContentMessage
{
    ContentInfo = contentInfo,
};

// Attach content to message
AgentMessage agentMessage = new AgentMessage
{
    ContentMessage = agentContentMessage
};

rbmApiHelper.SendAgentMessage(agentMessage, "+12223334444");
Este código es un extracto de un agente de ejemplo de RBM .

Como alternativa, puedes cargar archivos multimedia antes de enviarlos en un mensaje con files.create .

Ejemplo de carga de archivos

El siguiente código sube un archivo de vídeo y un archivo de miniatura, y luego envía ambos archivos en un mensaje. Para obtener información sobre las opciones de formato y valores, consulte files.create y AgentContentMessage .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \
-H "Content-Type: video/mp4" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
--upload-file "FULL_PATH_TO_VIDEO_MEDIA_FILE"

# Capture server-specified video file name from response body JSON


curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \
-H "Content-Type: image/jpeg" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
--upload-file "FULL_PATH_TO_THUMBNAIL_MEDIA_FILE"

# Capture server-specified image file name from response body JSON


curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "uploadedRbmFile": {
      "fileName": "SERVER-SPECIFIED_VIDEO_FILE_NAME",
      "thumbnailName": "SERVER-SPECIFIED_THUMBNAIL_FILE_NAME"
    }
  }
}'

Tipos de medios compatibles

RCS for Business admite los siguientes tipos de medios. Para las miniaturas, solo se admiten los formatos image/jpeg, image/jpg, image/gif e image/png.

Tipo de medio Tipo de documento Extensión Funciona con tarjetas enriquecidas
aplicación/ogg Audio OGG .ogx No
aplicación/pdf PDF .pdf Sí (solo para Google Messages en India)
audio/aac audio AAC .aac No
audio/mp3 audio MP3 .mp3 No
audio/mpeg audio MPEG .mpeg No
audio/mpg Audio MPG .mp3 No
audio/mp4 audio MP4 .mp4 No
audio/mp4-latm Audio MP4-latm .mp4 No
audio/3gpp audio 3GPP .3gp No
imagen/jpeg JPEG .jpeg, .jpg
imagen/gif GIF .gif
imagen/png PNG .png
video/h263 Vídeo H263 .h263
video/m4v Vídeo M4V .m4v
vídeo/mp4 Vídeo MP4 .mp4
vídeo/mpeg4 Vídeo MPEG-4 .mp4, .m4p
vídeo/mpeg Vídeo MPEG .mpeg
vídeo/webm Vídeo WEBM .webm

Sugerencias

Tu agente envía sugerencias (respuestas sugeridas y acciones sugeridas) en listas de chips de sugerencias o en tarjetas enriquecidas .

Respuestas sugeridas

Las respuestas sugeridas guían a los usuarios a través de las conversaciones, proporcionándoles respuestas a las que su agente sabe cómo reaccionar.

Cuando un usuario pulsa una respuesta sugerida, su agente recibe un evento que contiene el texto de la respuesta y los datos de la devolución de llamada . La carga útil tiene un máximo de 2048 caracteres.

Ejemplo

El siguiente código envía un texto con dos respuestas sugeridas. Para ver las opciones de formato y valor, consulte SuggestedReply .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "reply": {
          "text": "Suggestion #1",
          "postbackData": "suggestion_1"
        }
      },
      {
        "reply": {
          "text": "Suggestion #2",
          "postbackData": "suggestion_2"
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

let suggestions = [
   {
      reply: {
         'text': 'Suggestion #1',
         'postbackData': 'suggestion_1',
      },
   },
   {
      reply: {
         'text': 'Suggestion #2',
         'postbackData': 'suggestion_2',
      },
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with suggestion chips to the device
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;
import com.google.rbm.SuggestionHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();
   suggestions.add(
      new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply());

   suggestions.add(
      new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply());

   // Send simple text message to user
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggested replies for the message to send to the user
cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1'))
cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2'))

# Send a simple message with suggestion chips to the device
cluster.send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

List<Suggestion> suggestions = new List<Suggestion>
{
   // Create suggestion chips
   new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(),
   new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply()
};

// Send simple text message with suggestions to user
rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
   suggestions
);
Este código es un extracto de un agente de ejemplo de RBM .

Acciones sugeridas

Las acciones sugeridas guían a los usuarios durante las conversaciones aprovechando las funciones integradas de sus dispositivos. Tu agente puede sugerirles que marquen un número, abran una ubicación en un mapa, compartan una ubicación, abran una URL o creen un evento en el calendario.

Para cada acción sugerida, puede proporcionar opcionalmente una URL alternativa (máximo 2048 caracteres). Esta URL se abrirá en una nueva ventana del navegador si el dispositivo del usuario no es compatible con la acción sugerida.

Cuando un usuario pulsa una acción sugerida, su agente recibe un evento que contiene los datos de postback de la acción .

Para opciones de formato y valores, consulte SuggestedAction .

Visualización de sugerencias

Hay dos maneras de mostrar las sugerencias:

  • Persistente : Acciones o respuestas sugeridas que se muestran dentro de la burbuja del mensaje y permanecen fijas durante toda la conversación.
  • Transitorio : Sugerencias que se muestran fuera de la burbuja de mensaje y desaparecen cuando la conversación continúa.

Formatos de mensaje compatibles

  • Sugerencias persistentes: Funcionan con mensajes de texto independientes y tarjetas enriquecidas.
  • Sugerencias transitorias: Funciona con mensajes de texto independientes, mensajes multimedia y tarjetas enriquecidas.

Combinar sugerencias

Puedes combinar sugerencias persistentes y transitorias en el mismo mensaje o tarjeta enriquecida.

  • Mensajes de texto: Las sugerencias son temporales por defecto. Para que permanezcan dentro de la burbuja, debes configurarlas como persistentes.
  • Tarjetas enriquecidas: Estas admiten hasta cuatro sugerencias persistentes de forma predeterminada. Posteriormente, puede agregar sugerencias transitorias como una "lista de chips" debajo de la tarjeta.

Límites de sugerencias

Un solo mensaje de texto admite un máximo de 11 sugerencias en total. Las sugerencias persistentes que incluyas se contabilizan dentro de este límite. Por ejemplo, si incluyes 4 sugerencias persistentes, puedes añadir hasta 7 sugerencias transitorias.

Tipo de sugerencia Límite Donde aparecen
Persistente Hasta 4 Dentro de la burbuja de mensaje
Transitorio Hasta 11 Fuera de la burbuja (como chips)

Límite de caracteres

Cada sugerencia tiene un máximo de 25 caracteres.

Transparencia de URL en acciones sugeridas

Para generar confianza en el usuario, la URL subyacente se muestra como una segunda línea de texto dentro del botón de sugerencia para la acción sugerida "Abrir una URL". Este comportamiento uniforme se aplica a los mensajes de texto independientes, las tarjetas enriquecidas y los carruseles.

Se brindó apoyo a los clientes para sugerencias persistentes.

  • Compatible con: Google Messages (versión 20260225.00 o posterior).
  • No compatible con: versiones de Google Messages anteriores a la 20260225.00 , iOS y Samsung Messages.

Marca un número

La acción de Marcar guía al usuario para que marque un número de teléfono especificado por su agente. Los números de teléfono solo pueden incluir dígitos ( 0-9 ), signo más ( + ), asterisco ( * ) y signo de número ( # ). Se admite el formato internacional E.164 (por ejemplo, +14155555555 ), pero no es obligatorio. Es decir, tanto +14155555555 como 1011 son entradas válidas.

Ejemplo

El siguiente código envía una acción de marcación. Para opciones de formato y valor, consulte DialAction .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "Call",
          "postbackData": "postback_data_1234",
          "fallbackUrl": "https://www.google.com/contact/",
          "dialAction": {
            "phoneNumber": "+15556667777"
          }
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define a dial suggested action
let suggestions = [
   {
      action: {
         text: 'Call',
         postbackData: 'postback_data_1234',
         dialAction: {
            phoneNumber: '+15556667777'
         }
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with a dial suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.DialAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating a dial suggested action
   DialAction dialAction = new DialAction();
   dialAction.setPhoneNumber("+15556667777");

   // creating a suggested action based on a dial action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("Call");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setDialAction(dialAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a dial suggested action
suggestions = [
      messages.DialAction('Call', 'reply:postback_data_1234', '+15556667777')
]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Create a dial an agent suggested action
DialAction dialAction = new DialAction
{
    PhoneNumber = "+15556667777"
};

// Creating a suggested action based on a dial action
SuggestedAction suggestedAction = new SuggestedAction
{
    Text = "Call",
    PostbackData = "postback_data_1234",
    DialAction = dialAction
};

// Attach action to a suggestion
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Este código es un extracto de un agente de ejemplo de RBM .

Ver una ubicación

La acción "Ver ubicación" muestra una ubicación en la aplicación de mapas predeterminada del usuario. Puede especificar la ubicación mediante latitud y longitud o mediante una consulta basada en la ubicación actual del usuario. También puede establecer una etiqueta personalizada para el marcador que se muestra en la aplicación de mapas.

Ejemplo

El siguiente código envía una acción de ubicación de vista. Para opciones de formato y valor, consulte ViewLocationAction .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "View map",
          "postbackData": "postback_data_1234",
          "fallbackUrl": "https://www.google.com/maps/@37.4220188,-122.0844786,15z",
          "viewLocationAction": {
            "latLong": {
              "latitude": "37.4220188",
              "longitude": "-122.0844786"
            },
            "label": "Googleplex"
          }
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define a view location suggested action
let suggestions = [
   {
      action: {
         text: 'View map',
         postbackData: 'postback_data_1234',
         viewLocationAction: {
            latLong: {
               latitude: 37.4220188,
               longitude: -122.0844786
            },
            label: 'Googleplex'
         }
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with a view location suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.ViewLocationAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating a view location suggested action
   ViewLocationAction viewLocationAction = new ViewLocationAction();
   viewLocationAction.setQuery("Googleplex, Mountain View, CA");

   // creating a suggested action based on a view location action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("View map");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setViewLocationAction(viewLocationAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a view location suggested action
suggestions = [
      messages.ViewLocationAction('View map',
            'reply:postback_data_1234',
            query='Googleplex, Mountain View, CA')
]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// create an view location action
ViewLocationAction viewLocationAction = new ViewLocationAction
{
    Query = "Googleplex Mountain View, CA"
};

// Attach the view location action to a suggested action
SuggestedAction suggestedAction = new SuggestedAction
{
    ViewLocationAction = viewLocationAction,
    Text = "View map",
    PostbackData = "postback_data_1234"
};

// Attach the action to a suggestion object
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Este código es un extracto de un agente de ejemplo de RBM .

Compartir una ubicación

La función Compartir ubicación permite al usuario compartir su ubicación con tu agente. El usuario puede compartir su ubicación actual o una ubicación seleccionada manualmente desde la aplicación Mapas.

Ejemplo

El siguiente código envía una acción para compartir la ubicación. Para obtener información sobre el formato y las opciones de valor, consulte ShareLocationAction .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "Share your location",
          "postbackData": "postback_data_1234",
          "shareLocationAction": {}
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define a share location suggested action
let suggestions = [
   {
      action: {
         text: 'Share your location',
         postbackData: 'postback_data_1234',
         shareLocationAction: {
         }
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with a share location suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.ShareLocationAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating a share location suggested action
   ShareLocationAction shareLocationAction = new ShareLocationAction();

   // creating a suggested action based on a share location action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("Share location");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setShareLocationAction(shareLocationAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a share location suggested action
suggestions = [
      messages.ShareLocationAction('Share location',
            'reply:postback_data_1234')
]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Create a share location action
ShareLocationAction shareLocationAction = new ShareLocationAction();

// Attach the share location action to a suggested action
SuggestedAction suggestedAction = new SuggestedAction
{
    ShareLocationAction = shareLocationAction,
    Text = "Share location",
    PostbackData = "postback_data_1234"
};

// Attach the action to a suggestion object
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Este código es un extracto de un agente de ejemplo de RBM .

Abrir una URL

La acción «Abrir URL» permite guiar a los usuarios a una página web especificada por el agente. De forma predeterminada, la página web se abre en el navegador del usuario. También puede configurarla para que se abra en una vista web. Consulte « Abrir una URL con una vista web» para obtener más información.

Solo en Mensajes de Google

Visualización de la URL subyacente : Para una mayor transparencia en la mensajería A2P, Google Messages muestra la dirección URL subyacente en las acciones sugeridas "Abrir una URL". Este cambio afecta a las acciones sugeridas en las tarjetas enriquecidas estándar y los carruseles de tarjetas enriquecidas .

Una tarjeta enriquecida que muestra una sugerencia de "Ver sitio web" con la URL mostrada debajo.
URL subyacente visible

Visualización del icono de la app para enlaces web : Si un usuario tiene una app configurada por defecto para la página web, esta se abrirá en lugar del navegador o la vista web, y el botón de sugerencias mostrará el icono de la app. Para que el icono de la app aparezca en Mensajes de Google, debes proporcionar la URL completa y directa. Si utilizas una URL abreviada, se mostrará el icono predeterminado "Abrir URL".

Icono de la aplicación en un botón de sugerencias.
Icono de la aplicación en un botón de sugerencias
Ejemplo

El siguiente código envía una acción para abrir una URL. Para obtener información sobre el formato y las opciones de valor, consulte OpenUrlAction .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "Open Google",
          "postbackData": "postback_data_1234",
          "openUrlAction": {
            "url": "https://www.google.com"
          }
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define an open URL suggested action
let suggestions = [
   {
      action: {
         text: 'Open Google',
         postbackData: 'postback_data_1234',
         openUrlAction: {
            url: 'https://www.google.com'
         }
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with an open URL suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating an open url suggested action
   OpenUrlAction openUrlAction = new OpenUrlAction();
   openUrlAction.setUrl("https://www.google.com");

   // creating a suggested action based on an open url action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("Open Google");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setOpenUrlAction(openUrlAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create an open url suggested action
suggestions = [
      messages.OpenUrlAction('Open Google',
            'reply:postback_data_1234',
            'https://www.google.com')
]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Create an open url action
OpenUrlAction openUrlAction = new OpenUrlAction
{
    Url = "https://www.google.com"
};

// Attach the open url action to a suggested action
SuggestedAction suggestedAction = new SuggestedAction
{
    OpenUrlAction = openUrlAction,
    Text = "Open Google",
    PostbackData = "postback_data_1234"
};

// Attach the action to a suggestion object
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Este código es un extracto de un agente de ejemplo de RBM .

Abrir una URL con webview

La acción «Abrir URL con vista web» carga la página web especificada dentro de la aplicación de mensajería con el motor de renderizado de su navegador predeterminado. Esto permite al usuario interactuar con la página web sin salir de la conversación de RCS for Business. Si el dispositivo del usuario no admite vistas web, la página web se abrirá en su navegador. Para habilitar las vistas web, consulte OpenURLApplication .

Las vistas web tienen tres modos de visualización. Para obtener información sobre las opciones de formato y valores, consulte WebviewViewMode .

  • Completo: La página web ocupa toda la pantalla.
  • Mitad: La página web ocupa la mitad de la pantalla.
  • Alto: La página web ocupa tres cuartas partes de la pantalla.
Ejemplo

El siguiente código envía una acción Open URL con webview. Para opciones de formato y valores, consulte OpenURLAction .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
 "contentMessage": {
   "text": "Hello, world!",
   "suggestions": [
     {
       "action": {
         "text": "Open Google",
         "postbackData": "postback_data_1234",
         "openUrlAction": {
           "url": "https://www.google.com",
           "application": "WEBVIEW",
           "webviewViewMode": "FULL",
           "description": "Accessibility description"
         }
       }
     }
   ]
 }
}'

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;

  
try {
  
   String URL = "https://www.google.com";
  
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();
  
   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // Create suggestion to view webpage in full mode
   Suggestion viewInFullMode =  getUrlActionInWebview(URL, "FULL")
   suggestions.add(viewInFullMode);
  
   // create suggestion to view webpage in half mode
   Suggestion viewInHalfMode =  getUrlActionInWebview(URL, "HALF")
   suggestions.add(viewInHalfMode);
     
   // create suggestion to view webpage in tall mode
   Suggestion viewInTallMode =  getUrlActionInWebview(URL, "TALL")
   suggestions.add(viewInTallMode);
     
   // Send simple text message with the suggested action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}

  /**
    * Creates a suggested action to open URL in webview.
    *
    * @return a suggestion object for an open URL in webview action .
    */
    private Suggestion getUrlActionInWebview(String url,
                                             String viewMode) {
      // create an open url action
      OpenUrlAction openUrlAction = new OpenUrlAction();
      openUrlAction.setUrl(url);
      openUrlAction.setApplication("WEBVIEW");
      openUrlAction.setWebviewViewMode(viewMode);
      openUrlAction.setDescription("Accessibility description");
     
      // attach the open url action to a suggested action
      SuggestedAction suggestedAction = new SuggestedAction();
      suggestedAction.setOpenUrlAction(openUrlAction);
      suggestedAction.setText('display_text');
      suggestedAction.setPostbackData('postback_data_123');
     
      // attach the action to a suggestion object
      Suggestion suggestion = new Suggestion();
      suggestion.setAction(suggestedAction);
     
      return suggestion;
    }

Crear un evento en el calendario

La acción "Crear evento de calendario" abre la aplicación de calendario del usuario y comienza a crear un nuevo evento con la información especificada.

Es obligatorio incluir un título para el evento del calendario, con un máximo de 100 caracteres. La descripción del evento es opcional y tiene un máximo de 500 caracteres.

Ejemplo

El siguiente código envía una acción para crear un evento de calendario. Para obtener información sobre el formato y las opciones de valor, consulte CreateCalendarEventAction .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "text": "Hello, world!",
    "suggestions": [
      {
        "action": {
          "text": "Save to calendar",
          "postbackData": "postback_data_1234",
          "fallbackUrl": "https://www.google.com/calendar",
          "createCalendarEventAction": {
            "startTime": "2020-06-30T19:00:00Z",
            "endTime": "2020-06-30T20:00:00Z",
            "title": "My calendar event",
            "description": "Description of the calendar event"
          }
        }
      }
    ]
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Define a create calendar event suggested action
let suggestions = [
   {
      action: {
         text: 'Save to calendar',
         postbackData: 'postback_data_1234',
         createCalendarEventAction: {
            startTime: '2020-06-30T19:00:00Z',
            endTime: '2020-06-30T20:00:00Z',
            title: 'My calendar event',
            description: 'Description of the calendar event',
         },
      }
   },
];

let params = {
   messageText: 'Hello, world!',
   msisdn: '+12223334444',
   suggestions: suggestions,
};

// Send a simple message with a create calendar event suggested action
rbmApiHelper.sendMessage(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.CreateCalendarEventAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.RbmApiHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();

   // creating a create calendar event suggested action
   CreateCalendarEventAction createCalendarEventAction = new CreateCalendarEventAction();
   calendarEventAction.setTitle("My calendar event");
   calendarEventAction.setDescription("Description of the calendar event");
   calendarEventAction.setStartTime("2020-06-30T19:00:00Z");
   calendarEventAction.setEndTime("2020-06-30T20:00:00Z");

   // creating a suggested action based on a create calendar event action
   SuggestedAction suggestedAction = new SuggestedAction();
   suggestedAction.setText("Save to calendar");
   suggestedAction.setPostbackData("postback_data_1234");
   suggestedAction.setCreateCalendarEventAction(createCalendarEventAction);

   // attaching action to a suggestion
   Suggestion suggestion = new Suggestion();
   suggestion.setAction(suggestedAction);

   suggestions.add(suggestion);

   // Send simple text message with the suggestion action
   rbmApiHelper.sendTextMessage(
      "Hello, world!",
      "+12223334444",
      suggestions
   );
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Create a calendar event suggested action
suggestions = [
      messages.CreateCalendarEventAction('Save to Calendar',
                             'reply:postback_data_1234',
                             '2020-06-30T19:00:00Z',
                             '2020-06-30T20:00:00Z',
                             'My calendar event',
                             'Description of the calendar event')

]

# Create text message to send to user
text_msg = messages.TextMessage('Hello, world!')
cluster = messages.MessageCluster().append_message(text_msg)

# Append suggestions for the message to send to the user
for suggestion in suggestions:
    cluster.append_suggestion_chip(suggestion)

# Send a simple message with suggested action to the device
cluster.send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Create a calendar event action
CreateCalendarEventAction calendarEventAction = new CreateCalendarEventAction
{
    Title = "My calendar event",
    Description = "Description of the calendar event",
    StartTime = "2020-06-30T19:00:00Z",
    EndTime = "2020-06-30T20:00:00Z"
};

// Attach the calendar event action to a suggested action
SuggestedAction suggestedAction = new SuggestedAction
{
    CreateCalendarEventAction = calendarEventAction,
    Text = "Save to calendar",
    PostbackData = "postback_data_1234"
};

// Attach the action to a suggestion object
Suggestion suggestion = new Suggestion
{
    Action = suggestedAction
};

List<Suggestion> suggestions = new List<Suggestion>
{
    suggestion
};

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
    suggestions
);
Este código es un extracto de un agente de ejemplo de RBM .

Lista de sugerencias

Tu agente envía listas de sugerencias con mensajes para guiar las acciones posteriores de los usuarios. La lista de sugerencias solo se muestra cuando el mensaje asociado se encuentra al final de la conversación. Cualquier mensaje posterior en la conversación (ya sea del usuario o de tu agente) sobrescribe la lista de sugerencias.

Los elementos de la lista son respuestas sugeridas y acciones sugeridas .

Las listas de chips contienen un máximo de 11 chips de sugerencia, y cada etiqueta de chip puede tener un máximo de 25 caracteres.

Para opciones de formato y valores, consulte AgentContentMessage .

Tarjetas de regalo

Las tarjetas enriquecidas combinan contenido multimedia, texto y sugerencias interactivas en un solo mensaje. Son ideales para presentar información relacionada (por ejemplo, un producto con su imagen, nombre y precio) y guiar a los usuarios con pasos claros a seguir, como la sugerencia "Ver detalles".

Una tarjeta enriquecida puede contener lo siguiente:

Cada uno de estos campos es opcional, pero al menos uno de los campos 1 a 3 debe incluirse en la tarjeta enriquecida.

Se pueden enviar varias tarjetas juntas en un carrusel de desplazamiento horizontal.

Tenga en cuenta que la carga útil total para una tarjeta enriquecida es de 250 KB.

Para obtener información técnica completa, consulte la documentación de las tarjetas enriquecidas .

Altura de la carta

Las tarjetas enriquecidas se expanden verticalmente para ajustarse a su contenido. Tienen una altura mínima de 112 DP y una altura máxima de 344 DP. Si el contenido de la tarjeta no es lo suficientemente grande como para ocupar la altura mínima, la tarjeta se expande y rellena el espacio restante con espacio en blanco.

Los elementos multimedia en las tarjetas enriquecidas deben ajustarse a una de tres alturas:

  • Corto: 112 DP
  • Mediano: 168 DP
  • Altura: 264 DP

Si el contenido multimedia no se ajusta a las dimensiones de la tarjeta según la altura seleccionada, la vista previa del contenido se elige ampliando y recortando la imagen.

Ejemplo

El siguiente código envía una tarjeta enriquecida con una imagen y sugerencias de respuesta. Para obtener información sobre las opciones de formato y valor, consulte RichCard .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "richCard": {
      "standaloneCard": {
        "thumbnailImageAlignment": "RIGHT",
        "cardOrientation": "VERTICAL",
        "cardContent": {
          "title": "Hello, world!",
          "description": "RBM is awesome!",
          "media": {
            "height": "TALL",
            "contentInfo":{
              "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif",
              "forceRefresh": false
            }
          },
          "suggestions": [
            {
              "reply": {
                "text": "Suggestion #1",
                "postbackData": "suggestion_1"
              }
            },
            {
              "reply": {
                "text": "Suggestion #2",
                "postbackData": "suggestion_2"
              }
            }
          ]
        }
      }
    }
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Suggested replies to be used in the card
let suggestions = [
   {
      reply: {
         'text': 'Suggestion #1',
         'postbackData': 'suggestion_1',
      },
   },
   {
      reply: {
         'text': 'Suggestion #2',
         'postbackData': 'suggestion_2',
      },
   },
];

// Image to be displayed by the card
let imageUrl = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif';

// Definition of the card parameters
let params = {
   messageText: 'Hello, world!',
   messageDescription: 'RBM is awesome!',
   msisdn: '+12223334444',
   suggestions: suggestions,
   imageUrl: imageUrl,
   height: 'TALL',
};

// Send rich card to device
rbmApiHelper.sendRichCard(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.StandaloneCard;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.cards.CardOrientation;
import com.google.rbm.cards.MediaHeight;
import com.google.rbm.RbmApiHelper;
import com.google.rbm.SuggestionHelper;


try {
   // Create an instance of the RBM API helper
   RbmApiHelper rbmApiHelper = new RbmApiHelper();

   // Create suggestions for chip list
   List<Suggestion> suggestions = new ArrayList<Suggestion>();
   suggestions.add(
      new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply());

   suggestions.add(
      new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply());

   String imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif";

   // Create a standalone rich card to send to the user
   StandaloneCard standaloneCard = rbmApiHelper.createStandaloneCard(
       "Hello, world!",
       "RBM is awesome!",
       imageUrl,
       MediaHeight.MEDIUM,
       CardOrientation.VERTICAL,
       suggestions
   );

   rbmApiHelper.sendStandaloneCard(standaloneCard, "+12223334444");
} catch(Exception e) {
   e.printStackTrace();
}
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Suggested replies to be used in the card
suggestions = [
      messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1'),
      messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2')
]

# Image to be displayed by the card
image_url = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif';

# Define rich card structure
rich_card = messages.StandaloneCard('VERTICAL',
                                    'Hello, world!',
                                    'RBM is awesome!',
                                    suggestions,
                                    image_url,
                                    None,
                                    None,
                                    'MEDIUM')

# Append rich card and send to the user
cluster = messages.MessageCluster().append_message(rich_card)
cluster.send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;
using RCSBusinessMessaging.Cards;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

List<Suggestion> suggestions = new List<Suggestion>
{
   // Create suggestion chips
   new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(),
   new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply()
};

string imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif";

// Create rich card with suggestions
StandaloneCard standaloneCard = rbmApiHelper.CreateStandaloneCard(
   "Hello, world!",
   "RBM is awesome",
   imageUrl,
   MediaHeight.TALL,
   CardOrientation.VERTICAL,
   suggestions
);

// Send rich card to user
rbmApiHelper.SendStandaloneCard(standaloneCard, "+12223334444");
Este código es un extracto de un agente de ejemplo de RBM .

Carruseles de tarjetas enriquecidas

Los carruseles agrupan varias tarjetas con contenido enriquecido , lo que permite 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. Las tarjetas enriquecidas dentro de los carruseles deben cumplir con los requisitos generales de contenido y altura, tal como se describe en la documentación de Tarjetas enriquecidas . Para obtener más información sobre el diseño y las especificaciones del carrusel, consulte la documentación de Carruseles .

Ejemplo

El siguiente código envía un carrusel de tarjetas enriquecidas. Para obtener información sobre las opciones de formato y valor, consulte RichCard .

rizo

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "contentMessage": {
    "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/welcome-bot-sample-images/200.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/welcome-bot-sample-images/201.jpg",
                "forceRefresh": false
              }
            }
          }
        ]
      }
    }
  }
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Images for the carousel cards
let card1Image = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg';
let card2Image = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg';

// Define the card contents for a carousel with two cards, each with one suggested reply
let cardContents = [
   {
      title: 'Card #1',
      description: 'The description for card #1',
      suggestions: [
         {
            reply: {
               text: 'Card #1',
               postbackData: 'card_1',
            }
         }
      ],
      media: {
         height: 'MEDIUM',
         contentInfo: {
            fileUrl: card1Image,
            forceRefresh: false,
         },
      },
   },
   {
      title: 'Card #2',
      description: 'The description for card #2',
      suggestions: [
         {
            reply: {
               text: 'Card #2',
               postbackData: 'card_2',
            }
         }
      ],
      media: {
         height: 'MEDIUM',
         contentInfo: {
            fileUrl: card2Image,
            forceRefresh: false,
         },
      },
   },
];

// Definition of carousel card
let params = {
   msisdn: '+12223334444',
   cardContents: cardContents,
};

// Send the device the carousel card defined above
rbmApiHelper.sendCarouselCard(params, function(response) {
   console.log(response);
});
Este código es un extracto de un agente de ejemplo de RBM .

Java

import com.google.api.services.rcsbusinessmessaging.v1.model.CardContent;
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion;
import com.google.rbm.cards.CardOrientation;
import com.google.rbm.cards.CardWidth;
import com.google.rbm.cards.MediaHeight;
import com.google.rbm.RbmApiHelper;
import com.google.rbm.SuggestionHelper;


try {
            // Create an instance of the RBM API helper
            RbmApiHelper rbmApiHelper = new RbmApiHelper();

            List cardContents = new ArrayList();

            // Images for the carousel cards
            String card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg";

            // Create suggestions for first carousel card
            List card1Suggestions = new ArrayList();
            card1Suggestions.add(
                new SuggestionHelper("Card #1", "card_1"));

            cardContents.add(
                new StandaloneCardHelper(
                    "Card #1",
                    "The description for card #1",
                    card1Image,
                    card1Suggestions)
                    .getCardContent(MediaHeight.SHORT)
            );

            // Images for the carousel cards
            String card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg";

            // Create suggestions for second carousel card
            List card2Suggestions = new ArrayList();
            card2Suggestions.add(
                new SuggestionHelper("Card #2", "card_2"));

            cardContents.add(
                new StandaloneCardHelper(
                    "Card #2",
                    "The description for card #2",
                    card2Image,
                    card2Suggestions)
                    .getCardContent(MediaHeight.SHORT)
            );

            // Send the carousel to the user
            rbmApiHelper.sendCarouselCards(cardContents, CardWidth.MEDIUM, "+12223334444");
        } catch(Exception e) {
            e.printStackTrace();
        }
Este código es un extracto de un agente de ejemplo de RBM .

Pitón

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service
from rcs_business_messaging import messages

# Images for the carousel cards
card_image_1 = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg';
card_image_2 = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg';

# Suggested replies to be used in the cards
suggestions1 = [
      messages.SuggestedReply('Card #1', 'reply:card_1')
]

suggestions2 = [
      messages.SuggestedReply('Card #2', 'reply:card_2')
]

# Define the card contents for a carousel with two cards,
# each with one suggested reply
card_contents = []
card_contents.append(messages.CardContent('Card #1',
                                          'The description for card #1',
                                          card_image_1,
                                          'MEDIUM',
                                          suggestions1))

card_contents.append(messages.CardContent('Card #2',
                                          'The description for card #2',
                                          card_image_2,
                                          'MEDIUM',
                                          suggestions2))

# Send the device the carousel card defined above
carousel_card = messages.CarouselCard('MEDIUM', card_contents)
cluster = messages.MessageCluster().append_message(carousel_card)
cluster.send_to_msisdn('+12223334444')
Este código es un extracto de un agente de ejemplo de RBM .

DO#

using Google.Apis.RCSBusinessMessaging.v1.Data;
using RCSBusinessMessaging;
using RCSBusinessMessaging.Cards;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

// Image references to be used in the carousel cards
string card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg";
string card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg";

// Suggestion chip lists to be used in carousel cards
List<Suggestion> suggestions1 = new List<Suggestion>
{
   new SuggestionHelper("Card #1", "card_1").SuggestedReply()
};

List<Suggestion> suggestions2 = new List<Suggestion>
{
   new SuggestionHelper("Card #2", "card_2").SuggestedReply()
};

// Create the card content for the carousel
List<CardContent> cardContents = new List<CardContent>
{
   // Add items as card content
   new StandaloneCardHelper(
                    "Card #1",
                    "The description for card #1",
                    card1Image,
                    suggestions1).GetCardContent(),
   new StandaloneCardHelper(
                    "Card #2",
                    "The description for card #2",
                    card2Image,
                    suggestions2).GetCardContent()
};

// Send the carousel to the user
rbmApiHelper.SendCarouselCards(cardContents, CardWidth.MEDIUM, msisdn);
Este código es un extracto de un agente de ejemplo de RBM .