Controlli delle funzionalità

Per verificare se il dispositivo di un utente è abilitato per RCS e in grado di comunicare con un agente RBM, puoi richiedere le funzionalità del dispositivo. Identificare le eventuali funzionalità supportate da un dispositivo consente all'agente di personalizzare la conversazione in base alle funzionalità del dispositivo ed evitare di presentare interazioni difficili o impossibili per l'utente.

Se il dispositivo di un utente non è in grado di ricevere messaggi RCS, puoi comunicare con l'utente tramite altri servizi, come gli SMS.

Invia un controllo della funzionalità

Il codice seguente invia un controllo della funzionalità e attende una risposta. Per le opzioni di formattazione e dei valori, consulta getCapabilities.

cURL

curl -X GET "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/capabilities?requestId=REQUEST_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('../libs/rbm_api_helper');

// Send a capability check to the device
rbmApiHelper.checkCapability('+12223334444', function(response) {
   // Print capabilities of the device
   console.log(response);
});
Questo codice è un estratto da un agente di esempio RBM.

Java

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

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

// Check the capabilities of the device
boolean capability = rbmApiHelper.getCapability("+12223334444");
Questo codice è un estratto da un agente di esempio 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')
Questo codice è un estratto da un agente di esempio 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");
Questo codice è un estratto da un agente di esempio RBM.

Risposta della funzionalità

Dopo aver eseguito un controllo delle funzionalità, la piattaforma RBM restituisce un elenco in formato JSON di funzionalità supportate dal dispositivo specificato.

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

Se invii un controllo delle funzionalità a un utente non raggiungibile da RBM, ad esempio se il suo dispositivo non supporta RCS, la piattaforma RBM restituisce un errore 404.

Se invii un controllo delle funzionalità a un utente RCS su una rete in cui l'agente non è ancora stato avviato, la piattaforma RBM restituisce un errore 403.

Controlli collettivi delle funzionalità

Per stimare il numero di utenti raggiungibili con RBM, esegui un controllo collettivo delle funzionalità. I controlli collettivi indicano se un numero di telefono è raggiungibile, ma non quali sono le funzionalità supportate da un numero di telefono.

Puoi specificare fino a 10.000 numeri di telefono per controllo collettivo della funzionalità. Per controllare altri numeri, esegui più controlli. Utilizza lo Script per il controllo delle capacità collettive per usare i file CSV come formato di input.

I controlli collettivi delle funzionalità hanno un massimo di 600 query al minuto (QPM).

I controlli collettivi delle funzionalità restituiscono un elenco dei numeri che l'agente può raggiungere con gli operatori attualmente lanciati, nonché stime per il numero totale di utenti raggiungibili per tutti gli operatori. Consulta Risposta al controllo collettivo della funzionalità.

Stima gli utenti raggiungibili totali

Sebbene le risposte del controllo collettivo includano un elenco di numeri di telefono raggiungibili immediatamente tramite gli operatori lanciati dall'agente (reachableUsers), le risposte includono anche due valori che possono aiutarti a stimare il numero totale di utenti raggiungibili per tutti gli operatori.

Quando il tuo agente esegue un controllo collettivo della capacità di più di 500 numeri di telefono, RBM campiona in modo casuale circa il 75% di questi numeri per controllare tutti gli operatori (riportati in totalRandomSampleUserCount). Inoltre, RBM restituisce il numero di numeri raggiungibili tramite RBM provenienti dal campione casuale, indipendentemente dallo stato del lancio dell'operatore (reachableRandomSampleUserCount). Dividendo reachableRandomSampleUserCount per totalRandomSampleUserCount, puoi stimare la percentuale di numeri che il tuo agente potrebbe raggiungere se venisse lanciato su tutti gli operatori.

Ad esempio, se specifichi 5000 numeri di telefono nel controllo collettivo della funzionalità e la funzionalità RBM campiona in modo casuale circa il 75% dei numeri specificati, totalRandomSampleUserCount potrebbe essere 3750. Se reachableRandomSampleUserCount è 3000, l'80% dei numeri campionati era raggiungibile.

