功能检查

如需检查用户的设备是否启用了 RCS 以及是否能够与 RBM 代理通信,您可以请求设备的功能。通过确定设备支持的功能(如果有),代理可以根据设备功能定制对话,并避免用户难以或无法完成的互动。

如果用户的设备完全无法接收 RCS 信息,您可以通过短信等其他服务与该用户通信。

发送功能检查

以下代码会发送功能检查并等待响应。如需了解格式设置和值选项,请参阅 getCapabilities

cURL

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 示例代理

Java

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 示例代理

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": [
    "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 中报告)。无论运营商发布状态如何 (reachableRandomSampleUserCount),RBM 还会从随机样本中返回 RBM 可覆盖号码的计数。将 reachableRandomSampleUserCount 除以 totalRandomSampleUserCount,您可以估算代理在所有运营商已覆盖的号码中所占的百分比。

例如,如果您在批量功能检查中指定了 5,000 个电话号码,并且 RBM 从指定号码的 75% 左右随机采样,则 totalRandomSampleUserCount 可能为 3750。如果 reachableRandomSampleUserCount3000,则 80% 的抽样数字是可以到达的。

测试随机样本可能会导致百分比差异。考虑到随机采样的影响,请使用更多电话号码运行批量功能检查。您还可以多次对同一批数字执行检查,然后取平均值,从而对随机抽样行为进行归一化。

发送批量功能检查

以下代码会发送批量功能检查并等待响应。如需了解格式设置和值选项,请参阅 users.batchGet

电话号码必须采用 E.164 格式。例如“+12223334444”。

cURL

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 示例代理

Java

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 示例代理

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 访问的随机样本中数字的数量。

工具:批量功能检查脚本

降频功能检查脚本(登录以下载)使用 CSV 文件作为输入和输出格式执行批量功能检查。该脚本会解析 MSISDN 的 CSV 文件,并使用 RBM SDK 检查每个列出的设备的功能。

一个具有 2 个 CPU 和 4GB RAM 运行具有 500 个线程的脚本的虚拟机可以达到大约 1000 QPS,但总体 QPS 取决于使用的机器、设备所在的国家/地区、代理的区域配置以及使用的 API 端点。

前提条件

在使用该工具执行批量功能检查之前,请先获取以下信息:

  • 指向包含 MSISDN 且要执行功能检查的 CSV 文件的路径
  • 开发机器上的代理服务帐号密钥的路径

此外,您还需要在开发机器上安装以下软件:

设置

  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 文件查看结果。