機能チェック

お客様のデバイスが 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"
  ]
}

リクエストはレスポンスまたはエラーを返します。

成功したレスポンスは、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)。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 に到達可能なランダム サンプルの電話番号の数。この数値は、すべての携帯通信会社でリーチ可能なユーザーの合計数を概算で提供するために使用されます。

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

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

2 つの CPU と 4 GB の RAM を搭載した仮想マシンで 500 個のスレッドでスクリプトを実行すると、約 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 ビジネス メッセージ エージェントの 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 ファイルを開いて結果を確認します。