イベント

イベントは、エージェントが送受信できる通知です。イベントには次の 3 つのタイプがあります。

サーバーで生成されたイベント

RBM プラットフォームは、メッセージの有効期限などのサーバーレベルの更新をエージェントに通知するイベントを送信します。

形式と値のオプションについては、ServerEvent をご覧ください。

メッセージの有効期限が切れました。取り消しが完了しました

メッセージの有効期限が切れ、正常に取り消されました。このイベントは、フォールバック メッセージング戦略のトリガーに適しています。

{
  "phoneNumber": [phone number of recipient that the original message was intended for] ,
  "messageId": [RCS message ID of the message],
  "agentId": [bot ID],
  "eventType": "TTL_EXPIRATION_REVOKED",
  "eventId": [unique ID generated by the RBM platform],
  "sendTime": [time at which the server sent this event]
}

メッセージの有効期限が切れています。取り消しが失敗しました

メッセージは期限切れですが、取り消されていません。

{
  "phoneNumber": [phone number of recipient that the original message was intended for] ,
  "messageId": [RCS message ID of the message],
  "agentId": [bot ID],
  "eventType": "TTL_EXPIRATION_REVOKE_FAILED",
  "eventId": [unique ID generated by the RBM platform],
  "sendTime": [time at which the server sent this event]
}

メッセージの配信は保証されません。

  • メッセージが配信されると、Webhook に DELIVERED イベントが届きます。
  • メッセージが配信されなかった場合は、revoke API を使用して取り消しリクエストを送信します。

OTP や不正使用アラートなど、メッセージの送信に時間的制約がある場合は、ユーザーに重複するメッセージが送信される場合でも、SMS などの代替チャネルを使用してメッセージを送信することをおすすめします。

ユーザー作成イベント

ユーザー メッセージや機能チェックと同様に、エージェントはユーザー イベントを JSON として受け取ります。

書式設定と値のオプションについては、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",
  "text": "Hi",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID"
}

ユーザーがファイルを送信する

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "userFile": {
    "payload": {
      "mimeType": "image/gif",
      "fileSizeBytes": 127806,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9",
      "fileName": "4_animated.gif"
    }
  },
  "eventId": "EVENT_ID",,
  "agentId": "AGENT_ID"
}

定型返信文をタップ

ユーザーが提案された返信をタップすると、エージェントは返信のポストバック データとテキストを含むイベントを受け取ります。

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID",
  "suggestionResponse": {
    "postbackData": "postback_1234",
    "text": "Hello there!"
  }
}

ユーザーが候補のアクションをタップする

ユーザーが候補のアクションをタップすると、エージェントはアクションのポストバック データを含むイベントを受け取ります。

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID",
  "suggestionResponse": {
    "postbackData": "postback_1234"
  }
}

エージェントが生成したイベント

エージェントはイベントを送信して人間の操作をシミュレートし、エージェントがメッセージに対応していることをユーザーに示します。ユーザーには、会話内の通知としてイベントが表示されます。

書式設定と値のオプションについては、phones.agentEvents をご覧ください。

エージェントが READ イベントを送信する

ユーザーには、このイベントは特定のメッセージの既読として表示されます。RBM プラットフォームがメッセージを配信し、エージェントが処理中であることをユーザーに知らせます。

次のコードは、一致する messageId を含むメッセージの READ イベントを送信します。

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_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`" \
-d "{
  'eventType': 'READ',
  'messageId': 'MESSAGE_ID'
}"

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Send the device an event to indicate that messageId has been read
rbmApiHelper.sendReadMessage('+12223334444', messageId);
このコードは、RBM サンプル エージェントからの抜粋です。

Java

import com.google.rbm.RbmApiHelper;
…

// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper();

// Send the device an event to indicate that messageId has been read
rbmApiHelper.sendReadMessage(messageId, "+12223334444");
このコードは、RBM サンプル エージェントからの抜粋です。

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service

# Send the device an event to indicate that message_id was read
rbm_service.send_read_event('+12223334444', message_id)
このコードは、RBM サンプル エージェントからの抜粋です。

C#

using RCSBusinessMessaging;
…

// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Send the device an event to indicate that messageId has been read
rbmApiHelper.SendReadMessage(messageId, "+12223334444");
このコードは、RBM サンプル エージェントからの抜粋です。

エージェントが IS_TYPING イベントを送信する

このイベントは入力インジケーターとしてユーザーに表示され、エージェントがメッセージを作成中であることをユーザーに通知します。タイピング インジケーターは、しばらくすると(約 20 秒後)期限切れになります。また、ユーザーのデバイスがエージェントから新しいメッセージを受信すると、期限切れになります。エージェントは複数の IS_TYPING イベントを送信して、入力インジケーターの有効期限タイマーをリセットできます。

次のコードは IS_TYPING イベントを送信します。

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_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`" \
-d "{
  'eventType': 'IS_TYPING',
}"

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Send the device an event to indicate that the agent is typing
rbmApiHelper.sendIsTypingMessage('+12223334444', function() {
    console.log('Typing event sent!');
});
このコードは RBM サンプル エージェントからの抜粋です。

Java

import com.google.rbm.RbmApiHelper;
…

// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper();

// Send the device an event to indicate that the agent is typing
rbmApiHelper.sendIsTypingMessage("+12223334444");
このコードは、RBM サンプル エージェントからの抜粋です。

Python

# Reference to RBM Python client helper and messaging object structure
from rcs_business_messaging import rbm_service

# Send the device an event to indicate that the agent is typing
rbm_service.send_is_typing_event('+12223334444')
このコードは、RBM サンプル エージェントからの抜粋です。

C#

using RCSBusinessMessaging;
…

// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                                 projectId);

// Send the device an event to indicate that the agent is typing
rbmApiHelper.SendIsTypingMessage(messageId, "+12223334444");
このコードは、RBM サンプル エージェントからの抜粋です。