Recibir mensajes

Los agentes de RBM reciben mensajes y eventos a través de un webhook. Cuando un usuario envía un mensaje a tu agente, el servicio de RBM de Google envía el mensaje a tu webhook configurado. Luego, el agente puede decodificar el mensaje, procesarlo y emitir una respuesta al usuario.

El usuario envía un mensaje al agente

Los usuarios pueden enviar el texto, las ubicaciones o los archivos que permita su cliente de RCS. Tu agente debe controlar cualquier texto, ubicación o archivo que el usuario pueda enviar, así como cualquier estado de error que esos mensajes puedan activar.

Administra los mensajes entrantes

La forma en que tu agente maneja los mensajes de los usuarios y responde a ellos depende en gran medida de tu lógica empresarial. Sin embargo, en general, los pasos para responder a un mensaje del usuario son coherentes.

Paso 1: Identifica el tipo de mensaje que envió el usuario

Los usuarios pueden enviar cuatro tipos de mensajes:

  • Los mensajes de texto son respuestas de formato libre.
  • Los mensajes de sugerencias incluyen los datos de notificación de conversión y el texto de la acción sugerida o la respuesta sugerida que el usuario presionó.
  • Los mensajes de ubicación incluyen valores de latitud y longitud.

  • Los mensajes de File incluyen el URI de un archivo y los datos asociados.

Paso 2: Procesa el contenido del mensaje

El contenido del mensaje para el usuario debe guiar la lógica de tu agente y la siguiente respuesta en la conversación.

La forma más fácil de identificar la intención del usuario es con datos de notificación de conversión de una respuesta sugerida o una acción sugerida. Independientemente del texto asociado con la sugerencia, los datos de notificación de conversión son legibles por máquinas.

Si un usuario envía un mensaje de texto, tu agente puede analizar la respuesta de las palabras clave compatibles o usar CLN (como Dialogflow) para procesar el mensaje del usuario y, luego, identificar una ruta hacia adelante.

Los mensajes de ubicación y archivo no incluyen datos de texto ni de notificación de conversión, por lo que el agente debe tener en cuenta el contexto de la conversación y los mensajes recientes antes de responder.

Si tu agente no sabe cómo responder el mensaje del usuario, debe responder con un estado de error e intentar continuar la conversación pidiéndole al usuario información adicional, solicitando entradas de una manera diferente o presentando respuestas y acciones sugeridas a las que el agente sepa cómo responder.

Paso 3: Completa la lógica empresarial para la interacción

Una vez que el agente identifica la respuesta correcta al mensaje del usuario, recopila la información necesaria de tu infraestructura y, luego, interactúa con otros sistemas según sea necesario para cumplir con la lógica empresarial de la interacción.

Paso 4: Respóndele al usuario

Después de que el agente completa la lógica empresarial para la interacción, envía otro mensaje y continúa la conversación con el usuario.

Ejemplos

En el siguiente código, se muestra cómo tu agente recibe mensajes. Para obtener información sobre el formato y el valor, consulta UserMessage.

El agente recibe el texto

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "text": "Hello, world!"
}

El agente recibe un mensaje de una sugerencia

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "suggestionResponse": {
    "postbackData": "suggestion_1",
    "text": "Suggestion #1"
  }
}

El agente recibe una ubicación

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "location": {
    "latitude": 37.422000,
    "longitude": -122.084056
  }
}

El agente recibe un archivo

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "userFile": {
    "category": "IMAGE",
    "thumbnail": {
      "mimeType": "image/jpeg",
      "fileSizeBytes": 1280,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c8",
      "fileName": "4_animated.jpeg"
    },
    "payload": {
      "mimeType": "image/gif",
      "fileSizeBytes": 127806,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9",
      "fileName": "4_animated.gif"
    }
  }
}

Cómo controlar eventos entrantes

Tu agente recibe notificaciones cuando los mensajes que envía a los usuarios se entregan y se leen.

En el siguiente código, se muestra cómo tu agente recibe mensajes. Para obtener información sobre el formato y los valores, consulta UserEvent.

Se entregó el mensaje al usuario

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "DELIVERED"
}

Mensaje leído por el usuario

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "READ"
}

El usuario está escribiendo

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "IS_TYPING",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "agentId": "AGENT_ID"
}