Definição de atributos complexos no seu bot do Lex V2
Os atributos de solicitação e de sessão são mapas de string para string de atributos e valores. Em muitos casos, você pode usar o mapa de string para transferir valores de atributo entre o aplicativo cliente e o bot. Em alguns casos, no entanto, pode ser necessário transferir uma estrutura complexa ou dados binários que não podem ser facilmente convertidos em um mapa de string. Por exemplo, o seguinte objeto JSON representa um arranjo com as três cidades mais populosas dos Estados Unidos:
{
"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"
}
}
]
}Esse arranjo de dados não funciona bem como mapa de string para string. Nesse caso, você pode transformar um objeto em uma string simples para que você possa enviá-lo ao seu bot com as operações RecognizeText e RecognizeUtterance.
Por exemplo, se você estiver usando o JavaScript, você pode usar a operação JSON.stringify para converter um objeto para JSON e a operação JSON.parse para converter texto JSON para um objeto 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);
Para enviar atributos de sessão com a operação RecognizeUtterance, você deve codificar os atributos em base64 antes de adicioná-los ao cabeçalho de solicitação, como mostrado no seguinte código JavaScript:
varencodedAttributes= new Buffer(attributeString).toString("base64");
Você pode enviar dados binários para as operações RecognizeText e RecognizeUtterance convertendo os dados para uma string codificada em base64 e, em seguida, enviando a string como o valor nos atributos de sessão:
"sessionAttributes" : {
"binaryData": "base64 encoded data"
}