Modelo de programação - Amazon Lex V1

Se você estiver usando o Amazon Lex V2, consulte o Guia do Amazon Lex V2.

 

Se você estiver usando o Amazon Lex V1, recomendamos atualizar seus bots para o Amazon Lex V2. Não estamos mais adicionando novos atributos à V1 e recomendamos o uso da V2 para todos os novos bots.

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á.

Modelo de programação

Um bot é o principal tipo de recurso no Amazon Lex. Os outros tipos de recursos no Amazon Lex; são intenção, tipo de slot, alias e associação de canal de bot.

Você cria um bot usando o console do Amazon Lex ou a API de criação de modelos. O console fornece uma interface gráfica de usuário que você usa para criar um bot pronto para produção para seu aplicativo. Se preferir, você poderá usar a API de criação de modelos por meio da AWS CLI ou de seu próprio programa personalizado para criar um bot.

Depois de criar um bot, você o implanta em uma das plataformas compatíveis ou o integra em seu próprio aplicativo. Quando um usuário interage com o bot, o aplicativo cliente envia solicitações ao bot usando a API de runtime do Amazon Lex. Por exemplo, quando um usuário diz "Quero encomendar uma pizza", o cliente envia essa entrada do usuário ao Amazon Lex usando uma das operações da API de runtime. Os usuários podem fornecer entrada de voz ou texto.

Você também pode criar funções do Lambda; e usá-las em uma intenção. Use esses hooks de código de função do Lambda para executar atividades em runtime, como inicialização, validação da entrada do usuário e atendimento da intenção. As seções a seguir fornecem informações adicionais.

Operações de API de criação de modelo

Para criar programaticamente bots, intenções e tipos de slot, use a API de operações de criação de modelo. Você também pode usar a API de criação de modelo para gerenciar, atualizar e excluir os recursos para o seu bot. As operações de API de criação de modelo incluem:

Você pode usar a API de criação de modelo para criar ferramentas personalizadas a fim de gerenciar os recursos do Amazon Lex. Por exemplo, há um limite de 100 versões para bots, intenções e tipos de slot. Você pode usar a API de criação de modelo para criar uma ferramenta que exclui automaticamente versões antigas quando o bot se aproxima do limite.

Para garantir que apenas uma operação atualize um recurso por vez, o Amazon Lex usa somas de verificação. Quando usa uma operação de API PutPutBot, PutBotAlias PutIntent ou PutSlotType para atualizar um recurso, você deve passar a soma de verificação atual do recurso na solicitação. Se duas ferramentas tentarem atualizar um recurso ao mesmo tempo, elas oferecem a mesma soma de verificação atual. A primeira solicitação a alcançar o Amazon Lex corresponde à soma de verificação atual do recurso. Quando a segunda solicitação chega, a soma de verificação é diferente. A segunda ferramenta recebe uma exceção PreconditionFailedException e a atualização é encerrada.

As operações GetGetBot, GetIntent e GetSlotType—são eventualmente consistentes. Se você usar uma operação Get imediatamente após criar ou modificar um recurso com uma das operações Put, as alterações poderão não ser retornadas. Depois de uma operação Get retornar a atualização mais recente, ela sempre retornará esse recurso atualizado até que o recurso seja modificado novamente. Você pode determinar se um recurso atualizado foi retornado ao analisar a soma de verificação.

Operações de API de runtime

Os aplicativos cliente usam as seguintes operações de API em runtime para se comunicar com o Amazon Lex:

  • PostContent - Usa entrada de texto ou fala e retorna informações de intenção e uma mensagem de texto ou fala para expressar ao usuário. No momento, o Amazon Lex é oferece suporte aos seguintes formatos de áudio:

     

    Formatos de áudio de entrada – LPCM e Opus

    Formatos de áudio de saída – MPEG, OGG e PCM

     

    A operação PostContent oferece suporte a entrada de áudio em 8 kHz e 16 kHz. Os aplicativos em que o usuário final se comunica com o Amazon Lex por telefone, como uma central de atendimento automatizada, podem passar áudio 8 kHz diretamente.

     

  • PostText - Usa texto como entrada e retorna informações de intenção e uma mensagem de texto para transmitir ao usuário.

