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:
- Envíe una solicitud de revocación para iniciar el proceso de revocación.
- Configure un plazo de caducidad para que el mensaje se revoque automáticamente en el momento adecuado.
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ónDELIVEREDpara 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 estadoTTL_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); });
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(); }
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')
DO#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", );
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:
Contenido de los mensajes de texto y vistas previas de los enlaces
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); });
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(); }
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')
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");
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 JSONcurl -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 JSONcurl -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 | 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 | Sí |
| imagen/gif | GIF | .gif | Sí |
| imagen/png | PNG | .png | Sí |
| video/h263 | Vídeo H263 | .h263 | Sí |
| video/m4v | Vídeo M4V | .m4v | Sí |
| vídeo/mp4 | Vídeo MP4 | .mp4 | Sí |
| vídeo/mpeg4 | Vídeo MPEG-4 | .mp4, .m4p | Sí |
| vídeo/mpeg | Vídeo MPEG | .mpeg | Sí |
| vídeo/webm | Vídeo WEBM | .webm | Sí |
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); });
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(); }
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')
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 );
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.00o 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); });
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(); }
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')
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 );
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); });
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(); }
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')
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 );
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); });
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(); }
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')
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 );
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 .

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".

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); });
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(); }
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')
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 );
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); });
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(); }
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')
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 );
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:
- Contenido multimedia (imagen, GIF o vídeo)
- Texto del título
- Texto descriptivo
- Respuestas y acciones sugeridas (máximo 4)
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); });
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(); }
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')
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");
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); });
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(); }
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')
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);