Testy możliwości

Aby sprawdzić, czy urządzenie użytkownika obsługuje protokół RCS i może komunikować się z agentem RBM, możesz poprosić o udostępnienie odpowiednich funkcji urządzenia. Określenie, które funkcje są obsługiwane przez urządzenie (jeśli takie występują), umożliwia agentowi dostosowanie rozmowy do możliwości urządzenia i unikanie prezentowania interakcji, które są trudne lub niemożliwe do wykonania przez użytkownika.

Jeśli urządzenie użytkownika w ogóle nie jest w stanie odbierać wiadomości RCS, możesz komunikować się z nim za pomocą innych usług, na przykład SMS-ów.

Wyślij kontrolę możliwości

Poniższy kod wysyła kontrolę możliwości i czeka na odpowiedź. Opcje formatowania i wartości znajdziesz w sekcji 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);
});
Ten kod jest fragmentem przykładowego agenta 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");
Ten kod jest fragmentem przykładowego agenta 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')
Ten kod jest fragmentem przykładowego agenta 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");
Ten kod jest fragmentem przykładowego agenta RBM.

Odpowiedź dotycząca możliwości

Po przeprowadzeniu sprawdzenia możliwości platforma RBM zwraca listę funkcji w formacie JSON obsługiwanych przez dane urządzenie.

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

Jeśli wyślesz sprawdzenie możliwości użytkownikowi, który nie jest dostępny w RBM, na przykład gdy urządzenie nie obsługuje RCS, platforma RBM zwróci błąd 404.

Jeśli wyślesz sprawdzanie możliwości użytkownikowi RCS w sieci, w której agent nie został jeszcze uruchomiony, platforma RBM zwróci błąd 403.

Zbiorcze kontrole możliwości

Aby oszacować liczbę dostępnych użytkowników RBM, przeprowadź zbiorcze sprawdzanie możliwości. Kontrola zbiorcza wskazuje, czy dany numer telefonu jest osiągalny, ale nie wskazuje, które funkcje są obsługiwane.

W jednym zbiorczym sprawdzeniu możliwości możesz podać maksymalnie 10 000 numerów telefonów. Aby sprawdzić więcej liczb, przeprowadź kilka testów. Aby używać plików CSV jako formatu wejściowego, użyj skryptu sprawdzania możliwości zbiorczych.

Zbiorcze testy możliwości obejmują maksymalnie 600 zapytań na minutę (QPM).

Zbiorcze testy możliwości zwracają listę numerów, do których agent może docierać u operatorów aktualnie obsługiwanych, a także szacowaną łączną liczbę dostępnych użytkowników u wszystkich operatorów. Zobacz Odpowiedź na zbiorcze sprawdzenie możliwości.

Szacowanie łącznej liczby osiągalnych użytkowników

Odpowiedzi na weryfikację zbiorczą zawierają listę numerów telefonów, z których można natychmiast skontaktować się u operatorów obsługiwanych przez agenta (reachableUsers). Odpowiedzi zawierają też 2 wartości, które pomagają oszacować łączną liczbę osiągalnych użytkowników u wszystkich operatorów.

Gdy agent przeprowadza zbiorcze sprawdzenie możliwości ponad 500 numerów telefonów, RBM losowo testuje około 75% z nich, aby sprawdzić wszystkich operatorów (raportowanych w totalRandomSampleUserCount). RBM zwraca też liczbę dostępnych numerów RBM z losowej próbki, niezależnie od stanu uruchomienia przez operatora (reachableRandomSampleUserCount). Dzieląc reachableRandomSampleUserCount przez totalRandomSampleUserCount, możesz oszacować, jaki procent numerów byłby dostępny dla Twojego agenta w przypadku ich uruchomienia.

Jeśli na przykład w ramach zbiorczego sprawdzania możliwości określisz 5000 numerów telefonów, a RBM losuje próbkę około 75% określonych numerów, totalRandomSampleUserCount może mieć wartość 3750. Jeśli reachableRandomSampleUserCount ma wartość 3000, to 80% próbkowanych liczb było osiągalnych.

