Vérifications des capacités

Pour vérifier si l'appareil d'un utilisateur est compatible avec le RCS et peut communiquer avec un agent RBM, vous pouvez demander les capacités de l'appareil. Identifier les fonctionnalités compatibles avec un appareil, le cas échéant, permet à votre agent d'adapter la conversation aux capacités de l'appareil et d'éviter de présenter des interactions difficiles ou impossibles à réaliser pour l'utilisateur.

Si l'appareil d'un utilisateur n'est pas du tout compatible avec les messages RCS, vous pouvez communiquer avec lui via d'autres services, comme les SMS/MMS.

Vérifier les fonctionnalités de l'appareil

Le code suivant envoie une vérification des fonctionnalités et attend une réponse. Pour connaître les options de mise en forme et de valeur, consultez getCapabilities.

cURL

curl -X GET "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/capabilities?requestId=REQUEST_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`"

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Send a capability check to the device
rbmApiHelper.checkCapability('+12223334444', function(response) {
   // Print capabilities of the device
   console.log(response);
});
Ce code est un extrait d'un exemple d'agent RBM.

Java

import com.google.rbm.RbmApiHelper;


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

// Check the capabilities of the device
boolean capability = rbmApiHelper.getCapability("+12223334444");
Ce code est un extrait d'un exemple d'agent RBM.

Python

# Reference to RBM Python client helper
from rcs_business_messaging import rbm_service

# Send the tester invite to a device
response = rbm_service.make_cap_request('+12223334444')
Ce code est un extrait d'un exemple d'agent RBM.

C#

using RCSBusinessMessaging;


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

// Register the device as a tester
Capabilities capabilities = rbmApiHelper.GetCapability("+12223334444");
Ce code est un extrait d'un exemple d'agent RBM.

Réponse de fonctionnalité

Après avoir exécuté une vérification des fonctionnalités, la plate-forme RBM renvoie une liste au format JSON des fonctionnalités prises en charge par l'appareil spécifié.

{
  "features": [
    "RICHCARD_STANDALONE",
    "RICHCARD_CAROUSEL",
    "ACTION_CREATE_CALENDAR_EVENT",
    "ACTION_DIAL",
    "ACTION_OPEN_URL",
    "ACTION_SHARE_LOCATION",
    "ACTION_VIEW_LOCATION",
    "ACTION_OPEN_URL_IN_WEBVIEW",
    "PDF_IN_RICH_CARDS"
  ]
}

La requête renvoie une réponse ou une erreur.

Une réponse positive n'est renvoyée que si le MSISDN (numéro de téléphone) s'est connecté au service RCS au cours des 31 derniers jours. Cela signifie que l'appareil de l'utilisateur s'est enregistré auprès de notre serveur RCS au cours de cette période. Les appareils en ligne et compatibles RCS s'enregistrent en moyenne toutes les une à quatre heures.

Si un utilisateur transfère sa carte SIM vers un autre appareil compatible RCS, l'association de l'appareil précédent est supprimée et une nouvelle est créée, ce qui met à jour les fonctionnalités de l'appareil dans le service RCS.

Si une carte SIM est insérée dans un appareil sur lequel le RCS est désactivé par un opérateur ou un fabricant, ou si la carte SIM reste inutilisée, le service RCS tentera toujours de distribuer les messages à l'appareil précédemment associé pendant 31 jours maximum.

Voici les causes des erreurs 404 :

  • L'utilisateur n'est pas joignable par RBM (par exemple, si son appareil ne prend pas en charge le RCS).

  • L'utilisateur dispose du RCS, mais votre agent n'est pas lancé sur son réseau mobile.

Mise en file d'attente hors connexion

