Чтобы проверить, поддерживает ли устройство пользователя RCS и способно ли оно взаимодействовать с агентом RBM, вы можете запросить возможности устройства. Определение того, какие функции поддерживает устройство, если таковые имеются, позволяет вашему агенту адаптировать разговор к возможностям устройства и избегать взаимодействия, которые пользователю сложно или невозможно выполнить.
Если устройство пользователя вообще не способно принимать сообщения RCS, вы можете общаться с пользователем через другие службы, например SMS/MMS.
Проверьте возможности устройства
Следующий код отправляет проверку возможностей и ожидает ответа. Параметры форматирования и значений см. в разделе getCapabilities
.
КУЛЬ
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); });
Ява
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");
Питон
# 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')
С#
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 возвращает список функций в формате JSON, которые поддерживает указанное устройство.
{ "features": [ "REVOCATION", "RICHCARD_STANDALONE", "RICHCARD_CAROUSEL", "ACTION_CREATE_CALENDAR_EVENT", "ACTION_DIAL", "ACTION_OPEN_URL", "ACTION_SHARE_LOCATION", "ACTION_VIEW_LOCATION", "ACTION_OPEN_URL_IN_WEBVIEW", "ACTION_COMPOSE", ] }
Запрос возвращает либо ответ, либо ошибку.
Успешный ответ возвращается только в том случае, если MSISDN (номер телефона) подключался к службе RCS в течение последних 24 часов.
Вот что вызывает ошибку 404:
Пользователь недоступен для RBM, например, если его устройство не поддерживает RCS.
У пользователя есть RCS, но ваш агент не запущен в его мобильной сети.
Автономная очередь
Сообщения помещаются в очередь на срок до 30 дней и доставляются, когда устройство снова подключается к сети. Для обеспечения доставки на устройстве должны быть обнаружены признаки активности RCS в течение 24 часов с момента отправки сообщения. Это означает, что даже если устройство отключится от сети на длительный период (до 30 дней), сообщения в очереди все равно будут доставлены при повторном подключении, если во время отправки было соблюдено 24-часовое окно активности.
Массовая проверка возможностей
Чтобы оценить количество пользователей, доступных для 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 -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); });
Ява
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"));
Питон
# 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'])
С#
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 возвращает ответ в формате 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 для проверки возможностей.
- Путь к ключу сервисной учетной записи вашего агента на вашей машине разработки.
Кроме того, на вашем компьютере разработки должно быть установлено следующее программное обеспечение:
- Apache Maven 3.3.9 или более поздней версии
- Ява 8
Настраивать
Чтобы настроить компьютер разработки для массовой проверки возможностей, выполните следующие действия:
- Загрузите и извлекитеСценарий массовой проверки возможностей ( войдите, чтобы скачать ).
- Следуйте инструкциям в README.
Запустите массовую проверку возможностей
Чтобы запустить массовую проверку, выполните следующие действия:
- В терминале перейдите в корневой каталог сценария.
Выполните следующие команды:
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 Business Messaging. welcome-bot
INPUT_FILE Путь к входному файлу CSV. input.csv
OUTPUT_FILE Путь к выходному файлу CSV. output.csv
NUM_OF_THREADS Количество потоков, выделяемых для проверки возможностей. 500
START_INDEX Необязательный. Значение в CSV-файле, по которому следует начать проверку. 5
END_INDEX Необязательный. Значение в CSV-файле, после которого завершаются проверки. 500
Когда сценарий завершится, откройте выходной CSV-файл, чтобы просмотреть результаты.