Eventos

Los eventos son notificaciones que tu agente puede enviar y recibir. Hay tres tipos de eventos:

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 los mensajes.

Para las opciones de formato y valor, consulta ServerEvent.

El mensaje venció; la revocación se realizó correctamente

El mensaje venció 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ó; se produjo un error de revocación

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 el mensaje es urgente, como una OTP o una alerta de fraude, se recomienda enviar el mensaje 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 usuario y las verificaciones de capacidades, tu agente recibe eventos de usuario en formato JSON.

Para las opciones de formato y valor, consulta UserEvent.

El usuario recibe un mensaje de 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 de notificación de conversión y el texto 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 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 el agente

Tu agente envía eventos para simular interacciones humanas y asegurar al usuario que tu agente está interactuando con sus mensajes. Para los usuarios, los eventos se muestran como notificaciones dentro de sus conversaciones.

Para las opciones de formato y valor, consulta phones.agentEvents.

El agente envía un evento READ

Para los usuarios, este evento se muestra como una confirmación de lectura de un mensaje específico. Le permite al usuario saber que la plataforma de 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" \
-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('../libs/rbm_api_helper');

// 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 muestra de RBM.

Java

import com.google.rbm.samples.lib.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 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 message_id was read
rbm_service.send_read_event('+12223334444', message_id)
Este código es un extracto de un agente de muestra 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 muestra de RBM.

El agente envía un evento IS_TYPING

Para los usuarios, este evento se muestra como un indicador de escritura y les permite saber que tu agente está redactando un mensaje. El indicador de escritura vence después de un período corto (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" \
-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('../libs/rbm_api_helper');

// 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 muestra de RBM.

Java

import com.google.rbm.samples.lib.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 muestra 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 muestra de RBM.