Les messages sont mis en file d'attente pendant 31 jours maximum et sont envoyés lorsque l'appareil se reconnecte. Cela signifie que même si un appareil est hors connexion pendant une période prolongée (jusqu'à 31 jours), les messages mis en file d'attente seront toujours remis lors de la reconnexion, à condition que le MSISDN se soit connecté au service RCS au cours des 31 derniers jours.

Vérifications groupées des fonctionnalités

Pour estimer le nombre d'utilisateurs joignables par RBM, effectuez une vérification groupée des fonctionnalités. Les vérifications groupées indiquent si un numéro de téléphone est joignable, mais pas les fonctionnalités qu'il prend en charge.

Pour chaque vérification groupée des fonctionnalités, vous devez fournir entre 500 et 10 000 numéros de téléphone uniques. Pour vérifier plusieurs numéros, effectuez plusieurs vérifications. Vous pouvez effectuer jusqu'à 600 appels par minute. Utilisez le script de vérification des fonctionnalités groupées pour utiliser les fichiers CSV comme format d'entrée. Les vérifications groupées sont lues à partir du cache des fonctionnalités, qui est mis à jour de manière organique par les clients à l'aide du protocole RCS. Les agents ne demandent pas directement les capacités de chaque appareil. Par conséquent, il est possible que les résultats ne soient pas à jour.

Les vérifications des capacités groupées renvoient une liste des numéros que votre agent peut joindre sur les opérateurs où il est lancé, ainsi que des estimations du nombre total d'utilisateurs joignables sur tous les opérateurs. Consultez Réponse de vérification des capacités groupées.

Estimer le nombre total d'utilisateurs que vous pouvez toucher

Les réponses à la vérification groupée incluent une liste des numéros de téléphone immédiatement joignables sur les opérateurs lancés par votre agent (reachableUsers). Elles incluent également deux valeurs qui peuvent vous aider à estimer le nombre total d'utilisateurs joignables sur tous les opérateurs.

Fonctionnement

Lorsque votre agent effectue une vérification des fonctionnalités groupée, RBM échantillonne de manière aléatoire environ 75 % de ces numéros pour vérifier tous les opérateurs (indiqués dans totalRandomSampleUserCount). RBM renvoie également le nombre de numéros joignables par RBM à partir de l'échantillon aléatoire, quel que soit l'état de lancement de l'opérateur (reachableRandomSampleUserCount). En divisant reachableRandomSampleUserCount par totalRandomSampleUserCount, vous pouvez estimer le pourcentage de numéros que votre agent pourrait joindre s'il était lancé sur tous les opérateurs.

Par exemple, si vous spécifiez 5 000 numéros de téléphone dans la vérification des fonctionnalités groupées et que RBM échantillonne de manière aléatoire environ 75 % des numéros spécifiés, totalRandomSampleUserCount peut être 3750. Si reachableRandomSampleUserCount est 3000, cela signifie que 80 % des numéros échantillonnés étaient joignables.

Tenir compte de l'échantillonnage aléatoire

Le test d'échantillons aléatoires peut entraîner des écarts dans les pourcentages. Pour tenir compte des effets de l'échantillonnage aléatoire, exécutez des vérifications groupées de la capacité avec un plus grand nombre de numéros de téléphone. Vous pouvez également effectuer des vérifications avec les mêmes lots de nombres plusieurs fois, puis faire la moyenne des résultats pour normaliser le comportement d'échantillonnage aléatoire.

Envoyer une vérification groupée des fonctionnalités

Le code suivant envoie une vérification groupée des fonctionnalités et attend une réponse. Pour connaître les options de mise en forme et de valeur, consultez users.batchGet.

Les numéros de téléphone doivent être au format E.164 (par exemple, "+12223334444"). La liste doit contenir entre 500 et 10 000 numéros de téléphone uniques.

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/users:batchGet?agentId=AGENT_ID \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "users": [
    "PHONE_NUMBER",
  ]
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Specify phone numbers
let phoneNumbers = ['+12223334444', '+12223334444'];

// Perform a bulk capability check
rbmApiHelper.getUsers(phone_numbers, function(response) {
   // Print the bulk capability check response
   console.log(response);
});
Ce code utilise l'agent d'exemple RBM.

Java

import com.google.rbm.RbmApiHelper;


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

// Perform a bulk capability check
BatchGetUsersResponse batchGetUsersResponse = rbmApiHelper.getUsers(Arrays.asList("+12223334444", "+12223334444"));
Ce code utilise l'agent d'exemple RBM.

Python

# Reference to RBM Python client helper
from rcs_business_messaging import rbm_service

# Perform a bulk capability check
response = rbm_service.make_batch_cap_request(['+12223334444', '+12223334444'])
Ce code utilise l'agent exemple RBM.

C#

using RCSBusinessMessaging;


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

// Perform a bulk capability check
BatchGetUsersResponse batchGetUsersResponse = rbmApiHelper.GetUsers(new List({"+12223334444", "+12223334444"}));
Ce code utilise l'agent d'exemple RBM.

Réponse à la vérification des fonctionnalités groupées

Après avoir exécuté une vérification des capacités groupées, RBM renvoie une réponse au format JSON.

{
  "reachableUsers": [
    "PHONE_NUMBER"
  ],
  "totalRandomSampleUserCount": "COUNT_OF_SAMPLE",
  "reachableRandomSampleUserCount": "REACHABLE_FROM_SAMPLE"
}
Champ Description
reachableUsers Liste des utilisateurs joignables sur les opérateurs lancés par l'agent.
totalRandomSampleUserCount Nombre d'un échantillon aléatoire de nombres spécifiés. Généralement environ 75 % des nombres spécifiés.
reachableRandomSampleUserCount Nombre de numéros de l'échantillon aléatoire qui sont joignables par RBM sur tous les opérateurs, quel que soit l'opérateur sur lequel l'agent est lancé. Ce nombre permet d'obtenir une estimation approximative du nombre total d'utilisateurs joignables sur l'ensemble des opérateurs.
reachableUsersMap Uniquement en sortie. Mappage de l'ID du transporteur à une liste d'utilisateurs joignables sur ce transporteur. Ce champ n'est renseigné que pour les numéros de téléphone américains.

Outil : Script de vérification des fonctionnalités par lot

Le script de vérification des fonctionnalités groupées (se connecter pour télécharger) effectue des vérifications groupées des fonctionnalités à l'aide de fichiers CSV comme formats d'entrée et de sortie. Le script analyse le fichier CSV des numéros MSISDN et utilise le SDK RBM pour vérifier les fonctionnalités de chaque appareil listé.

Une machine virtuelle avec deux processeurs et 4 Go de RAM exécutant le script avec 500 threads peut atteindre environ 1 000 requêtes par seconde. Toutefois, le nombre total de requêtes par seconde dépend de la machine utilisée, du pays des appareils, de la configuration régionale de votre agent et du point de terminaison de l'API utilisé.

Prérequis

Avant d'utiliser l'outil pour effectuer une vérification groupée des fonctionnalités, obtenez les éléments suivants :

  • Chemin d'accès à un fichier CSV contenant les numéros MSISDN sur lesquels effectuer des vérifications de compatibilité
  • Chemin d'accès à la clé du compte de service de votre agent sur votre ordinateur de développement

De plus, vous devez installer les logiciels suivants sur votre ordinateur de développement :

Configurer

Pour configurer votre ordinateur de développement pour une vérification groupée des fonctionnalités, procédez comme suit :

  1. Téléchargez et extrayez le Script de vérification des fonctionnalités d'importation groupée (connectez-vous pour le télécharger).
  2. Suivez les étapes décrites dans le fichier README.

Exécuter une vérification des fonctionnalités groupées

Pour effectuer une vérification groupée, procédez comme suit :

  1. Dans un terminal, accédez au répertoire racine du script.
  2. Exécutez les commandes suivantes :

    export MAVEN_OPTS="-Xms1024m -Xmx3000m"
    mvn compile && mvn exec:java -Dexec.args="AGENT_ID INPUT_FILE OUTPUT_FILE NUM_OF_THREADS START_INDEX END_INDEX"

    Remplacez les variables par les valeurs que vous avez identifiées.

    Remplacer Avec Exemple
    AGENT_ID ID de l'agent RCS for Business. welcome-bot
    INPUT_FILE Chemin d'accès au fichier CSV d'entrée. input.csv
    OUTPUT_FILE Chemin d'accès au fichier CSV de sortie. output.csv
    NUM_OF_THREADS Nombre de threads à consacrer aux vérifications des fonctionnalités. 500
    START_INDEX Facultatif. Valeur du fichier CSV à partir de laquelle exécuter les vérifications. 5
    END_INDEX Facultatif. Valeur dans le fichier CSV après laquelle les vérifications doivent s'arrêter. 500
  3. Une fois le script terminé, ouvrez le fichier CSV de sortie pour afficher les résultats.