機能チェック

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

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

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

404 エラーが発生する原因は次のとおりです。

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

  • ユーザーは RCS を使用しているが、エージェントがモバイル ネットワークで起動していない。

オフライン キューイング

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

一括機能チェック

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

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

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

到達可能なユーザーの総数を推定する

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

仕組み

エージェントが一括機能チェックを実行すると、RBM はこれらの番号の約 75% をランダムにサンプリングして、すべての携帯通信会社を確認します(totalRandomSampleUserCount で報告されます)。RBM は、携帯通信会社の起動ステータスに関係なく、ランダム サンプルから RBM で到達可能な番号の数も返します(reachableRandomSampleUserCount)。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 から、その携帯通信会社で到達可能なユーザーのリストへのマッピング。このフィールドは、米国の電話番号の場合にのみ入力されます。

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

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

500 スレッドでスクリプトを実行する 2 個の CPU と 4 GB の RAM の仮想マシンは、約 1K 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 ファイルを開いて結果を確認します。