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 autorisés par leur client RCS. 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.

Gérer les messages entrants

La façon dont votre agent traite les messages des utilisateurs et y répond dépend fortement de votre logique métier. Toutefois, la procédure à suivre pour répondre à un message utilisateur est généralement la même.

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

Les utilisateurs peuvent envoyer quatre types de messages :

  • Les messages sont des réponses au format libre.
  • Les messages Suggestion 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 Location 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 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 de l'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 une machine.

Si un utilisateur envoie un message texte, votre agent peut analyser la réponse pour y trouver des mots clés compatibles ou utiliser le traitement du langage naturel (comme Dialogflow) pour traiter le message de l'utilisateur et identifier la marche à suivre.

Les messages de localisation et de fichiers n'incluent pas de données textuelles 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 informations 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 : Implémenter la logique métier pour 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 exécuter la logique métier de l'interaction.

Étape 4 : Répondez à 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 les valeurs, consultez UserMessage.

Remarque : Pour le trafic aux États-Unis, les messages des utilisateurs et les actions suggérées qu'ils effectuent sont soumis aux classifications du modèle de facturation américain. Lorsque votre agent reçoit ces événements, il inclut le champ richMessageClassification, qui détermine le type d'événement facturable. Pour en savoir plus sur la classification, consultez le guide sur le modèle de facturation aux États-Unis.

L'agent reçoit le message

{
  "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 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": {
    "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 les valeurs, consultez UserEvent.

Message remis à 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"
}