エージェントは RBM プラットフォームから Webhook イベントを受信し、ユーザー操作とプラットフォーム レベルの更新の両方を通知します。
これらのイベントは、発生元によって分類されます。
- ユーザー イベント: ユーザーのデバイスから エージェントに送信される通知で、エージェントとのやり取りを示します。
- プラットフォーム イベント: エージェントの起動状態の変更とメッセージの有効期限切れに関する通知で、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) STOP スペイン(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 桁の国コードによって決まります。次の表に、サポートされている各国のキーワードを示します。
国(国コード) 登録キーワード 米国(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 を使用します。
前提条件
- Webhook を構成して RBM メッセージングを有効にします( ユーザー メッセージとユーザー イベントを受信するための要件です)。
- ユーザー イベントとエージェントの起動状態イベントを区別するには、
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 |
エージェントを終了します。 |
REJECTED |
LAUNCHED |
以前に拒否されたリリース リクエストを承認します。 |
パートナーが開始した起動状態の変更
これらは、パートナーが通常処理する、許可された移行です。
| 以前の起動状態 | 新しい起動状態 | トリガー アクション |
|---|---|---|
UNSPECIFIED |
PENDING |
審査のため送信します。 |
PENDING |
UNLAUNCHED |
保留中のリリース リクエストをキャンセルします。 |
UNLAUNCHED |
PENDING |
審査のため送信します。 |
REJECTED |
PENDING |
審査のため再送信します。 |
SUSPENDED |
PENDING |
審査のため再送信します。 |
メッセージの有効期限が切れ、取り消しに成功した
このイベントは、メッセージの有効期間(TTL)が切れ、メッセージが正常に取り消されたことを示します。これは、フォールバック メッセージング戦略の適切なトリガーとなります。
完全な形式と値のオプションについては、ServerEvent のリファレンスをご覧ください。
{
"phoneNumber": "PHONE_NUMBER",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID",
"eventType": "TTL_EXPIRATION_REVOKED",
"eventId": "EVENT_ID",
"sendTime": "TIMESTAMP"
}メッセージの有効期限が切れ、取り消しに失敗した
このイベントは、メッセージの TTL が切れたものの、正常に取り消されなかったことを示します。
完全な形式と値のオプションについては、ServerEvent のリファレンスをご覧ください。
{
"phoneNumber": "PHONE_NUMBER",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID",
"eventType": "TTL_EXPIRATION_REVOKE_FAILED",
"eventId": "EVENT_ID",
"sendTime": "TIMESTAMP"
}メッセージの配信は保証されません。
- メッセージが配信された場合は、Webhook で
DELIVEREDイベントを受信します。 - メッセージが配信されなかった場合は、取り消し API を使用して 取り消しリクエストを送信します。
OTP や不正行為アラートなど、メッセージが時間的制約を受ける場合は、ユーザーに重複したメッセージが届くとしても、SMS などの代替チャネルでメッセージを送信することをおすすめします。