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