エージェントは RBM プラットフォームからウェブフック イベントを受信し、ユーザーの操作とプラットフォーム レベルの更新の両方を通知します。
これらのイベントは、発生元によって分類されます。
- ユーザー イベント: ユーザーのデバイスからエージェントに送信され、エージェントとのやり取りを示す通知。
- プラットフォーム イベント: RBM プラットフォームから送信される、エージェントの起動状態の変更とメッセージの有効期限に関する通知。
エージェントがユーザーのデバイスに送信するステータス イベントの詳細については、イベントを送信するをご覧ください。
テキスト、ファイル、位置情報などのユーザー メッセージを処理する方法について詳しくは、メッセージを受信するをご覧ください。
ユーザー イベント
ユーザー イベントは、メッセージのステータスやサブスクリプションの変更(ユーザーが Google メッセージで登録解除または再登録したなど)を報告するユーザーのデバイスからの通知です。
書式設定と値のオプションについては、UserEvent リファレンスをご覧ください。
ユーザーがエージェント メッセージを受信する
このイベントは、メッセージがユーザーのデバイスに正常に配信されたことを示します。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "DELIVERED",
"eventId": "EVENT_ID",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID"
}ユーザーがエージェントのメッセージを読む
このイベントは、メッセージが開かれたか、確認されたことを示します。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "READ",
"eventId": "EVENT_ID",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID"
}ユーザーが入力を開始する
このイベントは、ユーザーが返信を入力していることを示します。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "IS_TYPING",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}ユーザーが提案されたアクションをタップする
ユーザーが提案されたアクションをタップすると、エージェントはアクションのポストバック データを含むイベントを受け取ります。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID",
"suggestionResponse": {
"postbackData": "postback_1234"
}
}ユーザーが会話の登録を解除する
このイベントは、ユーザーがエージェントとエージェントが代表するビジネスからのプロモーションなどの不要なメッセージの受信を登録解除したことを示します。ユーザーは、Google メッセージで RBM 会話の登録を解除することで、このイベントをトリガーします。
JSON ペイロードの例を次に示します。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "UNSUBSCRIBE",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}購読解除の仕組み
- チャット メニューには、常に [登録解除] オプションが表示されます。プロモーション エージェントとマルチユース エージェントの場合、このオプションは、未読メッセージが一定数を超えるとチャットに直接表示されます(具体的なルールは国によって異なります)。
[登録解除] を選択すると、2 つのアクションが同時にトリガーされます。Google メッセージは国固有のキーワード(「STOP」など)をエージェントに送信し、RBM プラットフォームは
UNSUBSCRIBEイベントを Webhook に送信します。キーワードは、ユーザーの電話番号の 2 桁の国コードによって決まります。次の表に、サポートされている各国のキーワードを示します。
国(国コード) 登録解除キーワード 米国(US)、インド(IN)、英国(GB)、ドイツ(DE)、オランダ(NL) 停止 スペイン(ES)、メキシコ(MX) BAJA フランス(FR) STOP ブラジル(BR) parar ユーザーが登録を解除した後、会話は受信トレイに残ります。ただし、スパムとして報告された場合は、[スパム / ブロック中] フォルダに移動します。
ポリシーとビジネスルールの違反を特定するため、Google はユーザーが登録を解除した後のメッセージ パターンをモニタリングします。
ビジネスルール
- この会話を管理する RBM パートナーは、ユーザーの登録解除リクエストに対応する責任があります。
- メッセージ スレッド内で登録解除を実行できない場合は、ユーザーが購読設定を管理できるウェブサイトまたはアプリへの直接リンクを記載した確認メッセージを直ちに送信する必要があります。
- ユーザーが登録を解除すると、不要なメッセージの送信は禁止されます。
- 重要なメッセージは引き続き許可されます。たとえば、次のようなメッセージです。
- 認証(ワンタイム パスワード(OTP)など)
- ユーザーがリクエストして同意した特定のサービスに関する通知
- ユーザーの登録解除リクエストの確認。コミュニケーション設定をさらに管理するための情報
例
ユースケースが複数回使用の航空会社エージェントの登録をユーザーが解除した場合、マーケティング メッセージの送信を停止する必要があります。ただし、ユーザーが特定のフライトの更新情報を受け取ることに明示的に同意している場合は、フライトの更新情報を送信できます。
登録解除の理由
ユーザーがエージェントの登録を解除する際に、次のオプションから理由を選択できます。
- スパム
- 登録していない
- メールの数が多すぎる
- 興味がなくなった
- その他
パートナー様がユーザーの登録解除の理由を把握できるよう、登録解除の理由は分析の概要に表示されます。
ユーザーが会話に再登録する
このイベントは、ユーザーがエージェントからのメッセージ(プロモーションなどの不要なコンテンツを含む)を再び受信することを希望していることを示します。ユーザーは、Google メッセージで以前に登録を解除した会話に再登録することで、このイベントをトリガーできます。
JSON ペイロードの例を次に示します。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "SUBSCRIBE",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}再度定期購入の仕組み
- チャット メニューとチャット内のリンクの両方から利用できる [登録] オプションを使用すると、ユーザーは登録を解除した会話に再度登録できます。
[登録] を選択すると、2 つのアクションが同時にトリガーされます。Google メッセージは国固有のキーワード(「START」など)をエージェントに送信し、RBM プラットフォームは SUBSCRIBE イベントを Webhook に送信します。特定のキーワードは、ユーザーの電話番号の 2 文字の国コードによって決まります。次の表に、サポートされている各国のキーワードを示します。
国(国コード) Subscribe キーワード 米国(US)、インド(IN)、英国(GB)、ドイツ(DE)、オランダ(NL) 開始 スペイン(ES)、メキシコ(MX) ALTA フランス(FR) Démarrer ブラジル(BR) começar
ビジネスルール
- この会話を管理する RBM パートナーは、ユーザーの再登録リクエストに対応する責任があります。
- 再登録は、プロモーションなどの重要でないコンテンツを含む、すべてのメッセージ タイプに適用されます。
- ユーザーが登録解除後にビジネスにメッセージを送信した場合、これは再登録リクエストと見なされます。
- ユーザーがメッセージ チャネル以外で再登録した場合(ウェブサイトなど)、RBM パートナーとしてユーザーのステータスを更新し、それに応じてメッセージの送信を再開するのは、パートナーの責任となります。
プラットフォーム イベント
RBM プラットフォームは、プラットフォーム イベントを送信して、エージェントの起動状態またはメッセージの有効期限の変更をエージェントに通知します。
エージェントの起動ステータスが変更されました
RBM プラットフォームは、エージェントのリリース ステータスの変更ごとに AgentLaunchEvent を送信します。たとえば、エージェントの状態が PENDING から LAUNCHED に変わった場合などです。イベントは Pub/Sub メッセージとして配信されます。他のイベントと区別するには、message.attributes.type パスで値 agent_launch_event を確認します。
Webhook の構成
パートナー レベルまたはエージェント レベルの Webhook を使用して、これらの通知を受け取ることができます。
前提条件
- RBM メッセージング用に Webhook を構成します(ユーザー メッセージとユーザー イベントを受信するための要件です)。
- ユーザー イベントとエージェントの起動状態イベントを区別するには、
message.attributes.typeパスで値agent_launch_eventを確認します。
イベント ペイロードの構造
AgentLaunchEvent は Pub/Sub メッセージとして配信されます。次の例をご覧ください。
{
"message": {
"attributes": {
"business_id": "rbm-chatbot-id@rbm.goog",
"event_type": "REJECTED",
"product": "RBM",
"project_number": "3338881441851",
"type": "agent_launch_event"
},
"data": "....BASE64-encoded-JSON-with-notification...",
"messageId": "14150481888479752",
"message_id": "14150481888479752",
"publishTime": "2025-03-05T18:50:21.88Z",
"publish_time": "2025-03-05T18:50:21.88Z"
},
"subscription": "projects/rbm-partner-gcp/subscriptions/rbm-sub"
}
イベント ペイロードの AgentLaunchEvent.LaunchState フィールドは、エージェントの新しい起動状態を示します。可能な値は次のとおりです。
| 値 | エージェントの起動状態 | 詳細 |
|---|---|---|
PENDING |
保留 | リクエストは審査のため運送業者に送信されました。 |
LAUNCHED |
リリース済み | 特定の携帯通信会社でメッセージが許可されている。 |
REJECTED |
特定の携帯通信会社で拒否された | 不承認の理由はコメントに記載されています。 |
SUSPENDED |
特定の携帯通信会社で停止されている | 停止の理由はコメントで指定されています。 |
UNLAUNCHED |
未リリース | すべての携帯通信会社でリリースが停止されたエージェントは編集できます。 |
データ フィールドには、起動状態の詳細を含む Base64 エンコードの JSON オブジェクトが含まれます。デコードされた JSON の例を次に示します。
{
"eventId": "rbm-chatbot-id/0a7ed168-676e-4a56-b422-b23434",
"agentId": "rbm-chatbot-id@rbm.goog",
"botDisplayName": "RBM Welcome Bot 7 - RBM Chatbot name",
"brandId": "bd38fbff-392a-437b-a6f2-7f2e43745b56",
"brandDisplayName": "Chatbots brand",
"regionId": "/v1/regions/fi-rcs",
"oldLaunchState": "PENDING",
"newLaunchState": "REJECTED",
"actingParty": "rbm-support@google.com",
"comment": "Carrier has rejected the launch: policy violation",
"sendTime": "2025-03-05T18:50:19.386436Z"
}
携帯通信会社が開始したリリース状態の変更
通常、審査と実施のプロセスで携帯通信会社が処理する、許可される移行は次のとおりです。
| 以前のリリース状態 | 新規リリース状態 | トリガー アクション |
|---|---|---|
PENDING |
LAUNCHED |
リリース リクエストを承認します。 |
PENDING |
REJECTED |
リリース リクエストを拒否します。 |
LAUNCHED |
SUSPENDED |
強制措置/管理上の理由で一時停止します。 |
SUSPENDED |
LAUNCHED |
エージェントをアクティブなステータスに復元します。 |
SUSPENDED |
UNLAUNCHED |
エージェントを終了します。 |
パートナー様主導のリリース状態の変更
パートナーが通常処理する移行は次のとおりです。
| 以前のリリース状態 | 新規リリース状態 | トリガー アクション |
|---|---|---|
UNSPECIFIED |
PENDING |
審査のために送信します。 |
PENDING |
UNLAUNCHED |
保留中の起動リクエストをキャンセルします。 |
UNLAUNCHED |
PENDING |
審査のために送信します。 |
REJECTED |
PENDING |
審査のため再送信します。 |
メッセージの有効期限が切れました。取り消しは成功しました
このイベントは、メッセージの有効期間(TTL)が終了し、メッセージが正常に取り消されたことを示します。これは、フォールバック メッセージ戦略の適切なトリガーとなります。
書式設定と値のオプションについては、ServerEvent リファレンスをご覧ください。
{ "phoneNumber": "[phone number]" , "messageId": "[RCS message ID]", "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKED", "eventId": "[unique ID]", "sendTime": "[time stamp]" }
メッセージの有効期限が切れました。取り消しに失敗しました
このイベントは、メッセージの TTL が期限切れになったが、正常に取り消されなかったことを示します。
書式設定と値のオプションについては、ServerEvent リファレンスをご覧ください。
{ "phoneNumber": "[phone number]", "messageId": "[RCS message ID]", "agentId": "[bot ID]", "eventType": "TTL_EXPIRATION_REVOKE_FAILED", "eventId": "[unique ID]", "sendTime": "[time stamp]" }
メッセージの配信は保証されません。
- メッセージが配信されると、Webhook で
DELIVEREDイベントが受信されます。 - メッセージが配信されなかった場合は、取り消し API を使用して取り消しリクエストを送信します。
OTP や不正行為アラートなど、時間制限のあるメッセージの場合は、ユーザーに重複したメッセージが届くことになっても、SMS などの別のチャネルでメッセージを送信することをおすすめします。