リクエスト属性の設定 - Amazon Lex V1

Amazon Lex V2 を使用している場合は、代わりに Amazon Lex V2 ガイドを参照してください。

 

Amazon Lex V1 を使用している場合は、ボットを Amazon Lex V2 にアップグレードすることをお勧めします。V1 には新機能を追加されませんので、すべての新しいボットには V2 を使用することを強くお勧めします。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

リクエスト属性の設定

リクエスト属性は、リクエスト固有の情報を示し、現在のリクエストにのみ適用されます。クライアントアプリケーションは、この情報を Amazon Lex に送信します。セッション全体を通しては保持する必要がない情報は、リクエスト属性を使用して渡します。リクエスト属性は、独自に作成することも、事前定義されたものを使用することもできます。リクエスト属性を送信するには、PostContentx-amz-lex-request-attributes ヘッダーを使用するか、PostText リクエストの requestAttributes フィールドを使用します。セッション属性とは異なり、リクエスト属性は複数のリクエストにわたって保持されないため、PostContent レスポンスや PostText レスポンスで返されることはありません。

注記

複数のリクエストにわたって保持される情報を送信するには、セッション属性を使用します。

名前空間 x-amz-lex: は、事前定義されたリクエスト属性用に予約されています。リクエスト属性をプレフィックス x-amz-lex: で作成しないでください。

事前定義されたリクエスト属性の設定

Amazon Lex には、ボットに送信される情報の処理方法を管理するための事前定義されたリクエスト属性があります。事前定義されたリクエスト属性は、セッション全体にわたって保持されないため、リクエストごとに属性を送信する必要があります。すべての事前定義された属性は x-amz-lex: 名前空間にあります。

Amazon Lex には、以下の定義済み属性に加えて、メッセージングプラットフォーム用の定義済み属性が用意されています。これらの属性のリストについては、「メッセージングプラットフォームで Amazon Lex ボットをデプロイする」を参照してください。

レスポンスタイプの設定

異なる機能を持つクライアントアプリケーションが 2 つある場合は、レスポンスのメッセージ形式の制限が必要な場合もあります。例えば、ウェブクライアントに送信するメッセージをプレーンテキストに制限し、モバイルクライアントではプレーンテキストと音声合成マークアップ言語 (SSML) の両方を使用できるようにしたいといった場合も考えられます。PostContentPostText オペレーションが返すメッセージの形式を設定するには、x-amz-lex:accept-content-types" リクエストの属性を使用します。

次のメッセージタイプを任意に組み合わせて属性を設定することができます。

  • PlainText - メッセージには UTF-8 形式テキストが含まれています。

  • SSML - メッセージには音声出力のテキスト形式が含まれています。

  • CustomPayload - メッセージにはクライアント向けに作成したカスタム形式が含まれています。アプリケーションのニーズを満たすようにペイロードを定義することができます。

Amazon Lex はレスポンスの [Message] フィールドで指定したタイプを使用するメッセージのみを返します。カンマで区切れば複数の値を設定できます。メッセージグループを使用している場合は、各メッセージグループで少なくとも 1 つ指定したタイプのメッセージが含まれている必要があります。それ以外の場合は、NoUsableMessageException エラーが発生します。詳細については、「メッセージグループ」を参照してください。

注記

x-amz-lex:accept-content-types リクエストの属性は、HTML 本文のコンテンツには影響しません。PostText オペレーションのレスポンスの内容は常に UTF-8 形式テキストです。PostContent オペレーションレスポンスの本文には、リクエストの Accept ヘッダーで設定した形式のデータが含まれています。

優先タイムゾーンの設定

ユーザーのタイムゾーンを基準として日付を解決するようにタイムゾーンを設定するには、x-amz-lex:time-zone リクエスト属性を使用します。x-amz-lex:time-zone 属性にタイムゾーンを指定しないと、ボットで使用しているリージョンに応じたデフォルトのタイムゾーンが使用されます。

リージョン デフォルトのタイムゾーン
米国東部 (バージニア北部) America/New_York
米国西部 (オレゴン) America/Los_Angeles
アジアパシフィック (シンガポール) Asia/Singapore
アジアパシフィック (シドニー) Australia/Sydney
アジアパシフィック (東京) Asia/Tokyo
欧州 (フランクフルト) Europe/Berlin
ヨーロッパ (アイルランド) Europe/Dublin
欧州 (ロンドン) Europe/London

例えば、「何日にパッケージを配達しましょうか?」というプロンプトに対して、ユーザーがレスポンスで tomorrow と回答した場合、パッケージを配達する実際の日付は、ユーザーのタイムゾーンによって異なります。例えば、ニューヨークの 9 月 16 日 01:00 時は、ロサンゼルスの 9 月 15 日 22:00 時です。米国東部(バージニア北部 リージョンにいる人物が、デフォルトタイムゾーンを使用してパッケージの配達日を「明日」に指定した場合、パッケージは 16 日ではなく、17 日に配達されます。x-amz-lex:time-zone リクエスト属性を America/Los_Angeles に設定すると、パッケージは 16 日に配達されます。

属性は、IANA (Internet Assigned Number Authority) のタイムゾーン名のいずれかに設定できます。タイムゾーン名のリストについては Wikipedia の「List of tz database time zones」をご覧ください。

ユーザー定義のリクエスト属性の設定

ユーザー定義のリクエスト属性は各リクエストでボットに送信するデータです。この情報を送信するには、PostContent リクエストの amz-lex-request-attributes ヘッダーを使用するか、PostText リクエストの requestAttributes フィールドを使用します。

リクエスト属性を Amazon Lex に送信するには、属性の文字列間マップを作成します。リクエスト属性のマッピング方法を以下に示します。

{ "attributeName": "attributeValue", "attributeName": "attributeValue" }

PostText オペレーションの場合は、次に示すように、[requestAttributes] フィールドを使用してリクエストの本文にマップを挿入します。

"requestAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" }

PostContent オペレーションの場合は、マップを base64 エンコードし、それを x-amz-lex-request-attributes ヘッダーとして送信します。

バイナリまたは構造化されたデータをリクエスト属性で送信する場合は、最初にデータを単純な文字列に変換する必要があります。詳細については、「複雑な属性の設定」を参照してください。