機能チェック

ユーザーのデバイスで 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 サンプル エージェントからの抜粋です。

Capability レスポンス

機能チェックを実行すると、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(電話番号)が過去 31 日以内に RCS サービスに接続されている場合にのみ、成功レスポンスが返されます。これは、ユーザーのデバイスがその期間内に Google の RCS サーバーにチェックインしたことを意味します。オンラインで RCS 対応のデバイスは、平均して 1 ~ 4 時間ごとにチェックインします。

ユーザーが SIM カードを別の RCS 対応デバイスに移動すると、以前のデバイスの関連付けが削除され、新しい関連付けが作成されて、RCS サービス内のデバイスの機能が更新されます。

携帯通信会社またはメーカーによって RCS が無効になっているデバイスに SIM カードが挿入されている場合、または SIM カードが使用されていない場合でも、RCS サービスは最大 31 日間、以前に関連付けられていたデバイスにメッセージを配信しようとします。

404 エラーの原因は次のとおりです。

  • ユーザーが RBM で連絡できない場合(デバイスが RCS をサポートしていない場合など)。

  • ユーザーは RCS を利用していますが、エージェントがモバイル ネットワークで起動していません。

オフライン キューイング

メッセージは最大 31 日間キューに登録され、デバイスがオンラインに戻ったときに配信されます。つまり、デバイスが長期間(最大 31 日間)オフラインになっても、MSISDN が過去 31 日以内に RCS サービスに接続していれば、再接続時にキューに登録されたメッセージは配信されます。

一括機能チェック

RBM でリーチ可能なユーザー数を推定するには、一括機能チェックを行います。一括チェックでは、電話番号に到達できるかどうかはわかりますが、電話番号がサポートしている機能はわかりません。

一括機能チェックごとに、500 ~ 10,000 個の一意の電話番号を指定する必要があります。複数の番号を確認するには、複数のチェックを実行します。1 分あたり最大 600 回の呼び出しを行うことができます。一括機能チェック スクリプトを使用して、CSV ファイルを入力形式として使用します。一括チェックは、RCS を使用してクライアントが有機的に更新する機能キャッシュから読み取られます。エージェントは各デバイスの機能を直接リクエストしません。そのため、結果が最新ではない可能性があります。

一括機能チェックでは、エージェントが起動される携帯通信会社で到達可能な番号のリストと、すべての携帯通信会社で到達可能なユーザーの総数の推定値が返されます。一括機能チェックのレスポンスをご覧ください。

リーチ可能なユーザーの合計数を推定する

一括チェックのレスポンスには、エージェントの起動した携帯通信会社(reachableUsers)で直ちに連絡可能な電話番号のリストが含まれますが、すべての携帯通信会社で連絡可能なユーザーの総数を推定するのに役立つ 2 つの値も含まれます。

仕組み

エージェントが一括機能チェックを実行すると、RBM はこれらの番号の約 75% をランダムにサンプリングして、すべての携帯通信会社をチェックします(totalRandomSampleUserCount で報告)。また、RBM は、携帯通信会社のリリース ステータス(reachableRandomSampleUserCount)に関係なく、ランダム サンプルから RBM に到達可能な番号の数を返します。reachableRandomSampleUserCounttotalRandomSampleUserCount で割ることで、エージェントがすべての携帯通信会社でリリースされた場合に到達できる番号の割合を推定できます。

たとえば、一括機能チェックで 5,000 件の電話番号を指定し、RBM が指定された番号の約 75% をランダムにサンプリングする場合、totalRandomSampleUserCount3750 になる可能性があります。reachableRandomSampleUserCount3000 の場合、サンプリングされた番号の 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 出力専用。携帯通信会社 ID と、その携帯通信会社で連絡可能なユーザーのリストのマッピング。このフィールドは、米国の電話番号の場合にのみ入力されます。

ツール: 一括機能チェック スクリプト

一括機能チェック スクリプト(ログインしてダウンロード) は、CSV ファイルを入力形式と出力形式として使用して、一括機能チェックを実行します。このスクリプトは、MSISDN の CSV ファイルを解析し、RBM SDK を使用して、リストに記載されているすべてのデバイスの機能をチェックします。

500 スレッドでスクリプトを実行する 2 個の CPU と 4 GB の RAM を搭載した仮想マシンでは、約 1,000 QPS に達する可能性がありますが、全体的な QPS は、使用するマシン、デバイスの国、エージェントのリージョン構成、使用する API エンドポイントによって異なります。

前提条件

ツールを使用して一括でケーパビリティ チェックを行う前に、次の情報を取得します。

  • 機能チェックを行う MSISDN を含む CSV ファイルへのパス
  • 開発マシン上のエージェントのサービス アカウント キーのパス

また、開発マシンに次のソフトウェアがインストールされている必要があります。

設定

一括機能チェック用に開発マシンをセットアップする手順は次のとおりです。

  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 エージェントの ID。 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 ファイルを開いて結果を表示します。