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. L'identificazione delle funzionalità supportate da un dispositivo, se presenti, consente all'agente di personalizzare la conversazione in base alle funzionalità del dispositivo ed evitare di presentare interazioni difficili o impossibili da completare 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 SMS/MMS.

Controllare le funzionalità del dispositivo

Il seguente codice invia un controllo delle funzionalità e attende una risposta. Per le opzioni di formattazione e valore, consulta 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);
});
Questo codice è un estratto di un agente di esempio 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");
Questo codice è un estratto di 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 di 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 di un agente di esempio RBM.

Risposta relativa alle funzionalità

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

{
  "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 richiesta restituisce una risposta o un errore.

Una risposta positiva viene restituita solo se l'MSISDN (numero di telefono) si è connesso al servizio RCS negli ultimi 31 giorni. Ciò significa che il dispositivo dell'utente ha eseguito il check-in con il nostro server RCS entro questo periodo di tempo. In media, i dispositivi online e abilitati per RCS eseguono il check-in ogni 1-4 ore.

Se un utente sposta la scheda SIM su un altro dispositivo compatibile con RCS, l'associazione del dispositivo precedente viene rimossa e ne viene creata una nuova, aggiornando le funzionalità del dispositivo nel servizio RCS.

Se una scheda SIM viene inserita in un dispositivo in cui RCS è disattivato da un operatore o da un produttore oppure se la scheda SIM rimane inutilizzata, il servizio RCS tenterà comunque di recapitare i messaggi al dispositivo associato in precedenza per un massimo di 31 giorni.

Ecco le cause degli errori 404:

  • L'utente non è raggiungibile tramite RBM, ad esempio se il suo dispositivo non supporta RCS.

  • L'utente ha RCS, ma il tuo agente non è stato lanciato sulla sua rete mobile.

Accodamento offline

I messaggi vengono accodati per un massimo di 31 giorni e recapitati quando il dispositivo torna online. Ciò significa che, anche se un dispositivo va offline per un periodo prolungato (fino a 31 giorni), i messaggi accodati verranno comunque recapitati al momento della riconnessione, a condizione che l'MSISDN si sia connesso al servizio RCS negli ultimi 31 giorni.

Controlli delle funzionalità collettivi

Per stimare il numero di utenti di RCS for Business raggiungibili, esegui un controllo delle funzionalità collettivo. I controlli collettivi indicano se un numero di telefono è raggiungibile, ma non quali funzionalità supporta.

Per ogni controllo delle funzionalità collettivo, devi fornire 500-10.000 numeri di telefono unici di una singola regione geografica. Per controllare più numeri, esegui più controlli. Puoi effettuare fino a 600 chiamate al minuto. Utilizza lo script di controllo delle funzionalità collettivo per utilizzare i file CSV come formato di input. I controlli collettivi leggono dalla cache delle funzionalità, che viene aggiornata organicamente dai client che utilizzano RCS. Gli agenti non richiedono direttamente le funzionalità di ogni dispositivo. Per questo motivo, i risultati potrebbero non essere aggiornati.

I controlli delle funzionalità collettivi restituiscono un elenco dei numeri che il tuo agente può raggiungere sugli operatori su cui è stato lanciato, nonché stime del numero totale di utenti raggiungibili su tutti gli operatori. Consulta Risposta del controllo delle funzionalità collettivo.

Stimare il numero totale di utenti raggiungibili

Sebbene le risposte dei controlli collettivi includano un elenco di numeri di telefono immediatamente raggiungibili sugli operatori su cui è stato lanciato l'agente (reachableUsers), le risposte includono anche due valori che possono aiutarti a stimare il numero totale di utenti raggiungibili su tutti gli operatori.

Come funziona

Quando l'agente esegue un controllo delle funzionalità collettivo, RBM campiona in modo casuale circa il 75% di questi numeri per controllare tutti gli operatori (riportati in totalRandomSampleUserCount). RBM restituisce anche il conteggio dei numeri raggiungibili tramite RBM dal campione casuale, indipendentemente dallo stato di lancio dell'operatore (reachableRandomSampleUserCount). Dividendo reachableRandomSampleUserCount per totalRandomSampleUserCount, puoi stimare la percentuale di numeri che il tuo agente potrebbe raggiungere se fosse stato lanciato su tutti gli operatori.

Ad esempio, se specifichi 5000 numeri di telefono nel controllo delle funzionalità collettivo e 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.

Tenere conto del campionamento casuale

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

Inviare un controllo delle funzionalità collettivo

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

I numeri di telefono devono essere nel formato E.164 (ad esempio "+12223334444") e l'elenco deve contenere da 500 a 10.000 numeri di telefono unici.

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);
});
Questo codice utilizza l'agente di esempio 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"));
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 delle funzionalità collettivo

Dopo aver eseguito un controllo delle funzionalità collettivo, 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 sugli operatori su cui è stato lanciato l'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 raggiungibili tramite RBM su tutti gli operatori, indipendentemente dagli operatori su cui è stato lanciato l'agente. Questo conteggio viene utilizzato per fornire una stima approssimativa del numero totale di utenti raggiungibili su tutti gli operatori.
reachableUsersMap Solo output. Mappa dell'ID operatore a un elenco di utenti raggiungibili su quell'operatore. Questo campo viene compilato solo per i numeri di telefono statunitensi.

Strumento: script di controllo delle funzionalità collettivo

Lo Script di controllo delle funzionalità collettivo (accedi per scaricare) esegue controlli delle funzionalità collettivi utilizzando i file CSV come formati di input e output. Lo script analizza il file CSV degli MSISDN e utilizza l'SDK RBM per controllare 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 le QPS complessive dipendono 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 delle funzionalità collettivo, procurati quanto segue:

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

Inoltre, sulla macchina di sviluppo deve essere installato il seguente software:

Configura

Per configurare la macchina di sviluppo per un controllo delle funzionalità collettivo:

  1. Scarica ed estrai lo Script di controllo delle funzionalità collettivo (Accedi per scaricare).
  2. Segui i passaggi descritti nel file README.

Eseguire un controllo delle funzionalità collettivo

Per 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="AGENT_ID INPUT_FILE OUTPUT_FILE NUM_OF_THREADS START_INDEX END_INDEX"

    Sostituisci le variabili con i valori che hai identificato.

    Sostituisci Con Esempio
    AGENT_ID ID dell'agente virtuale RCS for Business. welcome-bot
    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 Facoltativo. Il valore nel file CSV da cui iniziare a eseguire i controlli. 5
    END_INDEX Facoltativo. Il valore nel file CSV dopo il quale terminare i controlli. 500
  3. Al termine dello script, apri il file CSV di output per visualizzare i risultati.