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

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

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

Проверьте возможности устройства

Следующий код отправляет проверку возможностей и ожидает ответа. Информацию о форматировании и параметрах значений см. в 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);
});
Этот код представляет собой фрагмент примера агента 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");
Этот код представляет собой фрагмент примера агента 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')
Этот код представляет собой фрагмент примера агента 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");
Этот код представляет собой фрагмент примера агента RBM .

Реагирование на возможности

После выполнения проверки возможностей платформа RBM возвращает список функций , поддерживаемых указанным устройством, в формате 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"
  ]
}

Запрос возвращает либо ответ, либо ошибку.

Успешный ответ возвращается только в том случае, если MSISDN (номер телефона) подключался к службе RCS в течение последних 31 дня. Это означает, что устройство пользователя подключалось к нашему RCS-серверу в течение этого периода времени. Устройства, подключенные к сети и поддерживающие RCS, подключаются в среднем каждые 1-4 часа.

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

Если SIM-карта установлена ​​в устройство, в котором функция RCS отключена оператором связи или производителем, или если SIM-карта остается неиспользованной, служба RCS все равно будет пытаться доставлять сообщения на ранее подключенное устройство в течение до 31 дня.

Вот что вызывает ошибки 404:

  • Пользователь недоступен через RBM — например, если его устройство не поддерживает RCS.

  • У пользователя есть RCS, но ваш агент не запущен в его мобильной сети.

Офлайн-очередь

Сообщения ставятся в очередь на срок до 31 дня и доставляются, когда устройство снова подключается к сети. Это означает, что даже если устройство отключается от сети на длительный период (до 31 дня), сообщения из очереди будут доставлены при повторном подключении, при условии, что MSISDN подключался к службе RCS в течение последних 31 дня.

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

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

Для каждой массовой проверки возможностей необходимо указать от 500 до 10 000 уникальных телефонных номеров. Для проверки большего количества номеров выполните несколько проверок. Вы можете совершать до 600 звонков в минуту. Используйте скрипт массовой проверки возможностей , чтобы использовать CSV-файлы в качестве входного формата. Массовые проверки считывают данные из кэша возможностей, который обновляется клиентами автоматически с помощью RCS. Агенты не запрашивают возможности каждого устройства напрямую. По этой причине результаты могут быть неактуальными.

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

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

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

Как это работает

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

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

Учитывайте случайную выборку.

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

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

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

Номера телефонов должны быть в формате E.164 (например, "+12223334444"), а список должен содержать от 500 до 10 000 уникальных телефонных номеров.

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);
});
В этом коде используется пример агента 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"));
В этом коде используется пример агента 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'])
В этом коде используется пример агента 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"}));
В этом коде используется пример агента RBM .

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

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

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

Инструмент: Скрипт для массовой проверки возможностей

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

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

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

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

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

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

Настраивать

Для настройки вашей машины разработки для проверки возможностей системы в пакетном режиме выполните следующие действия:

  1. Скачайте и распакуйтеСкрипт для массовой проверки возможностей ( для загрузки войдите в систему ).
  2. Следуйте инструкциям в файле README.

Выполните проверку возможностей пакета данных.

Для выполнения массовой проверки выполните следующие действия:

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

    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"

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

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