Проверка возможностей

Чтобы проверить, поддерживает ли устройство пользователя RCS и способно ли оно взаимодействовать с агентом RBM, вы можете запросить возможности устройства. Определение того, какие функции поддерживает устройство, если таковые имеются, позволяет вашему агенту адаптировать разговор к возможностям устройства и избегать взаимодействия, которые пользователю сложно или невозможно выполнить.

Если устройство пользователя вообще не способно получать сообщения RCS, вы можете общаться с пользователем через другие службы, например SMS.

Отправить проверку возможностей

Следующий код отправляет проверку возможностей и ожидает ответа. Параметры форматирования и значений см. в разделе getCapabilities .

КУЛЬ

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);
});
Этот код представляет собой отрывок из примера агента RBM .

Джава

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");
Этот код представляет собой отрывок из примера агента RBM .

Питон

# 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')
Этот код представляет собой отрывок из примера агента RBM .

С#

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");
Этот код представляет собой отрывок из примера агента RBM .

Реакция возможностей

После запуска проверки возможностей платформа RBM возвращает список функций в формате JSON, которые поддерживает указанное устройство.

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

Если вы отправляете проверку возможностей пользователю, с которым RBM не может связаться (например, если его устройство не поддерживает RCS), платформа RBM возвращает ошибку 404 .

Если вы отправляете проверку возможностей пользователю RCS в сети, где ваш агент еще не запущен, платформа RBM возвращает ошибку 403 .

Массовая проверка возможностей

Чтобы оценить количество пользователей, доступных для RBM, выполните массовую проверку возможностей. Массовые проверки показывают, доступен ли номер телефона, но не определяют, какие функции он поддерживает.

Вы можете указать до 10 000 номеров телефонов для одной массовой проверки возможностей. Чтобы проверить больше номеров, выполните несколько проверок. Используйте сценарий массовой проверки возможностей , чтобы использовать файлы CSV в качестве входного формата.

Массовые проверки возможностей имеют максимум 600 запросов в минуту (QPM).

Массовые проверки возможностей возвращают список номеров, с которыми ваш агент может связаться на своих текущих операторах связи, а также оценки общего количества доступных пользователей по всем операторам связи. См. ответ на массовую проверку возможностей .

Оцените общее количество доступных пользователей

Хотя ответы на массовые проверки включают в себя список телефонных номеров, которые сразу доступны для операторов связи, запущенных вашим агентом ( reachableUsers ), ответы также включают два значения, которые могут помочь вам оценить общее количество доступных пользователей для всех операторов связи.

Когда ваш агент выполняет массовую проверку возможностей более чем 500 телефонных номеров, RBM случайным образом выбирает ~75% этих номеров для проверки всех операторов связи (сообщается в totalRandomSampleUserCount ). RBM также возвращает количество доступных для RBM чисел из случайной выборки, независимо от статуса запуска оператора связи ( reachableRandomSampleUserCount ). Разделив reachableRandomSampleUserCount на totalRandomSampleUserCount , вы можете оценить процент номеров, которые ваш агент мог бы охватить, если бы он был запущен на всех операторах связи.

Например, если вы укажете 5000 телефонных номеров при массовой проверке возможностей, а RBM случайным образом выберет ~75% указанных номеров, totalRandomSampleUserCount может быть 3750 . Если reachableRandomSampleUserCount равен 3000 , то 80% выбранных чисел были достижимы.

Тестирование случайных выборок может привести к процентным различиям. Чтобы учесть влияние случайной выборки, запустите массовую проверку возможностей с большим количеством телефонных номеров. Вы также можете выполнять проверки с одними и теми же наборами чисел несколько раз, а затем усреднять результаты, чтобы нормализовать поведение случайной выборки.

Отправить массовую проверку возможностей

Следующий код отправляет массовую проверку возможностей и ожидает ответа. Параметры форматирования и значений см. в разделе users.batchGet .

Номера телефонов должны быть в формате E.164. Например, «+12223334444».

КУЛЬ

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);
});
Этот код использует образец агента RBM .

Джава

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"));
Этот код использует образец агента RBM .

Питон

# 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'])
Этот код использует образец агента RBM .

С#

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"}));
Этот код использует образец агента RBM .

Ответ на массовую проверку возможностей

После выполнения массовой проверки возможностей RBM возвращает ответ в формате JSON.

{
  "reachableUsers": [
    "PHONE_NUMBER"
  ],
  "totalRandomSampleUserCount": "COUNT_OF_SAMPLE",
  "reachableRandomSampleUserCount": "REACHABLE_FROM_SAMPLE"
}
Поле Описание
reachableUsers Список доступных пользователей на текущих операторах связи агента.
totalRandomSampleUserCount Подсчет случайной выборки указанных чисел. Обычно ~75% от указанных чисел.
reachableRandomSampleUserCount Количество номеров из случайной выборки, доступных для RBM для всех операторов связи, независимо от операторов связи, запущенных агентом в данный момент.

Инструмент: сценарий массовой проверки возможностей

Сценарий массовой проверки возможностейСценарий проверки возможностей Buck ( войдите, чтобы загрузить )выполняет массовую проверку возможностей, используя файлы CSV в качестве входных и выходных форматов. Сценарий анализирует CSV-файл MSISDN и использует RBM SDK для проверки возможностей каждого перечисленного устройства.

Виртуальная машина с 2 ЦП и 4 ГБ ОЗУ, на которой выполняется сценарий с 500 потоками, может достигать примерно 1 000 запросов в секунду, но общее количество запросов в секунду зависит от используемой машины, страны устройств, региональной конфигурации вашего агента и используемой конечной точки API.

Предварительные условия

Прежде чем использовать этот инструмент для массовой проверки возможностей, получите следующее:

  • Путь к CSV-файлу с MSISDN для проверки возможностей.
  • Путь к ключу сервисной учетной записи вашего агента на вашей машине разработки.

Кроме того, на вашем компьютере разработки должно быть установлено следующее программное обеспечение:

Настраивать

  1. На компьютере разработки загрузите и распакуйте сценарий массовой проверки возможностейСценарий массовой проверки возможностей ( войдите, чтобы загрузить ).
  2. Перейдите в корневой каталог сценария.
  3. Переименуйте ключ учетной записи службы в «rbm-agent-service-account-credentials.json» и переместите ключ учетной записи службы в каталог «src/main/resources».

Запустите массовую проверку

  1. В терминале перейдите в корневой каталог сценария.
  2. Выполните следующие команды:

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

    Замените переменные значениями, которые вы определили.

    Заменять С Пример
    INPUT_FILE Путь к входному файлу CSV. input.csv
    OUTPUT_FILE Путь к выходному файлу CSV. output.csv
    NUM_OF_THREADS Количество потоков, выделяемых для проверки возможностей. 500
    START_INDEX Необязательный. Значение в CSV-файле, по которому следует начать проверку. 5
    END_INDEX Необязательный. Значение в CSV-файле, после которого завершаются проверки. 500
  3. Когда сценарий завершится, откройте выходной CSV-файл, чтобы просмотреть результаты.