メッセージを受信する

RBM エージェントは、Webhook を介してメッセージとイベントを受信します。ユーザーがエージェントにメッセージを送信すると、Google の RBM サービスは、構成済みの Webhook にメッセージを送信します。エージェントはメッセージをデコードして処理し、ユーザーにレスポンスを発行できます。

ユーザーがエージェントにメッセージを送信する

ユーザーは、RCS クライアントで許可されているテキスト、位置情報、ファイルを送信できます。エージェントは、ユーザーが送信する可能性のあるテキスト、位置情報、ファイル、およびそれらのメッセージによってトリガーされる可能性のあるエラー状態を処理する必要があります。

受信メッセージを処理する

エージェントがユーザーからのメッセージを処理して応答する方法は、ビジネス ロジックに大きく依存します。ただし、ユーザー メッセージへの返信手順は通常、一貫しています。

ステップ 1: ユーザーが送信したメッセージの種類を特定する

ユーザーは次の 4 種類のメッセージを送信できます。

  • テキスト メッセージは自由形式の回答です。
  • 候補メッセージには、ユーザーがタップした候補のアクションまたは候補の返信の postback データとテキストが含まれます。
  • Location メッセージには緯度と経度の値が含まれます。

  • File メッセージには、ファイルの URI と関連データが含まれます。

ステップ 2: メッセージ コンテンツを処理する

ユーザー メッセージの内容は、会話におけるエージェントのロジックと次のレスポンスを導く必要があります。

ユーザーの意図を識別する最も簡単な方法は、候補の返信または候補のアクションからのポストバック データを使用することです。提案に関連付けられたテキストに関係なく、ポストバック データはマシンが読み取れる形式です。

ユーザーがテキスト メッセージを送信すると、エージェントはレスポンスを解析してサポートされているキーワードを探したり、NLU(Dialogflow など)を使用してユーザーのメッセージを処理し、次の手順を特定したりします。

位置情報メッセージとファイル メッセージにはテキストやポストバック データが含まれないため、エージェントは返信する前に会話のコンテキストと最近のメッセージを考慮する必要があります。

エージェントがユーザーのメッセージにどのように応答すればよいかわからない場合は、エラー状態で応答し、ユーザーに追加情報を求める、別の方法で入力を求める、エージェントが応答方法を把握している返信候補やアクション候補を提示するなどして、会話を続けようとします。

ステップ 3: 操作のビジネス ロジックを実装する

エージェントがユーザーのメッセージに対する正しい応答を特定すると、インフラストラクチャから必要な情報を収集し、必要に応じて他のシステムと連携して、インタラクションのビジネス ロジックを満たします。

ステップ 4: ユーザーに返信する

エージェントがインタラクションのビジネス ロジックを実行すると、別のメッセージを送信し、ユーザーとの会話を続けます。

次のコードは、エージェントがメッセージを受信する方法を示しています。形式と値の情報については、UserMessage をご覧ください。

: 米国のトラフィックの場合、ユーザー メッセージと提案されたアクションのタップは、米国の課金モデルの分類の対象となります。エージェントがこれらのイベントを受信すると、課金対象のイベントタイプを決定する richMessageClassification フィールドが含まれます。分類の詳細については、米国の課金モデルのガイドをご覧ください。

エージェントがテキストを受信

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "text": "Hello, world!"
}

エージェントが提案からメッセージを受信する

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "suggestionResponse": {
    "postbackData": "suggestion_1",
    "text": "Suggestion #1"
  }
}

エージェントが位置情報を受信する

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "location": {
    "latitude": 37.422000,
    "longitude": -122.084056
  }
}

エージェントがファイルを受信した

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "userFile": {
    "thumbnail": {
      "mimeType": "image/jpeg",
      "fileSizeBytes": 1280,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c8",
      "fileName": "4_animated.jpeg"
    },
    "payload": {
      "mimeType": "image/gif",
      "fileSizeBytes": 127806,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9",
      "fileName": "4_animated.gif"
    }
  }
}

受信イベントを処理する

エージェントがユーザーに送信したメッセージが配信され、ユーザーがメッセージを読んだときに、エージェントに通知が届きます。

次のコードは、エージェントがメッセージを受信する方法を示しています。形式と値の情報については、UserEvent をご覧ください。

ユーザーにメッセージが配信された

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "DELIVERED"
}

ユーザーがメッセージを読んだ

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "READ"
}

ユーザーが入力中です

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "IS_TYPING",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "agentId": "AGENT_ID"
}