Los eventos son notificaciones que tu agente puede enviar y recibir. Existen tres tipos de eventos:
- Generados por el servidor: La plataforma de RBM los envía a tu agente.
- Generado por el usuario: El dispositivo del usuario lo envía a tu agente.
- Generado por el agente: Lo envió tu agente al usuario.
Eventos generados por el servidor
La plataforma de RBM envía eventos para notificar a tu agente sobre actualizaciones a nivel del servidor, como los vencimientos de mensajes.
Para ver las opciones de formato y valor, consulta ServerEvent
.
El mensaje venció; se revocó correctamente
El mensaje caducó y se revocó correctamente. Este evento sería un buen activador para tu estrategia de mensajes de resguardo.
{ "phoneNumber": [phone number of recipient that the original message was intended for] , "messageId": [RCS message ID of the message], "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKED", "eventId": [unique ID generated by the RBM platform], "sendTime": [time at which the server sent this event] }
El mensaje venció; no se pudo revocar
El mensaje venció, pero no se revocó.
{ "phoneNumber": [phone number of recipient that the original message was intended for] , "messageId": [RCS message ID of the message], "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKE_FAILED", "eventId": [unique ID generated by the RBM platform], "sendTime": [time at which the server sent this event] }
No se garantiza la entrega de mensajes.
- Si se entregó el mensaje, recibirás un evento
DELIVERED
en tu webhook. - Si el mensaje no se entregó, usa la API de revocación para enviar una solicitud de revocación.
Si el mensaje es urgente, como una OTP o una alerta de fraude, es mejor enviarlo a través de un canal alternativo, como SMS, incluso si esto genera mensajes duplicados para el usuario.
Eventos generados por el usuario
Al igual que con los mensajes de los usuarios y las verificaciones de capacidades, tu agente recibe eventos de usuario como JSON.
Para conocer las opciones de formato y valor, consulta UserEvent
.
El usuario recibe un mensaje del agente
Este evento indica que se entregó un mensaje.
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "DELIVERED", "eventId": "EVENT_ID", "messageId": "MESSAGE_ID", "agentId": "AGENT_ID" }
El usuario lee el mensaje del agente.
Este evento indica que se abrió o confirmó un mensaje.
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "READ", "eventId": "EVENT_ID", "messageId": "MESSAGE_ID", "agentId": "AGENT_ID" }
El usuario comienza a escribir
Este evento indica que un usuario está escribiendo.
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "IS_TYPING", "eventId": "EVENT_ID",, "agentId": "AGENT_ID" }
El usuario envía un mensaje de texto
{ "senderPhoneNumber": "PHONE_NUMBER", "text": "Hi", "eventId": "EVENT_ID", "agentId": "AGENT_ID" }
El usuario envía un archivo
{ "senderPhoneNumber": "PHONE_NUMBER", "userFile": { "payload": { "mimeType": "image/gif", "fileSizeBytes": 127806, "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9", "fileName": "4_animated.gif" } }, "eventId": "EVENT_ID",, "agentId": "AGENT_ID" }
El usuario presiona una respuesta sugerida
Cuando un usuario presiona una respuesta sugerida, tu agente recibe un evento con los datos y el texto de la notificación de conversión de la respuesta.
{ "senderPhoneNumber": "PHONE_NUMBER", "eventId": "EVENT_ID", "agentId": "AGENT_ID", "suggestionResponse": { "postbackData": "postback_1234", "text": "Hello there!" } }
El usuario presiona una acción sugerida.
Cuando un usuario presiona una acción sugerida, tu agente recibe un evento con los datos de la notificación de conversión de la acción.
{ "senderPhoneNumber": "PHONE_NUMBER", "eventId": "EVENT_ID", "agentId": "AGENT_ID", "suggestionResponse": { "postbackData": "postback_1234" } }
Eventos generados por agentes
Tu agente envía eventos para simular interacciones humanas y asegurarle al usuario que el agente está interactuando con sus mensajes. Para los usuarios, los eventos se muestran como notificaciones dentro de sus conversaciones.
Para conocer las opciones de formato y valor, consulta phones.agentEvents
.
El agente envía un evento READ
Para los usuarios, este evento aparece como un recibo de lectura de un mensaje específico. Le informa al usuario que la plataforma RBM entregó su mensaje y que el agente lo está procesando.
El siguiente código envía un evento READ
para un mensaje con un messageId
coincidente.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_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 "{ 'eventType': 'READ', 'messageId': 'MESSAGE_ID' }"
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Send the device an event to indicate that messageId has been read rbmApiHelper.sendReadMessage('+12223334444', messageId);Este código es un extracto de un agente de ejemplo de RBM.
Java
import com.google.rbm.RbmApiHelper; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send the device an event to indicate that messageId has been read rbmApiHelper.sendReadMessage(messageId, "+12223334444");Este código es un extracto de un agente de ejemplo de RBM.
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service # Send the device an event to indicate that message_id was read rbm_service.send_read_event('+12223334444', message_id)Este código es un extracto de un agente de ejemplo de RBM.
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Send the device an event to indicate that messageId has been read rbmApiHelper.SendReadMessage(messageId, "+12223334444");Este código es un extracto de un agente de ejemplo de RBM.
El agente envía un evento IS_TYPING
Para los usuarios, este evento aparece como un indicador de escritura y les informa que tu agente está redactando un mensaje. El indicador de escritura vence después de un tiempo breve (aproximadamente 20 segundos) o cuando el dispositivo del usuario recibe un mensaje nuevo de tu agente. Tu agente puede enviar varios eventos IS_TYPING
para restablecer el temporizador de vencimiento del indicador de escritura.
El siguiente código envía un evento IS_TYPING
.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_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 "{ 'eventType': 'IS_TYPING', }"
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Send the device an event to indicate that the agent is typing rbmApiHelper.sendIsTypingMessage('+12223334444', function() { console.log('Typing event sent!'); });Este código es un extracto de un agente de ejemplo de RBM.
Java
import com.google.rbm.RbmApiHelper; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send the device an event to indicate that the agent is typing rbmApiHelper.sendIsTypingMessage("+12223334444");Este código es un extracto de un agente de muestra de RBM.
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service # Send the device an event to indicate that the agent is typing rbm_service.send_is_typing_event('+12223334444')Este código es un extracto de un agente de ejemplo de RBM.
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Send the device an event to indicate that the agent is typing rbmApiHelper.SendIsTypingMessage(messageId, "+12223334444");Este código es un extracto de un agente de ejemplo de RBM.