イベントは、エージェントが送受信できる通知です。イベントには次の 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 サンプル エージェントからの抜粋です。