Os agentes do RBM recebem mensagens e eventos por uma webhook. Quando um usuário envia uma mensagem ao seu agente, o serviço RBM do Google envia o para o webhook configurado. Seu agente pode decodificar a mensagem processá-los e emitir uma resposta ao usuário.
Os usuários podem enviar qualquer texto, local ou arquivo permitido pelo cliente RCS. Seu agente precisa lidar com todos os textos, locais ou arquivos que o usuário possa enviar, conforme além dos estados de erro que essas mensagens podem ser acionadas.
Processar mensagens recebidas
A forma como o agente lida e responde às mensagens dos usuários depende muito em sua lógica de negócios. Geralmente, no entanto, as etapas para responder a um sejam 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 em formato livre.
- As mensagens de sugestão incluem os dados de postback e o texto de a ação sugerida ou a 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 do agente e a próxima resposta 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. Independentemente do texto associado a 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 para palavras-chave compatíveis ou usar PLN (como Dialogflow) para processar a mensagem do usuário e a identificar um caminho a seguir.
As mensagens de local e arquivo não incluem texto ou dados de postback, portanto seus o 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 deverá responda com um estado de erro e tente continuar a conversa solicitar informações adicionais ao usuário, solicitando a entrada de um diferente ou apresentando sugestões de resposta e ações sugeridas que o agente sabe como responder.
Etapa 3: cumprir a lógica de negócios da interação
Depois que o agente identificar a resposta correta para a mensagem do usuário, ele coleta as informações necessárias da sua infraestrutura e engaja com outros sistemas, conforme necessário para atender à lógica de negócios do interação.
Etapa 4: responder ao usuário
Depois que o agente preenche 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 formatação e informações de valor, consulte UserMessage correspondente.
O agente recebe a 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": { "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 de entrada
O agente recebe notificações quando as mensagens enviadas aos usuários são entregues e lidos.
O código a seguir mostra como o agente recebe mensagens. Para formatação e informações de valor, consulte UserEvent apropriado.
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" }