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 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 tout le texte, les emplacements ou les fichiers autorisés par leur client RCS. Votre agent doit gérer le texte, les emplacements ou les fichiers que l'utilisateur peut envoyer, ainsi que les états d'erreur que ces messages peuvent déclencher.

Gérer les messages entrants

La manière dont votre agent traite et répond aux messages des utilisateurs dépend fortement de votre logique métier. Toutefois, en règle générale, les étapes à suivre pour répondre au message d'un utilisateur sont cohérentes.

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

Les utilisateurs peuvent envoyer quatre types de messages:

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

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

Étape 2: Traitez le contenu du message

Le contenu du message utilisateur doit guider la logique de votre agent et la réponse suivante dans la conversation.

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

Si un utilisateur envoie un message, votre agent peut analyser la réponse pour les mots clés acceptés ou utiliser NLU (comme Dialogflow) pour traiter le message de l'utilisateur et identifier un chemin à 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 renvoyer un état d'erreur et essayer de poursuivre la conversation en invitant l'utilisateur à fournir des informations supplémentaires, en lui demandant des informations d'une autre manière, ou en présentant des réponses et des actions suggérées auxquelles l'agent sait comment répondre.

Étape 3: Réaliser la logique métier pour l'interaction

Une fois que votre agent a identifié la réponse correcte au message de l'utilisateur, il collecte les informations nécessaires à partir de votre infrastructure et interagit avec d'autres systèmes selon les besoins pour exécuter la logique métier de l'interaction.

Étape 4: Répondre à l'utilisateur

Une fois que l'agent a exécuté la logique métier pour l'interaction, il envoie un autre message et poursuit la conversation avec l'utilisateur.

Exemples

Le code suivant montre comment votre agent reçoit les messages. Pour en savoir plus sur la mise en forme et la valeur, consultez UserMessage.

L'agent reçoit des SMS

{
  "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 une position

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

Gérer les événements entrants

Votre agent reçoit des notifications lorsque les messages qu'il envoie aux utilisateurs sont distribués et lus.

Le code suivant montre comment votre agent reçoit les messages. Pour en savoir plus sur la mise en forme et la valeur, consultez la section UserEvent.

Message distribué à l'utilisateur

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "DELIVERED"
}

Message lu par l'utilisateur

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "READ"
}

L'utilisateur rédige un message…

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "IS_TYPING",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "agentId": "AGENT_ID"
}