Receber mensagens

Os agentes do RBM recebem mensagens e eventos por meio de um webhook. Quando um usuário envia uma mensagem ao seu agente, o serviço RBM do Google envia a mensagem para o webhook configurado. Seu agente pode decodificar a mensagem, processá-la e emitir uma resposta para o usuário.

O usuário envia uma mensagem para o agente.

Os usuários podem enviar qualquer texto, local ou arquivo permitido pelo cliente RCS. 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 as mensagens recebidas

A forma como seu agente processa 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 geralmente são consistentes.

Etapa 1: identificar o tipo de mensagem que o usuário enviou

Os usuários podem enviar quatro tipos de mensagens:

  • As mensagens de texto são respostas de formato livre.
  • As mensagens de sugestão incluem os dados de postback e o texto da ação sugerida ou resposta sugerida em que o usuário tocou.
  • As mensagens de Location 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 do agente e a próxima resposta na conversa.

A maneira mais fácil de identificar a intent do usuário é com dados de postback de uma resposta sugerida ou ação sugerida. Independentemente 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, seu agente poderá analisar a resposta em busca de palavras-chave compatíveis ou usar PLN (como o Dialogflow) para processar a mensagem do usuário e identificar um caminho a seguir.

As mensagens de local e arquivo não incluem dados de texto ou postback. Por isso, 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 precisará responder com um estado de erro e tentar continuar a conversa solicitando mais informações, pedindo mais informações ou apresentando respostas sugeridas e ações sugeridas que o agente saiba como responder.

Etapa 3: atender à lógica de negócios para a interação

Depois que o agente identificar a resposta correta à mensagem do usuário, ele vai coletar as informações necessárias da sua infraestrutura e interagir 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 para a 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 as mensagens. Para informações de formatação e valor, consulte UserMessage.

O agente recebe uma mensagem de 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": {
    "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"
    }
  }
}

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 as mensagens. Para informações de formatação e valor, 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"
}