Fase 2a (facoltativo): Revisione dei dettagli del flusso di informazioni parlate (console) - Amazon Lex versione 1

Se utilizzi Amazon Lex V2, consulta invece la guida Amazon Lex V2.

 

Se utilizzi Amazon Lex V1, ti consigliamo di aggiornare i bot ad Amazon Lex V2. Non stiamo più aggiungendo nuove funzionalità alla V1 e consigliamo vivamente di utilizzare la V2 per tutti i nuovi bot.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fase 2a (facoltativo): Revisione dei dettagli del flusso di informazioni parlate (console)

Questa sezione spiega il flusso di informazioni tra il client e Amazon Lex quando il client utilizza la voce per inviare richieste. Per ulteriori informazioni, consulta PostContent.

  1. L'utente afferma: Vorrei ordinare dei fiori.

    1. Il client (console) invia la seguente richiesta PostContent ad 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

      Sia l'URI della richiesta che il corpo forniscono informazioni ad Amazon Lex:

      • URI di richiesta: fornisce il nome del bot (OrderFlowers), l'alias del bot ($LATEST) e il nome utente (una stringa casuale che identifica l'utente). contentindica che si tratta di una richiestaPostContent API (non di unaPostText richiesta).

      • Intestazioni della richiesta

        • x-amz-lex-session-attributes— Il valore con codifica base64 rappresenta «{}». Quando il client effettua la prima richiesta non vi sono attributi della sessione.

        • Content-Type: riflette il formato audio.

      • Corpo della richiesta: il flusso audio dell'input utente ("I would like to order some flowers.").

      Nota

      Se invece di usare la voce, l'utente sceglie di inviare una parte di testo ("I would like to order some flowers") all'API PostContent, il corpo della richiesta sarà l'input utente. L'intestazione Content-Type viene impostata di conseguenza:

      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
    2. Dal flusso di input, Amazon Lex rileva l'intento (OrderFlowers). Quindi, sceglie uno degli slot di intenti (in questo caso, FlowerType) e uno dei relativi prompt per l'ottenimento del valore, infine invia una risposta con le seguenti intestazioni:

      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==

      I valori dell'intestazione forniscono le informazioni seguenti:

      • x-amz-lex-input-transcript: fornisce la trascrizione dell'audio (input utente) dalla richiesta

      • x-amz-lex-message— Fornisce la trascrizione dell'audio che Amazon Lex ha restituito nella risposta

      • x-amz-lex-slots: la versione codificata base64 di slot e valori:

        {"PickupTime":null,"FlowerType":null,"PickupDate":null}
      • x-amz-lex-session-attributes: la versione codificata base64 degli attributi della sessione ({})

      Il client riproduce l'audio nel corpo della risposta.

  2. L'utente pronuncia: rose

    1. Il client (console) invia la seguente richiesta PostContent ad 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")

      Il corpo della richiesta è il flusso audio dell'input utente (rose). sessionAttributes rimane vuoto.

    2. Amazon Lex interpreta il flusso di input nel contesto dell'intento corrente (ricorda di aver chiesto a questo utente informazioni relative alloFlowerType slot). Amazon Lex aggiorna innanzitutto il valore dello slot per l'intento corrente. Quindi sceglie un altro slot (PickupDate), insieme a uno dei relativi messaggi di richiesta (Quando vuoi ritirare le rose?), e restituisce una risposta con le seguenti intestazioni:

      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=

      I valori dell'intestazione forniscono le informazioni seguenti:

      • x-amz-lex-slots: la versione codificata base64 di slot e valori:

        {"PickupTime":null,"FlowerType":"roses","PickupDate":null}
      • x-amz-lex-session-attributes: la versione codificata base64 degli attributi della sessione ({})

      Il client riproduce l'audio nel corpo della risposta.

  3. L'utente pronuncia: domani

    1. Il client (console) invia la seguente richiesta PostContent ad 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")

      Il corpo della richiesta è il flusso audio dell'input utente ("tomorrow"). sessionAttributes rimane vuoto.

    2. Amazon Lex interpreta il flusso di input nel contesto dell'intento corrente (ricorda di aver chiesto a questo utente informazioni relative alloPickupDate slot). Amazon Lex aggiorna il valore dello slot (PickupDate) per l'intento corrente. Quindi sceglie un altro slot per recuperare il valore di (PickupTime) e uno dei prompt di ottenimento del valore (Quando vuoi ritirare le rose il 18/03/2018?), infine restituisce una risposta con le seguenti intestazioni:

      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

      I valori dell'intestazione forniscono le informazioni seguenti:

      • x-amz-lex-slots: la versione codificata base64 di slot e valori:

        {"PickupTime":null,"FlowerType":"roses","PickupDate":"2017-03-18"}
      • x-amz-lex-session-attributes: la versione codificata base64 degli attributi della sessione ({})

      Il client riproduce l'audio nel corpo della risposta.

  4. L'utente pronuncia: 18

    1. Il client (console) invia la seguente richiesta PostContent ad 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")

      Il corpo della richiesta è il flusso audio dell'input utente ("6 pm"). sessionAttributes rimane vuoto.

    2. Amazon Lex interpreta il flusso di input nel contesto dell'intento corrente (ricorda di aver chiesto a questo utente informazioni relative alloPickupTime slot). Innanzitutto aggiorna il valore dello slot dell'intento corrente.

      Ora Amazon Lex rileva di avere informazioni per tutti gli slot. Tuttavia, poiché l'intento OrderFlowers è configurato con un messaggio di conferma, Pertanto, Amazon Lex necessita di una conferma esplicita da parte dell'utente prima di poter procedere a soddisfare l'intento. e pertanto invia una risposta con le intestazioni seguenti per richiedere una conferma prima di ordinare i fiori:

      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

      I valori dell'intestazione forniscono le informazioni seguenti:

      • x-amz-lex-slots: la versione codificata base64 di slot e valori:

        {"PickupTime":"18:00","FlowerType":"roses","PickupDate":"2017-03-18"}
      • x-amz-lex-session-attributes: la versione codificata base64 degli attributi della sessione ({})

      Il client riproduce l'audio nel corpo della risposta.

  5. L'utente pronuncia: Sì

    1. Il client (console) invia la seguente richiesta PostContent ad 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")

      Il corpo della richiesta è il flusso audio dell'input utente ("Yes"). sessionAttributes rimane vuoto.

    2. Amazon Lex interpreta il flusso di input e capisce che l'utente desidera procedere con l'ordine. L'intento OrderFlowers è configurato con ReturnIntent come attività di l'attività di adempimento. Questo indica ad Amazon Lex di restituire tutti i dati relativi alle intenzioni al client. Amazon Lex restituisce una risposta con quanto segue:

      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==

      L'intestazione della risposta x-amz-lex-dialog-state è impostata su ReadyForFulfillment. Quindi il client può realizzare l'intento.

  6. A questo punto, esegui nuovamente il test del bot. Per stabilire un nuovo contesto (utente), scegli il collegamento Clear (Cancella) nella console. Fornisci i dati per l'intento OrderFlowers e includi alcuni dati non validi. Ad esempio:

    • Gelsomino come tipo di fiore (non è uno dei tipi di fiore supportati)

    • Ieri come giorno in cui si desidera ritirare i fiori

    Nota che il bot accetta questi valori perché non disponi di alcun codice per inizializzare e convalidare i dati utente. Nella sezione successiva, aggiungi una funzione Lambda per eseguire questa operazione. Si noti quanto segue in relazione alla funzione Lambda:

    • Convalida i dati dello slot dopo ogni input utente. Soddisfa l'intento alla fine. Ciò significa che il bot elabora l'ordine di fiori e restituisce un messaggio all'utente invece che restituire semplicemente i dati dello slot al client. Per ulteriori informazioni, consulta Utilizzo delle funzioni Lambda.

    • Inoltre, imposta gli attributi di sessione. Per ulteriori informazioni sugli attributi di sessione, consulta PostText.

      Al termine della sezione Nozioni di base, potrai eseguire gli esercizi aggiuntivi (Esempi aggiuntivi: creazione di bot Amazon Lex). Prenota viaggio utilizza gli attributi di sessione per condividere le informazioni tra intenti per impegnarsi in una conversazione dinamica con l'utente.

Fase successiva

Fase 3: creazione di una funzione Lambda