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