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, tu agente puede decodificar el mensaje, procesarlo y emitir una respuesta al usuario.

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 puedan activar esos mensajes.
Cómo controlar los mensajes entrantes
La forma en que tu agente maneja y responde los mensajes de los usuarios depende en gran medida de tu lógica empresarial. Sin embargo, los pasos para responder a un mensaje del usuario suelen ser 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 sugerencia incluyen los datos de notificación de conversión y el texto de la acción o respuesta sugerida que presionó el usuario.
Los mensajes de Location 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 del usuario debe guiar la lógica y la próxima respuesta del agente en la conversación.
La forma más fácil de identificar la intención del usuario es con los datos de devolución de llamada de una respuesta o acción sugerida. Independientemente del texto asociado a la sugerencia, los datos de devolución de llamada son legibles por máquina.
Si un usuario envía un mensaje de texto, tu agente podría analizar la respuesta en busca de palabras clave admitidas o usar PNL (como Dialogflow) para procesar el mensaje del usuario y determinar un camino a seguir.
Los mensajes de ubicación y de archivos no incluyen datos de texto ni de devolución de llamada, por lo que tu 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 al mensaje del usuario, debe responder con un estado de error y tratar de continuar la conversación solicitándole información adicional, pidiéndole que ingrese datos de otra manera o presentando respuestas y acciones sugeridas a las que el agente sabe cómo responder.
Paso 3: Cumple con la lógica empresarial de 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 se comunica con otros sistemas según sea necesario para cumplir con la lógica empresarial de la interacción.
Paso 4: Responde al usuario
Después de que el agente cumple con la lógica empresarial de 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 los valores, consulta UserMessage.
Nota: En el caso del tráfico de EE.UU., los mensajes de los usuarios y los clics en las acciones sugeridas están sujetos a las clasificaciones del modelo de facturación de EE.UU. Cuando tu agente reciba estos eventos, incluirá el campo richMessageClassification, que determina el tipo de evento facturable. Consulta la guía del modelo de facturación de EE.UU. para obtener detalles sobre la clasificación.
El agente recibe un mensaje de 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": { "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 se entregan y leen los mensajes que envía a los usuarios.
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"
}