Testowanie próbek losowych może prowadzić do rozbieżności w procentach. Aby uwzględnić efekty próbkowania losowego, przeprowadź zbiorcze kontrole możliwości obejmujące większą liczbę numerów telefonów. Możesz też wielokrotnie przeprowadzać testy z tymi samymi partiami liczb, a potem uśredniać wyniki, aby znormalizować działanie próbkowania losowego.

Wyślij zbiorcze sprawdzenie możliwości

Poniższy kod służy do zbiorczego sprawdzenia możliwości i oczekuje na odpowiedź. Opcje formatowania i wartości znajdziesz w sekcji users.batchGet.

Numery telefonów muszą być w formacie E.164. Na przykład: „+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);
});
Ten kod korzysta z przykładowego agenta 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"));
Ten kod korzysta z przykładowego agenta 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'])
Ten kod korzysta z przykładowego agenta 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"}));
Ten kod korzysta z przykładowego agenta RBM.

Odpowiedź na zbiorcze sprawdzenie możliwości

Po przeprowadzeniu zbiorczego sprawdzania możliwości RBM zwraca odpowiedź w formacie JSON.

{
  "reachableUsers": [
    "PHONE_NUMBER"
  ],
  "totalRandomSampleUserCount": "COUNT_OF_SAMPLE",
  "reachableRandomSampleUserCount": "REACHABLE_FROM_SAMPLE"
}
Pole Opis
reachableUsers Lista osiągalnych użytkowników u operatorów aktualnie obsługiwanych przez agenta.
totalRandomSampleUserCount Liczba losowej próbki określonych liczb. Zwykle ok. 75% podanych liczb.
reachableRandomSampleUserCount Liczba numerów z losowej próbki, do których RBM można uzyskać u wszystkich operatorów, niezależnie od tego, jakich operatorów obecnie używają agent.

Narzędzie: Skrypt zbiorczego sprawdzania możliwości

Skrypt sprawdzania możliwości Buck Capability Check (zaloguj się, aby pobrać) przeprowadza zbiorcze kontrole możliwości z wykorzystaniem plików CSV jako formatów wejściowych i wyjściowych. Skrypt analizuje plik CSV z nazwami MPNSDN i używa pakietu SDK RBM do sprawdzania możliwości każdego wymienionego urządzenia.

Maszyna wirtualna z 2 procesorami i 4 GB pamięci RAM, na której uruchomiono skrypt z 500 wątkami, może osiągnąć około 1 tys. zapytań na sekundę, ale ogólna liczba zapytań na sekundę zależy od używanej maszyny, kraju urządzeń, regionalnej konfiguracji agenta i użytego punktu końcowego API.

Wymagania wstępne

Zanim użyjesz tego narzędzia do zbiorczego sprawdzenia możliwości, zapoznaj się z następującymi zasobami:

  • Ścieżka do pliku CSV z numerami MSISDN w celu sprawdzenia możliwości
  • Ścieżka do klucza konta usługi agenta na komputerze programisty

Dodatkowo na komputerze musi być zainstalowane to oprogramowanie:

Skonfiguruj

  1. Na komputerze programisty pobierz i wyodrębnij Skrypt zbiorczego sprawdzania możliwości (zaloguj się, aby pobrać).
  2. Przejdź do katalogu głównego skryptu.
  3. Zmień nazwę klucza konta usługi na „rbm-agent-service-account-credentials.json” i przenieś klucz konta usługi do katalogu „src/main/resources”.

Przeprowadzanie sprawdzania zbiorczego

  1. Przejdź w terminalu do katalogu głównego skryptu.
  2. Uruchom te polecenia:

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

    Zastąp zmienne zidentyfikowanymi przez siebie wartościami.

    Zastąp Z modelem Przykład
    INPUT_FILE Ścieżka do wejściowego pliku CSV. input.csv
    OUTPUT_FILE Ścieżka do wyjściowego pliku CSV. output.csv
    NUM_OF_THREADS Liczba wątków, które mają być przeznaczone na testy możliwości. 500
    START_INDEX Opcjonalnie. Wartość w pliku CSV, od której ma się rozpocząć sprawdzanie. 5
    END_INDEX Opcjonalnie. Wartość w pliku CSV, po której następuje zakończenie sprawdzania. 500
  3. Po zakończeniu skryptu otwórz wyjściowy plik CSV, aby wyświetlić wyniki.