Iniciando um stream para um bot - Amazon Lex

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

Iniciando um stream para um bot

Você usa a StartConversationoperação para iniciar um stream entre o usuário e o bot Amazon Lex V2 em seu aplicativo. APOST solicitação do aplicativo estabelece uma conexão entre seu aplicativo e o bot Amazon Lex V2. Isso permite que seu aplicativo e o bot comecem a trocar informações entre si por meio de eventos.

AStartConversation operação é suportada somente nos seguintes SDKs:

O primeiro evento que seu aplicativo deve enviar para o bot Amazon Lex V2 é um ConfigurationEvent. Esse evento inclui informações como o formato do tipo de resposta. A seguir estão os parâmetros que você pode usar em um evento de configuração:

  • responseContentType— Determina se o bot responde à entrada do usuário com texto ou fala.

  • sessionState — Informações relacionadas à sessão de streaming com o bot, como intenção predeterminada ou estado do diálogo.

  • WelcomeMessages — Especifica as mensagens de boas-vindas que são reproduzidas para o usuário no início da conversa com um bot. Essas mensagens são reproduzidas antes que o usuário forneça qualquer entrada. Para ativar uma mensagem de boas-vindas, você também deve especificar valores para osdialogAction parâmetrossessionState e.

  • DisablePlayback — Determina se o bot deve esperar por uma sugestão do cliente antes de começar a ouvir a entrada do chamador. Por padrão, a reprodução é ativada, então o valor desse campo éfalse.

  • requestAttributes — Fornece informações adicionais para a solicitação.

Para obter informações sobre como especificar valores para os parâmetros anteriores, consulte o tipo de ConfigurationEventdados da StartConversationoperação.

Cada stream entre um bot e seu aplicativo só pode ter um evento de configuração. Depois que seu aplicativo enviar um evento de configuração, o bot poderá receber comunicações adicionais do seu aplicativo.

Se você especificou que seu usuário está usando áudio para se comunicar com o bot Amazon Lex V2, seu aplicativo pode enviar os seguintes eventos para o bot durante essa conversa:

  • AudioInputEvent— Contém um fragmento de áudio com tamanho máximo de 320 bytes. Seu aplicativo deve usar vários eventos de entrada de áudio para enviar uma mensagem do servidor para o bot. Cada evento de entrada de áudio no stream deve ter o mesmo formato de áudio.

  • DTMFInputEvent — Envia uma entrada DTMF para o bot. Cada pressionamento de tecla DTMF corresponde a um único evento.

  • PlaybackCompletionEvent— Informa ao servidor que uma resposta da entrada do usuário foi reproduzida para ele. Você deve usar um evento de conclusão de reprodução se estiver enviando uma resposta de áudio para o usuário. Se o seu eventodisablePlayback de configuração fortrue, você não poderá usar esse recurso.

  • DisconnectionEvent— Informa ao bot que o usuário se desconectou da conversa.

Se você especificou que o usuário está usando texto para se comunicar com o bot, seu aplicativo pode enviar os seguintes eventos para o bot durante essa conversa:

  • TextInputEvent— Texto enviado do seu aplicativo para o bot. Você pode ter até 512 caracteres em um evento de entrada de texto.

  • PlaybackCompletionEvent— Informa ao servidor que uma resposta da entrada do usuário foi reproduzida para ele. Você deve usar esse evento se estiver reproduzindo áudio para o usuário. Se o seu eventodisablePlayback de configuração fortrue, você não poderá usar esse recurso.

  • DisconnectionEvent— Informa ao bot que o usuário se desconectou da conversa.

Você deve codificar cada evento enviado para um bot Amazon Lex V2 no formato correto. Para obter mais informações, consulte Codificação do fluxo de eventos.

Cada evento tem um ID de evento. Para ajudar a solucionar quaisquer problemas que possam ocorrer no stream, atribua um ID de evento exclusivo a cada evento de entrada. Em seguida, você pode solucionar qualquer falha de processamento com o bot.

O Amazon Lex V2 também usa timestamps para cada evento. Você pode usar esses carimbos de data e hora, além do ID do evento, para ajudar a solucionar qualquer problema de transmissão de rede.

