エージェントは 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 などの代替チャネルでメッセージを送信することをおすすめします。