翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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. varobj
= JSON.parse(JSON string
);
RecognizeUtterance
オペレーションで属性を送信するには、次の JavaScriptコードに示すように、リクエストヘッダーに追加する前に属性を base64 エンコードする必要があります。
var
encodedAttributes
= new Buffer(attributeString
).toString("base64");
バイナリデータを RecognizeText
オペレーションと RecognizeUtterance
オペレーションに送信する場合は、最初にバイナリデータを base64 エンコードされた文字列に変換し、次にその文字列をセッション属性の値として送信します。
"sessionAttributes" : {
"binaryData": "base64 encoded data
"
}