

Aviso de fim do suporte: em 15 de setembro de 2025, o suporte para o Amazon Lex V1 AWS será interrompido. Após 15 de setembro de 2025, você não poderá mais acessar o console do Amazon Lex V1 nem os respectivos recursos. Se você estiver usando o Amazon Lex V2, consulte o [guia do Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) em vez disso. 

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Etapa 2a (opcional): revisar os detalhes do fluxo de informações falado (console)
<a name="gs-bp-details-postcontent-flow"></a>

Esta seção explica o fluxo de informações entre o cliente e o Amazon Lex quando o cliente usa fala para enviar solicitações. Para obter mais informações, consulte [PostContent](API_runtime_PostContent.md). 

1. O usuário diz: Eu gostaria de encomendar flores.

   1. O cliente (console) envia a seguinte solicitação [PostContent](API_runtime_PostContent.md) para o Amazon Lex: 

      ```
      POST /bot/{{OrderFlowers}}/alias/{{$LATEST}}/user/{{4o9wwdhx6nlheferh6a73fujd3118f5w}}/content HTTP/1.1
      x-amz-lex-session-attributes: "e30=" 
      Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1"
      Accept: "audio/mpeg"
      
      
      Request body
      {{input stream}}
      ```

      O URI de solicitação e o corpo fornecem informações ao Amazon Lex:
      + URI da solicitação fornece o nome do bot (`OrderFlowers`), o alias do bot (`$LATEST`) e o nome do usuário (uma string aleatória que identifica o usuário). `content` indica que esta é uma solicitação da API `PostContent` (não uma solicitação `PostText`).
      + Cabeçalhos de solicitação
        + `x-amz-lex-session-attributes`: o valor codificado em base64 representa "{}". Quando o cliente faz a primeira solicitação, não há atributos de sessão. 
        + `Content-Type` – reflete o formato de áudio.
      + Corpo da solicitação – o stream de áudio de entrada do usuário ("Eu gostaria de encomendar flores.").
**nota**  
Se o usuário escolher enviar texto ("Eu gostaria de encomendar flores") para a API `PostContent` em vez falar, o corpo da solicitação será a entrada do usuário. O cabeçalho `Content-Type` é definido adequadamente:  

      ```
      POST /bot/{{OrderFlowers}}/alias/{{$LATEST}}/user/{{4o9wwdhx6nlheferh6a73fujd3118f5w}}/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "text/plain; charset=utf-8"
      Accept: accept
      
      Request body
      {{input stream}}
      ```

   1. No fluxo de entrada, o Amazon Lex detecta a intenção (`OrderFlowers`). Em seguida, ele escolhe um dos slots da intenção (neste caso, o `FlowerType`) e um de seus prompts de seleção de valor e envia uma resposta com os seguintes cabeçalhos: 

      ```
      x-amz-lex-dialog-state:ElicitSlot
      x-amz-lex-input-transcript:I would like to order some flowers.
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-message:What type of flowers would you like to order?
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slot-to-elicit:FlowerType
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjpudWxsLCJQaWNrdXBEYXRlIjpudWxsfQ==
      ```

      Os valores do cabeçalho fornecem as seguintes informações:
      + `x-amz-lex-input-transcript` – fornece a transcrição do áudio (entrada do usuário) da solicitação
      + `x-amz-lex-message`: fornece a transcrição do áudio que Amazon Lex retornou na resposta
      + `x-amz-lex-slots` – a versão codificada em base64 dos slots e valores:

        ```
        {"PickupTime":null,"FlowerType":null,"PickupDate":null}
        ```
      + `x-amz-lex-session-attributes`: a versão codificada em base64 dos atributos de sessão ({})

      O cliente reproduz o áudio no corpo da resposta.

