Lex V2 ボットでの複雑な属性の設定 - Amazon Lex

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

Lex V2 ボットでの複雑な属性の設定

セッション属性とリクエスト属性は、属性と値の string-to-string マップです。多くの場合、文字列マップを使用してクライアントアプリケーションとボットの間で属性値を転送できます。ただし、場合によっては、文字列マップに容易に変換できないバイナリデータや複雑な構造の転送が必要になることもあります。例えば、次の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" } } ] }

このデータの配列はマップ string-to-stringにうまく変換されません。このような場合、 オブジェクトを単純な文字列に変換して、 RecognizeTextおよび RecognizeUtteranceオペレーションでボットに送信できます。

例えば、 を使用している場合 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);

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

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

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

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