Os agentes do RBM recebem mensagens e eventos por um webhook. Quando um usuário envia uma mensagem para seu agente, o serviço RBM do Google envia a mensagem para o webhook configurado. Em seguida, o agente pode decodificar e processar a mensagem e emitir uma resposta ao usuário.

Os usuários podem enviar qualquer texto, local ou arquivo que o cliente RCS permitir. Seu agente precisa processar qualquer texto, local ou arquivo que o usuário possa enviar, bem como qualquer estado de erro que essas mensagens possam acionar.
Gerenciar mensagens recebidas
A forma como seu agente lida e responde às mensagens dos usuários depende muito da sua lógica de negócios. No entanto, as etapas para responder a uma mensagem do usuário são consistentes.
Etapa 1: identificar o tipo de mensagem enviada pelo usuário
Os usuários podem enviar quatro tipos de mensagens:
- As mensagens de texto são respostas em formato livre.
- As mensagens de sugestão incluem os dados de postback e o texto da ação ou resposta sugerida em que o usuário tocou.
As mensagens de Localização incluem valores de latitude e longitude.
As mensagens de arquivo incluem o URI de um arquivo e os dados associados.
Etapa 2: processar o conteúdo da mensagem
O conteúdo da mensagem do usuário deve orientar a lógica e a próxima resposta do agente na conversa.
A maneira mais fácil de identificar a intenção do usuário é com dados de postback de uma resposta ou ação sugerida. Independente do texto associado à sugestão, os dados de postback são legíveis por máquina.
Se um usuário enviar uma mensagem de texto, o agente poderá analisar a resposta para palavras-chave compatíveis ou usar NLU (como o Dialogflow) para processar a mensagem do usuário e identificar um caminho a seguir.
As mensagens de localização e arquivo não incluem texto nem dados de postback. Portanto, seu agente precisa considerar o contexto da conversa e as mensagens recentes antes de responder.
Se o agente não souber como responder à mensagem do usuário, ele vai responder com um estado de erro e tentar continuar a conversa pedindo mais informações ao usuário, solicitando entrada de dados de uma maneira diferente ou apresentando respostas e ações sugeridas que o agente sabe como responder.
Etapa 3: implementar a lógica de negócios para a interação
Depois que o agente identifica a resposta correta para a mensagem do usuário, ele coleta as informações necessárias da sua infraestrutura e interage com outros sistemas conforme necessário para atender à lógica de negócios da interação.
Etapa 4: responder ao usuário
Depois que o agente cumpre a lógica de negócios da interação, ele envia outra mensagem e continua a conversa com o usuário.
Exemplos
O código a seguir mostra como o agente recebe mensagens. Para informações de formatação e valor, consulte UserMessage.
Observação: para o tráfego dos EUA, as mensagens dos usuários e os toques nas ações sugeridas estão sujeitos às classificações do modelo de faturamento dos EUA. Quando o agente recebe esses eventos, eles incluem o campo richMessageClassification, que determina o tipo de evento faturável. Consulte o guia modelo de faturamento dos EUA para detalhes da classificação.
O agente recebe um texto
{
"agentId": "AGENT_ID",
"senderPhoneNumber": "PHONE_NUMBER",
"messageId": "MESSAGE_ID",
"sendTime": "2018-12-31T15:01:23.045123456Z",
"text": "Hello, world!"
}O agente recebe uma mensagem de uma sugestão
{
"agentId": "AGENT_ID",
"senderPhoneNumber": "PHONE_NUMBER",
"messageId": "MESSAGE_ID",
"sendTime": "2018-12-31T15:01:23.045123456Z",
"suggestionResponse": {
"postbackData": "suggestion_1",
"text": "Suggestion #1"
}
}O agente recebe um local
{
"agentId": "AGENT_ID",
"senderPhoneNumber": "PHONE_NUMBER",
"messageId": "MESSAGE_ID",
"sendTime": "2018-12-31T15:01:23.045123456Z",
"location": {
"latitude": 37.422000,
"longitude": -122.084056
}
}O agente recebe um arquivo
{ "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" } } }
Processar eventos recebidos
Seu agente recebe notificações quando as mensagens enviadas aos usuários são entregues e lidas.
O código a seguir mostra como o agente recebe mensagens. Para informações sobre formatação e valores, consulte UserEvent.
Mensagem entregue ao usuário
{
"agentId": "AGENT_ID",
"senderPhoneNumber": "PHONE_NUMBER",
"messageId": "MESSAGE_ID",
"eventId": "EVENT_ID",
"sendTime": "2018-12-31T15:01:23.045123456Z",
"eventType": "DELIVERED"
}Mensagem lida pelo usuário
{
"agentId": "AGENT_ID",
"senderPhoneNumber": "PHONE_NUMBER",
"messageId": "MESSAGE_ID",
"eventId": "EVENT_ID",
"sendTime": "2018-12-31T15:01:23.045123456Z",
"eventType": "READ"
}O usuário está digitando…
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "IS_TYPING",
"eventId": "EVENT_ID",
"sendTime": "2018-12-31T15:01:23.045123456Z",
"agentId": "AGENT_ID"
}