1. O usuário diz: rosas

   1. O cliente (console) envia a seguinte solicitação [PostContent](API_runtime_PostContent.md) para o Amazon Lex: 

      ```
      POST /bot/{{OrderFlowers}}/alias/{{$LATEST}}/user/{{4o9wwdhx6nlheferh6a73fujd3118f5w}}/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" 
      Accept: "audio/mpeg"
      
      
      Request body
      {{input stream ("roses")}}
      ```

      O corpo da solicitação é o stream de áudio de entrada do usuário (rosas). O `sessionAttributes` permanece vazio.

   1. O Amazon Lex interpreta o fluxo de entrada no contexto da intenção atual (ele lembra que pediu ao usuário informações a respeito do slot `FlowerType`). Primeiro, o Amazon Lex atualiza o valor de slot para a intenção atual. Em seguida, ele escolhe outro slot (`PickupDate`), juntamente com uma das mensagens de solicitação (Quando você deseja pegar as rosas?) e retorna uma resposta com os seguintes cabeçalhos:

      ```
      x-amz-lex-dialog-state:ElicitSlot
      x-amz-lex-input-transcript:roses
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-message:When do you want to pick up the roses?
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slot-to-elicit:PickupDate
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6bnVsbH0=
      ```

      Os valores do cabeçalho fornecem as seguintes informações:
      + `x-amz-lex-slots`: a versão codificada em base64 dos slots e valores:

        ```
        {"PickupTime":null,"FlowerType":"roses","PickupDate":null}
        ```
      + `x-amz-lex-session-attributes`: a versão codificada em base64 dos atributos de sessão ({})

      O cliente reproduz o áudio no corpo da resposta.

1. O usuário diz: amanhã

   1. O cliente (console) envia a seguinte solicitação [PostContent](API_runtime_PostContent.md) para o Amazon Lex: 

      ```
      POST /bot/{{OrderFlowers}}/alias/{{$LATEST}}/user/{{4o9wwdhx6nlheferh6a73fujd3118f5w}}/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1"
      Accept: "audio/mpeg"
      
      
      Request body
      {{input stream ("tomorrow")}}
      ```

      O corpo da solicitação é o stream de áudio de entrada do usuário ("amanhã"). O `sessionAttributes` permanece vazio.

   1. O Amazon Lex interpreta o fluxo de entrada no contexto da intenção atual (ele lembra que pediu ao usuário informações a respeito do slot `PickupDate`). O Amazon Lex atualiza o valor de slot (`PickupDate`) para a intenção atual. Em seguida, ele escolhe outro slot para escolher o valor para (`PickupTime`) e um dos prompts de seleção de valor (Quando você deseja receber as rosas em 18/03/2017?), e retorna uma resposta com os seguintes cabeçalhos:

      ```
      x-amz-lex-dialog-state:ElicitSlot
      x-amz-lex-input-transcript:tomorrow
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-message:When do you want to pick up the roses on 2017-03-18?
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slot-to-elicit:PickupTime
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==
      x-amzn-RequestId:3a205b70-0b69-11e7-b447-eb69face3e6f
      ```

      Os valores do cabeçalho fornecem as seguintes informações:
      + `x-amz-lex-slots`: a versão codificada em base64 dos slots e valores:

        ```
        {"PickupTime":null,"FlowerType":"roses","PickupDate":"2017-03-18"}
        ```
      + `x-amz-lex-session-attributes`: a versão codificada em base64 dos atributos de sessão ({})

      O cliente reproduz o áudio no corpo da resposta.