Durante a conversa entre o usuário e o bot Amazon Lex V2, o bot pode enviar os seguintes eventos de saída em resposta ao usuário:

  • IntentResultEvent— Contém a intenção que o Amazon Lex V2 determinou a partir da declaração do usuário. Cada evento de resultado interno inclui:

    • InputMode — O tipo de expressão do usuário. Os valores válidos são Speech, DTMF ou Text.

    • interpretações — Interpretações que o Amazon Lex V2 determina a partir da expressão do usuário.

    • requestAttributes — Se você não modificou os atributos da solicitação usando uma função lambda, esses são os mesmos atributos que foram passados no início da conversa.

    • sessionId — Identificador de sessão usado para a conversa.

    • sessionState — O estado da sessão do usuário com o Amazon Lex V2.

  • TranscriptEvent— Se o usuário fornecer uma entrada para seu aplicativo, esse evento conterá a transcrição da declaração do usuário para o bot. Seu aplicativo não recebe umTranscriptEvent se não houver nenhuma entrada do usuário.

    O valor do evento de transcrição enviado ao seu aplicativo depende de você ter especificado áudio (fala e DMTF) ou texto como modo de conversa:

    • Transcrição da entrada de fala — Se o usuário estiver falando com o bot, o evento de transcrição será a transcrição do áudio do usuário. É uma transcrição de todo o discurso desde o momento em que o usuário começa a falar até o momento em que ele termina de falar.

    • Transcrição da entrada DTMF — Se o usuário estiver digitando em um teclado, o evento de transcrição conterá todos os dígitos que o usuário pressionou na entrada.

    • Transcrição da entrada de texto — Se o usuário estiver fornecendo entrada de texto, o evento de transcrição conterá todo o texto na entrada do usuário.

  • TextResponseEvent— Contém a resposta do bot em formato de texto. Uma resposta de texto é retornada por padrão. Se você configurou o Amazon Lex V2 para retornar uma resposta de áudio, esse texto será usado para gerar uma resposta de áudio. Cada evento de resposta de texto contém uma matriz de objetos de mensagem que o bot retorna ao usuário.

  • AudioResponseEvent— Contém a resposta de áudio sintetizada a partir do texto gerado noTextResponseEvent. Para receber eventos de resposta de áudio, você deve configurar o Amazon Lex V2 para fornecer uma resposta de áudio. Todos os eventos de resposta de áudio têm o mesmo formato de áudio. Cada evento contém trechos de áudio de no máximo 100 bytes. O Amazon Lex V2 envia um trecho de áudio vazio com obytes campo definido comonull para indicar o fim do evento de resposta de áudio para seu aplicativo.

  • PlaybackInterruptionEvent— Quando um usuário interrompe uma resposta que o bot enviou ao seu aplicativo, o Amazon Lex V2 aciona esse evento para interromper a reprodução da resposta.

  • HeartbeatEvent— O Amazon Lex V2 envia esse evento periodicamente para evitar que a conexão entre seu aplicativo e o bot atinja o tempo limite.

Sequência temporal de eventos para uma conversa em áudio

Os diagramas a seguir mostram uma conversa de streaming de áudio entre um usuário e um bot Amazon Lex V2. O aplicativo transmite áudio continuamente para o bot, e o bot procura a entrada do usuário a partir do áudio. Neste exemplo, tanto o usuário quanto o bot estão usando a fala para se comunicar. Cada diagrama corresponde a um enunciado do usuário e à resposta do bot a esse enunciado.

O diagrama a seguir mostra o início de uma conversa entre o aplicativo e o bot. A transmissão começa no tempo zero (t0).

A lista a seguir descreve os eventos do diagrama anterior.

  • t0: O aplicativo envia um evento de configuração ao bot para iniciar o stream.

  • t1: O aplicativo transmite dados de áudio. Esses dados são divididos em uma série de eventos de entrada do aplicativo.

  • t2: Para a expressão 1 do usuário, o bot detecta um evento de entrada de áudio quando o usuário começa a falar.

  • t2: Enquanto o usuário está falando, o bot envia um evento de pulsação para manter a conexão. Ele envia esses eventos de forma intermitente para garantir que a conexão não atinge o tempo limite.

  • t3: O bot detecta o final da declaração do usuário.

  • t4: O bot envia de volta um evento de transcrição que contém uma transcrição da fala do usuário para o aplicativo. Este é o começo da resposta do bot à declaração do usuário 1.

  • t5: O bot envia um evento de resultado de intenção para indicar a ação que o usuário deseja realizar.

  • t6: O bot começa a fornecer sua resposta como texto em um evento de resposta de texto.

  • t7: O bot envia uma série de eventos de resposta de áudio ao aplicativo para serem reproduzidos para o usuário.

  • t8: O bot envia outro evento de pulsação para manter a conexão de forma intermitente.

O diagrama a seguir é uma continuação do diagrama anterior. Ele mostra o aplicativo enviando um evento de conclusão de reprodução para o bot para indicar que ele parou de reproduzir a resposta de áudio para o usuário. O aplicativo reproduz a resposta do bot à expressão 1 do usuário para o usuário. O usuário responde à resposta do bot à declaração do usuário 1 com a expressão do usuário 2.

A lista a seguir descreve os eventos do diagrama anterior:

  • t10: O aplicativo envia um evento de conclusão da reprodução para indicar que terminou de reproduzir a mensagem do bot para o usuário.

  • t11: O aplicativo envia a resposta do usuário de volta ao bot como declaração do usuário 2.

  • t12: Para a resposta do bot à expressão do usuário 2, o bot espera que o usuário pare de falar e, em seguida, começa a fornecer uma resposta de áudio.

  • t13: Enquanto o bot envia a resposta do bot à declaração 2 do usuário para o aplicativo, o bot detecta o início da expressão 3 do usuário. O bot interrompe a resposta do bot à declaração 2 do usuário e envia um evento de interrupção da reprodução.

  • t14: O bot envia um evento de interrupção de reprodução para o aplicativo para sinalizar que o usuário interrompeu o prompt.

O diagrama a seguir mostra a resposta do bot à declaração do usuário 3 e que a conversa continua depois que o bot responde à declaração do usuário.