複雑な属性の設定 - Amazon Lex V1

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

 

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

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

複雑な属性の設定

セッション属性およびリクエスト属性は、属性と値の文字列間マップです。多くの場合、文字列マップを使用してクライアントアプリケーションとボットの間で属性値を転送できます。ただし、場合によっては、文字列マップに容易に変換できないバイナリデータや複雑な構造の転送が必要になることもあります。例えば、次の JSON オブジェクトは米国の最も人口が多い 3 つの都市の配列を示しています。

{ "cities": [ { "city": { "name": "New York", "state": "New York", "pop": "8537673" } }, { "city": { "name": "Los Angeles", "state": "California", "pop": "3976322" } }, { "city": { "name": "Chicago", "state": "Illinois", "pop": "2704958" } } ] }

このデータの配列は、文字列間マップに適切に変換されません。このような場合は、オブジェクトを単純な文字列に変換し、その文字列を PostContent オペレーションと PostText オペレーションを使用してボットに送信できます。

例えば、JavaScript を使用している場合は、JSON.stringify オペレーションを使用してオブジェクトを JSON に変換し、JSON.parse オペレーションを使用して JSON テキストを JavaScript オブジェクトに変換します。

// To convert an object to a string. var jsonString = JSON.stringify(object, null, 2); // To convert a string to an object. var obj = JSON.parse(JSON string);

セッション属性を PostContent オペレーションで送信するには、次の JavaScript コードに示すように、セッション属性を base64 エンコードしてからリクエストヘッダーに追加する必要があります。

var encodedAttributes = new Buffer(attributeString).toString("base64");

バイナリデータを PostContent オペレーションと PostText オペレーションに送信する場合は、最初にバイナリデータを base64 エンコードされた文字列に変換し、次にその文字列をセッション属性の値として送信します。

"sessionAttributes" : { "binaryData": "base64 encoded data" }