Événements

Les événements sont des notifications que votre agent peut envoyer et recevoir. Il existe trois types d'événements:

Événements générés par le serveur

La plate-forme RBM envoie des événements pour informer votre agent des mises à jour au niveau du serveur, telles que les expirations des messages.

Pour en savoir plus sur les options de mise en forme et de valeur, consultez ServerEvent.

Le message a expiré, sa révocation a réussi

Le message a expiré et a bien été révoqué. Cet événement serait un bon déclencheur pour votre stratégie de message de remplacement.

{
  "phoneNumber": [phone number of recipient that the original message was intended for] ,
  "messageId": [RCS message ID of the message],
  "agentId": [bot ID],
  "eventType": "TTL_EXPIRATION_REVOKED",
  "eventId": [unique ID generated by the RBM platform],
  "sendTime": [time at which the server sent this event]
}

Le message a expiré, sa révocation a échoué

Le message a expiré, mais n'a pas été révoqué.

{
  "phoneNumber": [phone number of recipient that the original message was intended for] ,
  "messageId": [RCS message ID of the message],
  "agentId": [bot ID],
  "eventType": "TTL_EXPIRATION_REVOKE_FAILED",
  "eventId": [unique ID generated by the RBM platform],
  "sendTime": [time at which the server sent this event]
}

La distribution du message n'est pas garantie.

  • Si le message a été distribué, vous recevrez un événement DELIVERED au niveau de votre webhook.
  • Si le message n'a pas été distribué, utilisez l'API de révocation pour envoyer une demande de révocation.

Si le message est urgent, par exemple un OTP ou une alerte de fraude, il est préférable de l'envoyer via un autre canal comme SMS, même si cela entraîne des messages en double à l'utilisateur.

Événements générés par les utilisateurs

Comme pour les messages utilisateur et les vérifications des fonctionnalités, votre agent reçoit les événements utilisateur au format JSON.

Pour en savoir plus sur les options de mise en forme et de valeur, consultez UserEvent.

L'utilisateur reçoit le message de l'agent

Cet événement indique qu'un message a été distribué.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "DELIVERED",
  "eventId": "EVENT_ID",
  "messageId": "MESSAGE_ID",
  "agentId": "AGENT_ID"
}

L'utilisateur lit le message de l'agent

Cet événement indique qu'un message a été ouvert ou confirmé.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "READ",
  "eventId": "EVENT_ID",
  "messageId": "MESSAGE_ID",
  "agentId": "AGENT_ID"
}

L'utilisateur commence à saisir du texte

Cet événement indique qu'un utilisateur est en train d'écrire.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "IS_TYPING",
  "eventId": "EVENT_ID",,
  "agentId": "AGENT_ID"
}

L'utilisateur envoie un SMS

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "text": "Hi",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID"
}

L'utilisateur envoie un fichier

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "userFile": {
    "payload": {
      "mimeType": "image/gif",
      "fileSizeBytes": 127806,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9",
      "fileName": "4_animated.gif"
    }
  },
  "eventId": "EVENT_ID",,
  "agentId": "AGENT_ID"
}

L'utilisateur appuie sur une réponse suggérée.

Lorsqu'un utilisateur appuie sur une réponse suggérée, votre agent reçoit un événement contenant les données de postback et le texte de la réponse.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID",
  "suggestionResponse": {
    "postbackData": "postback_1234",
    "text": "Hello there!"
  }
}

L'utilisateur appuie sur une action suggérée

Lorsqu'un utilisateur appuie sur une action suggérée, votre agent reçoit un événement avec les données de postback de l'action.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID",
  "suggestionResponse": {
    "postbackData": "postback_1234"
  }
}

Événements générés par des agents

Votre agent envoie des événements pour simuler des interactions humaines et s'assurer que l'agent interagit avec ses messages. Pour les utilisateurs, les événements s'affichent sous forme de notifications dans leurs conversations.

Pour en savoir plus sur les options de mise en forme et de valeur, consultez phones.agentEvents.

L'agent envoie un événement READ

Pour les utilisateurs, cet événement apparaît comme une confirmation de lecture pour un message spécifique. Elle indique à l'utilisateur que la plate-forme RBM a distribué son message et que l'agent le traite.

Le code suivant envoie un événement READ pour un message avec un messageId correspondant.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d "{
  'eventType': 'READ',
  'messageId': 'MESSAGE_ID'
}"

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('../libs/rbm_api_helper');

// Send the device an event to indicate that messageId has been read
rbmApiHelper.sendReadMessage('+12223334444', messageId);
Ce code est extrait d'un exemple d'agent RBM.

Java

import com.google.rbm.samples.lib.RbmApiHelper;
…

// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper();

// Send the device an event to indicate that messageId has been read
rbmApiHelper.sendReadMessage(messageId, "+12223334444");
Ce code est extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service

# Send the device an event to indicate that message_id was read
rbm_service.send_read_event('+12223334444', message_id)
Ce code est extrait d'un exemple d'agent RBM.

C#

using RCSBusinessMessaging;
…

// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Send the device an event to indicate that messageId has been read
rbmApiHelper.SendReadMessage(messageId, "+12223334444");
Ce code est extrait d'un exemple d'agent RBM.

L'agent envoie un événement IS_TYPING

Pour les utilisateurs, cet événement apparaît sous la forme d'un indicateur de saisie et leur indique que votre agent compose un message. L'indicateur de saisie expire après un court laps de temps (environ 20 secondes) ou lorsque l'appareil de l'utilisateur reçoit un nouveau message de votre agent. Votre agent peut envoyer plusieurs événements IS_TYPING pour réinitialiser le délai d'expiration de l'indicateur de saisie.

Le code suivant envoie un événement IS_TYPING.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d "{
  'eventType': 'IS_TYPING',
}"

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('../libs/rbm_api_helper');

// Send the device an event to indicate that the agent is typing
rbmApiHelper.sendIsTypingMessage('+12223334444', function() {
    console.log('Typing event sent!');
});
Ce code est extrait d'un exemple d'agent RBM.

Java

import com.google.rbm.samples.lib.RbmApiHelper;
…

// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper();

// Send the device an event to indicate that the agent is typing
rbmApiHelper.sendIsTypingMessage("+12223334444");
Ce code est extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service

# Send the device an event to indicate that the agent is typing
rbm_service.send_is_typing_event('+12223334444')
Ce code est extrait d'un exemple d'agent RBM.

C#

using RCSBusinessMessaging;
…

// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Send the device an event to indicate that the agent is typing
rbmApiHelper.SendIsTypingMessage(messageId, "+12223334444");
Ce code est extrait d'un exemple d'agent RBM.