Testare campioni casuali può portare a variazioni percentuali. Per tenere conto degli effetti del campionamento casuale, esegui controlli collettivi delle funzionalità con quantità maggiori di numeri di telefono. Puoi anche eseguire più volte i controlli con gli stessi batch di numeri e quindi fare la media dei risultati per normalizzare il comportamento del campionamento casuale.

Invia un controllo collettivo delle funzionalità

Il codice seguente invia un controllo collettivo delle funzionalità e attende una risposta. Per le opzioni di formattazione e dei valori, consulta users.batchGet.

I numeri di telefono devono essere nel formato E.164. Ad esempio, "+12223334444".

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/users:batchGet \
-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('../libs/rbm_api_helper');

// 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);
});
Questo codice utilizza l'agente di esempio RBM.

Java

import com.google.rbm.samples.lib.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"));
Questo codice utilizza l'agente di esempio 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'])
Questo codice utilizza l'agente di esempio 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"}));
Questo codice utilizza l'agente di esempio RBM.

Risposta del controllo collettivo della funzionalità

Dopo aver eseguito un controllo collettivo della funzionalità, RBM restituisce una risposta in formato JSON.

{
  "reachableUsers": [
    "PHONE_NUMBER"
  ],
  "totalRandomSampleUserCount": "COUNT_OF_SAMPLE",
  "reachableRandomSampleUserCount": "REACHABLE_FROM_SAMPLE"
}
Campo Descrizione
reachableUsers Un elenco di utenti raggiungibili con gli operatori attualmente lanciati dell'agente.
totalRandomSampleUserCount Il conteggio di un campione casuale di numeri specificati. In genere circa il 75% dei numeri specificati.
reachableRandomSampleUserCount Il conteggio dei numeri del campione casuale che sono raggiungibili tramite RBM tra tutti gli operatori, indipendentemente dagli operatori attualmente lanciati dell'agente.

Strumento: Script per il controllo collettivo delle funzionalità

Lo Script per il controllo della capacità di byte (Accedi per il download) esegue controlli collettivi delle funzionalità utilizzando file CSV come formati di input e output. Lo script analizza il file CSV dei file MSISDN e utilizza l'SDK RBM per verificare le funzionalità di ogni dispositivo elencato.

Una macchina virtuale con 2 CPU e 4 GB di RAM che esegue lo script con 500 thread può raggiungere circa 1000 QPS, ma il QPS complessivo dipende dalla macchina utilizzata, dal paese dei dispositivi, dalla configurazione regionale dell'agente e dall'endpoint API utilizzato.

Prerequisiti

Prima di utilizzare lo strumento per eseguire un controllo collettivo della funzionalità, verifica quanto segue:

  • Il percorso di un file CSV con MSISDN su cui eseguire i controlli delle funzionalità
  • Il percorso della chiave dell'account di servizio dell'agente sulla macchina di sviluppo

Inoltre, è necessario che sulla tua macchina di sviluppo sia installato il seguente software:

Configurazione

  1. Sulla macchina di sviluppo, scarica ed estrai lo Script per il controllo collettivo delle funzionalità (Accedi per il download).
  2. Vai alla directory principale dello script.
  3. Rinomina la chiave dell'account di servizio in "rbm-agent-service-account-credentials.json" e sposta la chiave dell'account di servizio nella directory "src/main/resources".

Eseguire un controllo collettivo

  1. In un terminale, vai alla directory principale dello script.
  2. Esegui questi comandi:

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

    Sostituisci le variabili con i valori che hai identificato.

    Sostituisci Con Esempio
    INPUT_FILE Il percorso del file CSV di input. input.csv
    OUTPUT_FILE Il percorso del file CSV di output. output.csv
    NUM_OF_THREADS Il numero di thread da dedicare ai controlli delle funzionalità. 500
    START_INDEX Campo facoltativo. Il valore nel file CSV con cui iniziare a eseguire i controlli. 5
    END_INDEX Campo facoltativo. Il valore nel file CSV per terminare i controlli dopo. 500
  3. Al termine dello script, apri il file CSV di output per visualizzare i risultati.