Testy możliwości

Aby sprawdzić, czy urządzenie użytkownika obsługuje RCS i może komunikować się z agentem RBM, możesz poprosić o informacje o jego możliwościach. Określenie, które funkcje są obsługiwane przez urządzenie (jeśli w ogóle), pozwala agentowi dostosować rozmowę do możliwości urządzenia i uniknąć przedstawiania interakcji, które są trudne lub niemożliwe do wykonania przez użytkownika.

Jeśli urządzenie użytkownika nie może odbierać wiadomości RCS, możesz komunikować się z nim za pomocą innych usług, takich jak SMS/MMS.

Sprawdzanie możliwości urządzenia

Poniższy kod wysyła sprawdzenie 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&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);
});
Ten kod to fragment przykładowego agenta 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");
Ten kod to fragment 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 to fragment 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 to fragment przykładowego agenta RBM.

Odpowiedź dotycząca funkcji

Po przeprowadzeniu sprawdzania możliwości platforma RBM zwraca listę funkcji w formacie JSON, które obsługuje określone urządzenie.

{
  "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"
  ]
}

Żądanie zwraca odpowiedź lub błąd.

Pomyślna odpowiedź jest zwracana tylko wtedy, gdy numer MSISDN (numer telefonu) połączył się z usługą RCS w ciągu ostatnich 31 dni. Oznacza to, że urządzenie użytkownika zostało zarejestrowane na naszym serwerze RCS w tym przedziale czasu. Urządzenia online i urządzenia z obsługą RCS sprawdzają się średnio co 1–4 godziny.

Jeśli użytkownik przeniesie kartę SIM do innego urządzenia obsługującego RCS, poprzednie powiązanie urządzenia zostanie usunięte i utworzone zostanie nowe, co spowoduje zaktualizowanie możliwości urządzenia w usłudze RCS.

Jeśli karta SIM zostanie umieszczona w urządzeniu, w którym RCS jest wyłączony przez operatora lub producenta, albo karta SIM pozostanie nieużywana, usługa RCS będzie nadal próbować dostarczać wiadomości na wcześniej powiązane urządzenie przez maksymalnie 31 dni.

Oto przyczyny błędów 404:

  • Użytkownik jest niedostępny w RBM, np. jeśli jego urządzenie nie obsługuje RCS.

  • Użytkownik ma RCS, ale Twój agent nie jest uruchomiony w jego sieci komórkowej.

Kolejkowanie offline

Wiadomości są umieszczane w kolejce na maksymalnie 31 dni i dostarczane, gdy urządzenie ponownie połączy się z internetem. Oznacza to, że nawet jeśli urządzenie będzie offline przez dłuższy czas (do 31 dni), wiadomości w kolejce zostaną dostarczone po ponownym nawiązaniu połączenia, o ile numer MSISDN połączył się z usługą RCS w ciągu ostatnich 31 dni.

Sprawdzanie możliwości zbiorczych

Aby oszacować liczbę użytkowników, do których można dotrzeć za pomocą RBM, przeprowadź zbiorcze sprawdzanie możliwości. Sprawdzanie zbiorcze wskazuje, czy numer telefonu jest osiągalny, ale nie informuje, które funkcje są obsługiwane.

W przypadku każdego sprawdzenia możliwości zbiorczych musisz podać od 500 do 10 000 niepowtarzalnych numerów telefonów. Aby sprawdzić więcej numerów, wykonaj kilka weryfikacji. Możesz wykonywać do 600 połączeń na minutę. Użyj skryptu do sprawdzania możliwości zbiorczych, aby używać plików CSV jako formatu wejściowego. Sprawdzanie zbiorcze odczytuje dane z pamięci podręcznej funkcji, która jest aktualizowana przez klientów w sposób naturalny za pomocą RCS. Agenci nie żądają bezpośrednio informacji o możliwościach poszczególnych urządzeń. Z tego powodu wyniki mogą być nieaktualne.

Sprawdzanie możliwości wysyłania wiadomości zbiorczych zwraca listę numerów, do których Twój agent może wysyłać wiadomości w sieciach operatorów, w których jest uruchomiony, a także szacunkową łączną liczbę użytkowników, do których można dotrzeć we wszystkich sieciach. Zobacz Odpowiedź na zbiorcze sprawdzenie możliwości.

Szacowanie łącznej liczby użytkowników, do których można dotrzeć

Odpowiedzi na zbiorcze sprawdzanie obejmują listę numerów telefonów, które są natychmiast dostępne w sieciach operatorów obsługiwanych przez Twojego agenta (reachableUsers). Odpowiedzi zawierają też 2 wartości, które pomagają oszacować łączną liczbę użytkowników dostępnych we wszystkich sieciach.

Jak to działa

