メッセージの受信

RBM エージェントは、 Webhook。 ユーザーがエージェントにメッセージを送信すると、Google の RBM サービスは 構成した Webhook に送信します。エージェントはメッセージをデコードして ユーザーに回答を発行します

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

ユーザーは、RCS クライアントで許可されている任意のテキスト、場所、ファイルを送信できます。 エージェントは、ユーザーから送信された可能性のあるテキスト、場所、ファイルを そのメッセージによってトリガーされる可能性があるエラー状態を確認できます。

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

エージェントがユーザーからのメッセージをどのように処理して応答するかは、 必要があります。ただし、一般に、ユーザーに対応する手順は、 メッセージに一貫性を持たせることができます

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

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

  • テキスト メッセージは自由形式のレスポンスです。
  • 提案メッセージには、ポストバック データとテキストの ユーザーがタップした操作の候補または返信文の候補。
  • 位置情報メッセージには、緯度と経度の値が含まれます。

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

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

ユーザー メッセージの内容は、エージェントのロジックと次のレスポンスの指針となる必要がある 確認することもできます。

ユーザーの意図を特定する最も簡単な方法は、 推奨される返信や操作の候補が表示されます。画像に関連付けられたテキストは ポストバック データは機械で読み取り可能です。

ユーザーがテキスト メッセージを送信すると、エージェントによってレスポンスが解析され、 使用するか、NLU( Dialogflow など)を使用してユーザーのメッセージを処理し、 進むべき道を特定できます。

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

エージェントがユーザーのメッセージにどう返答すればよいかわからない場合は、 エラー状態を返して会話の継続を試行します。 プロンプトの入力を求めて、ユーザーに追加情報を求めます。 返信文の候補や操作の候補を表示することで、 エージェントが回答方法を知っています。

ステップ 3: インタラクションのビジネス ロジックを実現する

エージェントは、ユーザーのメッセージに対する正しいレスポンスを特定すると、 インフラストラクチャから必要な情報を収集して、 必要に応じて他のシステムとも連携できるようにし、 です。

ステップ 4: お客様に返信する

やり取りのビジネス ロジックが完了すると、エージェントは 別のメッセージが転送され、ユーザーとの会話が続行されます。

次のコードは、エージェントがメッセージを受信する方法を示しています。書式設定と 詳しくは、 UserMessage

エージェントがテキスト メッセージを受信する

{
  "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"
}