Business への登録後 メッセージ、 テスト エージェントに代わってメッセージを受信できます。メッセージを受信できます 100% 増加した後に create、 確認する リリース ブランドのエージェントです。
自分が管理しているエージェントに顧客からメッセージが届くと、ビジネス メッセージが Webhook に JSON ペイロードを送信します。このペイロードには、さまざまな ID、メッセージ コンテンツ、 位置情報が含まれます。
Business Communications Developer Console のログを使用する ページ を使用して、メッセージ配信の問題をデバッグできます。
着信メッセージを処理する
エージェントがユーザーからのメッセージをどのように処理して応答するかは、 必要があります。ただし、一般に、ユーザーに対応する手順は、 メッセージに一貫性を持たせることができます
メッセージの受信確認をする
Webhook が受信したメッセージの確認応答を行うには、有効な HTTP レスポンスを返します。 Webhook に送信されます
配信タイムアウト、Webhook のネットワーク到達性、 リダイレクトや権限の問題が検出されると、Google はメッセージを保存して転送し、 または Webhook がメッセージを正常に受信するまで、 表示されます。
Google からのメールであることを確認する
メッセージを処理する前に、Google がメッセージを送信したことを確認する必要があります。 できます。
受信したメッセージが Google から送信されたことを確認するため、
- メッセージの
X-Goog-Signature
ヘッダーを解析します。これはハッシュ化された Base64 でエンコードされたメッセージ本文のペイロードのコピー。 クライアント トークン( Webhook) メッセージ ペイロードのバイトの SHA512 HMAC を作成し、 結果を base64 エンコードします。
X-Goog-Signature
ハッシュと作成したハッシュを比較します。- ハッシュが一致した場合、メッセージは Google から送信されたものとみなされます。
- ハッシュが一致しない場合は、既知の正常なハッシュのハッシュ化プロセスを確認します。 表示されます。ハッシュ化プロセスが正しく機能していて、 迷惑メールに分類された可能性があるメッセージ お問い合わせください( ビジネス メッセージでの Google アカウントが必要です)。
GitHub リポジトリにある Echo Bots のメッセージ確認の例をご覧ください。 Java Node.js、 と Python です。
言語 / 地域を特定する
ユーザーはさまざまな場所や言語でさまざまなコミュニケーションをとっています。ビジネス メッセージ
ユーザーのアクティビティとresolvedLocale
と
userDeviceLocale
フィールド(デバイスの情報に基づきます)言語 / 地域設定。
詳しくは、Localization and
言語 / 地域。
可能な限りメッセージをルーティングし、ユーザーの言語 設定。
コンテキストに基づいてメールを転送する
メッセージ コンテキストは、ユーザーがどのような情報を求めているのかを示します。
たとえば、ユーザーがメッセージを送信したときに、
placeId
特定の場所(placeId
で識別される)にメッセージを送信し、
地域固有の質問をする可能性が高まります。同様に、メッセージに
nearPlaceId
値。ユーザーに近い場所を識別します。
場所固有の情報を知りたがっているが、エージェントは
チャットしたい場所を指定してください。
メッセージのコンテキスト情報を使用して、メッセージを最適な場所にルーティングします 最適です
- 新しい会話のメッセージに対する一般的な質問の場合は、 自動化によって解決できます
- 自動化で質問に対応できない場合は、ライブ対応のエージェントに転送します。
- メッセージの言語 / 地域がエージェントのデフォルトの言語 / 地域と一致しない場合は、 その言語 / 地域をサポートできるライブ対応のエージェントにメッセージを送信できます。
- 特定の場所に関する質問の場合は、 場所に関する情報が表示されます。
- メッセージが進行中の会話にある場合は、ライブ対応のエージェントにラウトする できます。
お客様が送信したメッセージの種類を特定する
ユーザーは次の 3 種類のメッセージを送信できます。
- テキスト メッセージは自由形式のレスポンスです。
- Image メッセージには、ユーザーが指定した画像の署名付き URL が含まれます。 表示されます。
- 提案メッセージには、ポストバック データとテキストの ユーザーがタップした操作の候補または返信文の候補。
メッセージ コンテンツを処理する
エージェントが自動化を使用する場合、ユーザー メッセージの内容は、 会話で次のレスポンスが引き出されます。
ユーザーの意図を特定する最も簡単な方法は、 推奨される返信や操作の候補が表示されます。画像に関連付けられたテキストは ポストバック データは機械で読み取り可能です。
ユーザーがテキスト メッセージを送信すると、エージェントによってレスポンスが解析され、 使用するか、自然言語理解( Dialogflow 統合 処理し、進むべき方向を特定します。
エージェントがユーザーのメッセージにどう返答すればよいかわからない場合は、 エラー状態を返して会話の継続を試行します。 プロンプトの入力を求めて、ユーザーに追加情報を求めます。 またはライブ対応のエージェントに会話を引き継ぎます。
ユーザーに返信する
エージェントが自動化または チャット サポートを通じて メッセージ ユーザーとの会話が続行されます。
回答を作成する際には、ユーザーの言語 / 地域を考慮してください。また、
それぞれの userInfo
オブジェクトから値を取得して、レスポンスをカスタマイズする
表示されます。
メッセージのタイプ
次のコードは、エージェントがメッセージを受信する方法を示しています。
形式と値については、以下をご覧ください。
UserMessage
。
テキスト
最も一般的な返信方法は書式なしテキストです。テキスト メッセージでは、 使用できます。
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "message": { "messageId": "MESSAGE_ID", "name": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "text": "MESSAGE_TEXT", "createTime": "MESSAGE_CREATE_TIME", }, "dialogflowResponse": { "autoResponded": "BOOLEAN", "faqResponse": { "userQuestion": "USER_QUESTION", "answers": [{ "faqQuestion": "FAQ_QUESTION", "faqAnswer": "FAQ_ANSWER", "matchConfidenceLevel": "CONFIDENCE_LEVEL", "matchConfidence": "CONFIDENCE_NUMERIC", }], }, }, "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
書式設定と値のオプションについては、以下をご覧ください。
Message
。
画像
ユーザーはテキストを送信するだけでなく、画像をメッセージとしてエージェントに送信することもできます。
ビジネス メッセージでは、共有された画像が
URL
メッセージ ペイロードの text
フィールドにそれらの URL を含めます。
エージェントに自動化が含まれている場合は、自動化が回答方法を認識していることを確認してください ユーザーが画像を共有した場合。人間のエージェントの場合は、必ず画像が渡されるようにする メッセージ内の URL がクリック可能に
...
"message": {
"text": "https://storage.googleapis.com/business-messages-us/936640919331/jzsu6cdguNGsBhmGJGuLs1DS?x-goog-algorithm\u003dGOOG4-RSA-SHA256\u0026x-goog-credential\u003duranium%40rcs-uranium.iam.gserviceaccount.com%2F20190826%2Fauto%2Fstorage%2Fgoog4_request\u0026x-goog-date\u003d20190826T201038Z\u0026x-goog-expires\u003d604800\u0026x-goog-signedheaders\u003dhost\u0026x-goog-signature\u003d89dbf7a74d21ab42ad25be071b37840a544a43d68e67270382054e1442d375b0b53d15496dbba12896b9d88a6501cac03b5cfca45d789da3e0cae75b050a89d8f54c1ffb27e467bd6ba1d146b7d42e30504c295c5c372a46e44728f554ba74b7b99bd9c6d3ed45f18588ed1b04522af1a47330cff73a711a6a8c65bb15e3289f480486f6695127e1014727cac949e284a7f74afd8220840159c589d48dddef1cc97b248dfc34802570448242eac4d7190b1b10a008404a330b4ff6f9656fa84e87f9a18ab59dc9b91e54ad11ffdc0ad1dc9d1ccc7855c0d263d93fce6f999971ec79879f922b582cf3bb196a1fedc3eefa226bb412e49af7dfd91cc072608e98"
}
...
書式設定と値のオプションについては、以下をご覧ください。
Message
。
候補
定型返信文や操作の候補により、ユーザーは返信したり操作したりできます タップ 1 回で操作できます。ユーザーが候補をタップすると、エージェントはペイロードを受け取ります。 テキストとポストバック データが入力されています。
候補メッセージの形式は次のとおりです。
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "suggestionResponse": { "message": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "postbackData": "POSTBACK_DATA", "createTime": "RESPONSE_CREATE_TIME", "text": "SUGGESTION_TEXT", "suggestionType": "SUGGESTION_TYPE", } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
書式設定と値のオプションについては、以下をご覧ください。
SuggestionResponse
。
認証リクエスト
認証リクエストの候補により、ユーザーは OAuth でログインできるようになります ID の詳細をエージェントに提供したり、エージェントが 操作を実行したり、できます。参照: 認証方法 OAuth。
指定した OAuth プロバイダでユーザーがログインに成功すると、エージェントは 認証コードを含むペイロードを受け取ります。ユーザーが エージェントはエラーの詳細を含むペイロードを受け取ります。
認証リクエスト メッセージの形式は次のとおりです。
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "authenticationResponse": { "code": "AUTHORIZATION_CODE", "redirect_uri": "REDIRECT_URI", "errorDetails": { "error": "ERROR", "errorDescription": "ERROR_DESCRIPTION", }, } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
書式設定と値のオプションについては、以下をご覧ください。
AuthenticationResponse
。
メッセージのコンテキスト
各メッセージには、メッセージの送信元に関するコンテキスト情報が含まれています。
... "context": { "customContext": "CUSTOM_CONTEXT", "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "nearPlaceId": "NEARBY_LOCATION_PLACE_ID", "deflectedPhoneNumber": "DEFLECTED_PHONE_NUMBER", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, "widget": { "url": "WEBSITE_URL", "widgetContext": "WIDGET_CONTEXT", }, }, ...
フィールド | 説明 |
---|---|
customContext |
パートナーが指定したコンテキスト データ。 |
entryPoint |
ユーザーが会話を開始したメッセージ サーフェス(定義されたとおり)。 EntryPoint。 |
placeId |
Google プレイス データベースから取得される、ビジネス拠点の一意の識別子 確認することもできます特定の地域から送信されたメールにのみ表示される あります。 |
nearPlaceId |
Google プレイスのデータベースから取得される最初の ID の一意の識別子
ローカル パックに含まれる場合があります。お客様がチャットを希望する場所を確認する
nearPlaceId 値を受け取ったとき。 |
deflectedPhoneNumber |
ユーザーがビジネス メッセージで発信できない電話番号 確認しました。 |
resolvedLocale |
計算された、ユーザーの言語 / 地域に最適な一致(
ロケール値は、正しい形式の IETF BCP 47 言語タグです。 |
userInfo.displayName |
メッセージを送信したユーザーの名前。ユーザーが ID 共有中の場合、このフィールドは空です。 |
userInfo.userDeviceLocale |
デバイスから報告されたユーザーの言語 / 地域(正しい形式で指定) IETF BCP 47 言語タグ。 |
widget.url |
会話サーフェスが起動されたウェブサイトの URL。 |
widget.widgetContext |
<ph type="x-smartling-placeholder"></ph>
使用するウィジェットの data-bm-widget-context 属性値
会話を開始できます。 |
会話の履歴
Google は会話履歴を提供していません。独自の履歴を維持する ユーザーのプライバシー ポリシーとベスト プラクティスに準拠しながら、 これにより、ユーザーからの今後のメッセージに、十分な情報に基づいて返信できるようになります。