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ąć prezentowania interakcji, które są trudne lub niemożliwe do wykonania przez użytkownika.

Jeśli urządzenie użytkownika w ogóle 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 prośbę o sprawdzenie możliwości i czeka na odpowiedź. Informacje o formatowaniu i opcjach 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 jest fragmentem 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 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 sprawdzeniu możliwości platforma RBM zwraca listę funkcji obsługiwanych przez określone urządzenie w formacie JSON.

{
  "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 w tym czasie połączyło się z naszym serwerem RCS. Urządzenia online i obsługujące RCS łączą 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, a 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 usługa RCS jest wyłączona przez operatora lub producenta, albo jeśli karta SIM pozostanie nieużywana, usługa RCS nadal będzie próbować dostarczać wiadomości na poprzednio powiązane urządzenie przez maksymalnie 31 dni.

Oto przyczyny błędów 404:

  • Nie można skontaktować się z użytkownikiem za pomocą 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 połączeniu, o ile numer MSISDN połączył się z usługą RCS w ciągu ostatnich 31 dni.

Zbiorcze sprawdzanie możliwości

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

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

Zbiorcze sprawdzanie możliwości zwraca listę numerów, do których Twój agent może dotrzeć w sieciach operatorów, w których jest uruchomiony, a także szacunki łącznej liczby 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 sprawdzenie obejmują listę numerów telefonów do których można natychmiast dotrzeć w sieciach operatorów, w których uruchomiono agenta (reachableUsers), odpowiedzi zawierają też 2 wartości, które mogą pomóc w oszacowaniu łącznej liczby użytkowników, do których można dotrzeć we wszystkich sieciach.

Jak to działa

Gdy Twój agent przeprowadza zbiorcze sprawdzenie możliwości, RBM losowo próbkuje ok. 75% tych numerów, aby sprawdzić wszystkie sieci operatorów (informacje te są podawane w polu totalRandomSampleUserCount). RBM zwraca też liczbę numerów, do których można dotrzeć za pomocą RBM, z próbki losowej, niezależnie od stanu uruchomienia agenta w sieci operatora (reachableRandomSampleUserCount). Dzieląc reachableRandomSampleUserCount przez totalRandomSampleUserCount, możesz oszacować odsetek numerów, do których Twój agent mógłby dotrzeć, gdyby był uruchomiony we wszystkich sieciach operatorów.

Jeśli na przykład w zbiorczym sprawdzeniu możliwości określisz 5000 numerów telefonów, a RBM losowo spróbuje ok. 75% określonych numerów, wartość totalRandomSampleUserCount może wynosić 3750. Jeśli wartość reachableRandomSampleUserCount wynosi 3000, oznacza to, że do 80% próbek numerów można było dotrzeć.

Uwzględnianie próbkowania losowego

Testowanie próbek losowych może prowadzić do różnic w procentach. Aby uwzględnić efekty próbkowania losowego, przeprowadzaj zbiorcze sprawdzanie możliwości z większą liczbą numerów telefonów. Możesz też przeprowadzać sprawdzanie z tymi samymi partiami numerów kilka razy, a następnie uśrednić wyniki, aby znormalizować zachowanie próbkowania losowego.

Wysyłanie zbiorczego sprawdzenia możliwości

Poniższy kod wysyła zbiorcze sprawdzenie możliwości i czeka na odpowiedź. Informacje o formatowaniu i opcjach 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 zbiorcze sprawdzenie możliwości

Po przeprowadzeniu zbiorczego sprawdzenia 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ć w sieciach operatorów, w których uruchomiono agenta.
totalRandomSampleUserCount Liczba losowo wybranych numerów. Zwykle ok. 75% określonych numerów.
reachableRandomSampleUserCount Liczba numerów z próbki losowej, do których można dotrzeć za pomocą RBM we wszystkich sieciach operatorów, niezależnie od tego, w których sieciach agent jest uruchomiony. Ta liczba służy do podawania przybliżonego szacunku łącznej liczby użytkowników, do których można dotrzeć we wszystkich sieciach operatorów.
reachableUsersMap Tylko dane wyjściowe. Mapa identyfikatorów operatorów i listy użytkowników, do których można dotrzeć w danej sieci. To pole jest wypełniane tylko w przypadku numerów telefonów w Stanach Zjednoczonych.

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

The Skrypt zbiorczego sprawdzania możliwości (Zaloguj się, aby pobrać) przeprowadza zbiorcze sprawdzanie możliwości, używając plików CSV jako formatu wejściowego i wyjściowego. Skrypt analizuje plik CSV z numerami MSISDN i używa pakietu RBM SDK do sprawdzenia 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ąć ok. 1 tys. 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 sprawdzenia możliwości, pobierz te informacje:

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

Dodatkowo na komputerze deweloperskim musisz mieć zainstalowane te oprogramowanie:

Skonfiguruj

Aby skonfigurować komputer używany do programowania na potrzeby zbiorczego sprawdzenia możliwości:

  1. Pobierz i rozpakuj Skrypt zbiorczego sprawdzania możliwości (zaloguj się, aby pobrać).
  2. Postępuj zgodnie z instrukcjami w pliku README.

Przeprowadź zbiorcze sprawdzenie możliwości

Aby przeprowadzić zbiorcze sprawdzenie:

  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 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, które mają być przeznaczone na sprawdzanie 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 ma się zakończyć sprawdzanie. 500
  3. Gdy skrypt się zakończy, otwórz wyjściowy plik CSV, aby wyświetlić wyniki.