Recevoir des messages

Les agents RBM reçoivent des messages et des événements via un webhook. Lorsqu'un utilisateur envoie un message à votre agent, le service RBM de Google l'envoie au webhook que vous avez configuré. Votre agent peut ensuite décoder le message, le traiter et envoyer une réponse à l'utilisateur.

L'utilisateur envoie un message à l'agent.

Les utilisateurs peuvent envoyer le texte, les lieux ou les fichiers que leur client RCS autorise. Votre agent doit gérer tous les textes, lieux ou fichiers que l'utilisateur peut envoyer, ainsi que tous les états d'erreur que ces messages peuvent déclencher.

Pour découvrir comment votre agent peut gérer les confirmations de distribution, les confirmations de lecture et les indicateurs de saisie, consultez Recevoir des événements.

Gérer les messages entrants

La façon dont votre agent gère les messages des utilisateurs et y répond dépend fortement de votre logique métier. Toutefois, les étapes à suivre pour répondre à un message d'utilisateur sont généralement cohérentes.

Étape 1 : Identifier le type de message envoyé par l'utilisateur

Les utilisateurs peuvent envoyer quatre types de messages :

  • Les messages texte sont des réponses au format libre.
  • Les messages desuggestion incluent les données de postback et le texte de l'action ou de la réponse suggérée sur laquelle l'utilisateur a appuyé.
  • Les messages delocalisation incluent des valeurs de latitude et de longitude.

  • Les messages de fichier incluent l'URI d'un fichier et les données associées.

Étape 2 : Traiter le contenu du message

Le contenu du message de l'utilisateur doit guider la logique de votre agent et sa prochaine réponse dans la conversation.

Le moyen le plus simple d'identifier l'intention utilisateur consiste à utiliser les données de postback d'une réponse ou d'une action suggérée. Quel que soit le texte associé à la suggestion, les données de postback sont lisibles par machine.

Si un utilisateur envoie un message texte, votre agent peut analyser la réponse pour rechercher des mots clés compatibles ou utiliser le traitement automatique du langage naturel (NLU, Natural Language Understanding), comme Dialogflow, pour traiter le message de l'utilisateur et identifier une voie à suivre.

Les messages de localisation et de fichier n'incluent pas de texte ni de données de postback. Votre agent doit donc tenir compte du contexte de la conversation et des messages récents avant de répondre.

Si votre agent ne sait pas comment répondre au message de l'utilisateur, il doit répondre avec un état d'erreur et essayer de poursuivre la conversation en demandant à l'utilisateur des informations supplémentaires, en lui demandant de saisir des données d'une autre manière ou en lui présentant des réponses et des actions suggérées auxquelles l'agent sait répondre.

Étape 3 : Mettre en œuvre la logique métier de l'interaction

Une fois que votre agent a identifié la réponse appropriée au message de l'utilisateur, il collecte les informations nécessaires à partir de votre infrastructure et interagit avec d'autres systèmes si nécessaire pour mettre en œuvre la logique métier de l'interaction.

Étape 4 : Répondre à l'utilisateur

Une fois que l'agent a mis en œuvre la logique métier de l'interaction, il envoie un autre message et poursuit la conversation avec l'utilisateur.

Exemples

Le code suivant montre comment votre agent reçoit des messages. Pour obtenir des informations sur la mise en forme et les valeurs, consultez UserMessage.

L'agent reçoit du texte

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

L'agent reçoit un message à partir d'une suggestion

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

L'agent reçoit un lieu

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

L'agent reçoit un fichier

{
  "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"
    }
  }
}