Seu aplicativo cliente usa a API de runtime para chamar um determinado bot do Amazon Lex para processar declarações entrada de texto ou de fala do usuário. Por exemplo, suponha que um usuário diga "Quero pizza". O cliente envia essa entrada do usuário a um bot usando uma das operações da API de runtime do Amazon Lex. A partir da entrada do usuário, o Amazon Lex; reconhece que a solicitação do usuário destina-se à intenção OrderPizza definida no bot. O Amazon Lex engaja o usuário em uma conversa para obter as informações necessárias, ou dados de slot, como tamanho da pizza, cobertura e número de pizzas. Depois que o usuário fornece todos os dados necessários do slot, o Amazon Lex invoca o hook de código da função do Lambda para atender à intenção ou retorna os dados da intenção para o cliente, dependendo de como a intenção está configurada.

Use a operação PostContent quando seu bot usa entrada de voz. Por exemplo, um aplicativo de call center automatizado pode enviar fala para um bot do Amazon Lex, e não para um agente, para resolver indagações do cliente. Você pode usar o formato de áudio de 8 kHz para enviar áudio diretamente do telefone para o Amazon Lex.

A janela de teste no console do Amazon Lex usa a API PostContent para enviar solicitações de texto e de fala para o Amazon Lex. Use esta janela de teste nos exercícios Conceitos básicos do Amazon Lex.

Funções do Lambda como hooks de código

Você pode configurar seu bot do Amazon Lex para invocar uma função do Lambda como um hook de código. O hook de código pode servir para várias finalidades:

  • Personaliza a interação do usuário. Por exemplo, quando Joe pergunta pelas coberturas de pizza disponíveis, você pode usar o conhecimento anterior das opções de Joe para exibir um subconjunto de coberturas.

  • Valida a entrada do usuário. Suponha que Jen queira escolher flores depois do horário de funcionamento. Você pode validar o horário que Jen inseriu e enviar uma resposta adequada.

  • Atende à intenção do usuário. Depois de Joe fornecer todas as informações sobre seu pedido de pizza, o Amazon Lex pode invocar uma função do Lambda para fazer o pedido em uma pizzaria local.

Ao configurar uma intenção, você especifica funções do Lambda como hooks de código nos seguintes locais:

  • Hook de código de diálogo para inicialização e validação – Essa função do Lambda é invocada em cada entrada do usuário, supondo que o Amazon Lex tenha entendido a intenção do usuário.

  • Hook de código de atendimento – Essa função do Lambda;é invocada depois que o usuário fornece todos os dados de slot necessários para atender a intenção.

Você escolhe a intenção e define os hooks de código no console do Amazon Lex, conforme mostrado na captura de tela a seguir:

O console do Amazon Lex mostrando hooks de código da função do Lambda.

Você também pode definir hooks de código usando os campos dialogCodeHook e fulfillmentActivity na operação PutIntent.

Uma função do Lambda pode executar a inicialização, a validação e o atendimento. Os dados do evento que a função do Lambda recebe têm um campo que identifica o chamador como um hook de código de diálogo ou de atendimento. É possível usar essas informações para executar a parte adequada de seu código.

Você pode usar uma função do Lambda para criar um bot que pode navegar por diálogos complexos. Você usa o campo dialogAction na resposta da função do Lambda para direcionar o Amazon Lex para executar ações específicas. Por exemplo, você pode usar a ação do diálogo ElicitSlot para dizer ao Amazon Lex para solicitar ao usuário um valor de slot que não é necessário. Se você tiver um prompt de esclarecimento definido, poderá usar a ação de diálogo ElicitIntent para obter uma nova intenção quando o usuário terminar de usar a anterior.

Para obter mais informações, consulte Uso de funções do Lambda.