1. O usuário diz: 18h

   1. O cliente (console) envia a seguinte solicitação [PostContent](API_runtime_PostContent.md) para o Amazon Lex: 

      ```
      POST /bot/{{OrderFlowers}}/alias/{{$LATEST}}/user/{{4o9wwdhx6nlheferh6a73fujd3118f5w}}/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "text/plain; charset=utf-8"
      Accept: "audio/mpeg"
      
      
      Request body
      {{input stream ("6 pm")}}
      ```

      O corpo da solicitação é o stream de áudio de entrada do usuário ("18h"). O `sessionAttributes` permanece vazio.

   1. O Amazon Lex interpreta o fluxo de entrada no contexto da intenção atual (ele lembra que pediu ao usuário informações a respeito do slot `PickupTime`). Primeiro, ele atualiza o valor do slot para a intenção atual. 

      Agora, o Amazon Lex detecta que tem informações de todos os slots. No entanto, a intenção `OrderFlowers` é configurada com uma mensagem de confirmação. Portanto, o Amazon Lex precisa de uma confirmação explícita do usuário para poder prosseguir para o atendimento da intenção. Ele envia uma resposta com os seguintes cabeçalhos solicitando a confirmação antes de encomendar as flores:

      ```
      x-amz-lex-dialog-state:ConfirmIntent
      x-amz-lex-input-transcript:six p. m.
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-message:Okay, your roses will be ready for pickup by 18:00 on 2017-03-18.  Does this sound okay?
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==
      x-amzn-RequestId:083ca360-0b6a-11e7-b447-eb69face3e6f
      ```

      Os valores do cabeçalho fornecem as seguintes informações:
      + `x-amz-lex-slots`: a versão codificada em base64 dos slots e valores:

        ```
        {"PickupTime":"18:00","FlowerType":"roses","PickupDate":"2017-03-18"}
        ```
      + `x-amz-lex-session-attributes`: a versão codificada em base64 dos atributos de sessão ({})

      O cliente reproduz o áudio no corpo da resposta.

1. O usuário diz: Sim

   1. O cliente (console) envia a seguinte solicitação [PostContent](API_runtime_PostContent.md) para o Amazon Lex: 

      ```
      POST /bot/{{OrderFlowers}}/alias/{{$LATEST}}/user/{{4o9wwdhx6nlheferh6a73fujd3118f5w}}/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1"
      Accept: "audio/mpeg"
      
      
      Request body
      {{input stream ("Yes")}}
      ```

      O corpo da solicitação é o stream de áudio de entrada do usuário ("Sim"). O `sessionAttributes` permanece vazio.

   1. O Amazon Lex interpreta o fluxo de entrada e entende que o usuário deseja prosseguir com o pedido. A intenção `OrderFlowers` é configurada com `ReturnIntent` como a atividade de cumprimento. Isso orienta o Amazon Lex a retornar todos os dados de intenção ao cliente. O Amazon Lex retorna uma resposta com o seguinte: 

      

      ```
      x-amz-lex-dialog-state:ReadyForFulfillment
      x-amz-lex-input-transcript:yes
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==
      ```

      O cabeçalho de resposta `x-amz-lex-dialog-state` é definido como `ReadyForFulfillment`. O cliente pode, então, cumprir a intenção.

1. Agora, teste novamente o bot. Para estabelecer um novo contexto (usuário), escolha o link **Clear** no console. Forneça os dados para a intenção `OrderFlowers` e inclua alguns dados inválidos. Por exemplo: 
   + Jasmim como o tipo de flor (não é um dos tipos de flor suportados)
   + Ontem como o dia em que você deseja receber as flores

   Observe que o bot aceita esses valores, pois você não tem nenhum código para inicializar e validar os dados do usuário. Na próxima seção, adicione uma função do Lambda para fazer isso. Observe o seguinte sobre a função do Lambda:
   + Ela valida dados de slot após cada entrada do usuário. Ela cumpre a intenção no final. Ou seja, o bot processa o pedido de flores e retorna uma mensagem para o usuário, em vez de simplesmente retornar dados do slot para o cliente. Para obter mais informações, consulte [Uso de funções do Lambda](using-lambda.md).
   + Ela também define os atributos da sessão. Para mais informações sobre atributos de sessão, consulte [PostText](API_runtime_PostText.md). 

      Ao concluir a seção Conceitos básicos, você pode fazer os exercícios adicionais ([Exemplos adicionais: criação de bots do Amazon Lex](additional-exercises.md)). O [Reservar uma viagem](ex-book-trip.md) usa atributos de sessão para compartilhar informações entre intenções para iniciar uma conversa dinâmica com o usuário.

**Próxima etapa**  
[Etapa 3: Crie uma função do Lambda (console)](gs-bp-create-lambda-function.md)