Gdy agent przeprowadza zbiorcze sprawdzanie możliwości, RBM losowo próbkuje około 75% tych numerów, aby sprawdzić wszystkich operatorów (informacje są podawane w totalRandomSampleUserCount). RBM zwraca też liczbę numerów osiągalnych w RBM z próbki losowej, niezależnie od stanu wdrożenia u operatora (reachableRandomSampleUserCount). Dzieląc reachableRandomSampleUserCount przez totalRandomSampleUserCount, możesz oszacować odsetek numerów, do których Twój agent mógłby dotrzeć, gdyby został wdrożony u wszystkich operatorów.

Jeśli na przykład w sprawdzaniu zbiorczym podasz 5000 numerów telefonów, a RBM losowo wybierze około 75% z nich, totalRandomSampleUserCount może wynosić 3750. Jeśli wartość reachableRandomSampleUserCount wynosi 3000, oznacza to, że 80% próbkowanych numerów było osiągalnych.

Uwzględnianie próbkowania losowego

Testowanie próbek losowych może prowadzić do różnic w wartościach procentowych. Aby uwzględnić wpływ próbkowania losowego, przeprowadź zbiorcze sprawdzanie możliwości z użyciem większej liczby numerów telefonów. Możesz też wielokrotnie przeprowadzać kontrole na tych samych partiach liczb, a następnie uśredniać wyniki, aby znormalizować zachowanie losowego próbkowania.

Wysyłanie zbiorczego sprawdzenia możliwości

Poniższy kod wysyła zbiorcze sprawdzenie możliwości i czeka na odpowiedź. Opcje formatowania i wartości znajdziesz w sekcji users.batchGet.

Numery telefonów muszą być w formacie E.164 (np. „+12223334444”), a lista musi zawierać od 500 do 10 000 unikalnych numerów telefonów.

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);
});
Ten kod korzysta z przykładowego agenta 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"));
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 sprawdzenie możliwości zbiorczych

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 użytkowników, do których można dotrzeć za pomocą operatorów, z którymi współpracuje agent.
totalRandomSampleUserCount Liczba losowej próbki określonych liczb. Zwykle około 75% określonych numerów.
reachableRandomSampleUserCount Liczba numerów z próbki losowej, do których można dotrzeć za pomocą RBM u wszystkich operatorów, niezależnie od tego, u których operatorów uruchomiono agenta. Ta liczba służy do podawania przybliżonego oszacowania łącznej liczby użytkowników, do których można dotrzeć za pomocą wszystkich operatorów.
reachableUsersMap Tylko dane wyjściowe. Mapa identyfikatorów operatorów z listą użytkowników, do których można dotrzeć za pomocą tego operatora. To pole jest wypełniane tylko w przypadku numerów telefonów w Stanach Zjednoczonych.

Narzędzie: skrypt do zbiorczego sprawdzania możliwości

Skrypt do zbiorczego sprawdzania możliwości (zaloguj się, aby pobrać) przeprowadza zbiorcze sprawdzanie możliwości, używając plików CSV jako formatów wejściowych i wyjściowych. Skrypt analizuje plik CSV z numerami MSISDN i za pomocą pakietu RBM SDK sprawdza możliwości każdego urządzenia z tej listy.

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

Wymagania wstępne

Zanim użyjesz narzędzia do przeprowadzenia zbiorczego sprawdzania możliwości, zdobądź te informacje:

  • Ścieżka do pliku CSV z numerami MSISDN, na których mają być przeprowadzane testy możliwości
  • Ścieżka do klucza konta usługi agenta na komputerze deweloperskim.

Dodatkowo na komputerze deweloperskim musisz mieć zainstalowane to oprogramowanie:

Skonfiguruj

Aby skonfigurować komputer deweloperski do sprawdzania możliwości zbiorczych, wykonaj te czynności:

  1. Pobierz i rozpakuj skrypt do sprawdzania możliwości w przypadku wielu urządzeń (Java). Skrypt do sprawdzania możliwości przesyłania zbiorczego (zaloguj się, aby pobrać).
  2. Wykonaj czynności opisane w pliku README.

Przeprowadzanie zbiorczego sprawdzania możliwości

Aby przeprowadzić sprawdzenie zbiorcze:

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

    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"

    Zastąp zmienne zidentyfikowanymi przez siebie wartościami.

    Zamień Tym Przykład
    AGENT_ID Identyfikator agenta RCS dla firm. welcome-bot
    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 przeznaczonych na sprawdzanie możliwości. 500
    START_INDEX Opcjonalnie: Wartość w pliku CSV, od której mają się rozpocząć sprawdzania. 5
    END_INDEX Opcjonalnie: Wartość w pliku CSV, po której należy zakończyć sprawdzanie. 500
  3. Po zakończeniu działania skryptu otwórz wyjściowy plik CSV, aby wyświetlić wyniki.