Modello di programmazione - 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à.

Modello di programmazione

Un bot è il tipo di risorsa principale in Amazon Lex. Gli altri tipi di risorse in Amazon Lex sono l'intento, il tipo di slot, l'alias e l'associazione dei canali del bot.

Puoi creare un bot utilizzando la console Amazon Lex o l'API per la creazione di modelli. La console fornisce un'interfaccia utente grafica che puoi usare per creare un bot pronto per la produzione per la tua applicazione. Se preferisci, puoi utilizzare l'API di costruzione del modello tramite la AWS CLI o il tuo programma personalizzato per creare un bot.

Dopo aver creato un bot, devi distribuirlo in una delle piattaforme supportate oppure devi integrarlo nella tua applicazione. Quando un utente interagisce con il bot, l'applicazione client invia richieste al bot utilizzando l'API di runtime di Amazon Lex. Ad esempio, quando un utente dice «Voglio ordinare una pizza», il cliente invia questo input ad Amazon Lex utilizzando una delle operazioni API di runtime. Gli utenti possono fornire input vocali o di testo.

È inoltre possibile creare funzioni Lambda e utilizzarle con un intento. Utilizza questi hook di codice delle funzioni Lambda per eseguire attività di runtime come l'inizializzazione, la convalida dell'input dell'utente e l'adempimento degli intenti. Nelle sezioni seguenti vengono fornite informazioni aggiuntive.

Operazioni API di costruzione dei modelli

Per creare in modo programmatico bot, intenti e tipi di slot, puoi utilizzare le operazioni API di costruzione dei modelli. Puoi anche utilizzare l'API di costruzione dei modelli per gestire, aggiornare ed eliminare risorse per il tuo bot. Le operazioni API di costruzione dei modelli includono:

Puoi utilizzare l'API di creazione di modelli per creare strumenti personalizzati per gestire le tue risorse Amazon Lex. Ad esempio, esiste un limite di 100 versioni per ogni bot, intento e tipo di slot. Puoi utilizzare l'API di costruzione dei modelli per creare uno strumento che elimini automaticamente le vecchie versioni quando il tuo bot si avvicina al limite.

Per assicurarsi che una sola operazione aggiorni una risorsa alla volta, Amazon Lex utilizza i checksum. Quando si utilizza un'operazionePut API—PutBotPutBotAliasPutIntent, oPutSlotType —per aggiornare una risorsa, è necessario passare il checksum corrente della risorsa nella richiesta. Se due strumenti tentano di aggiornare una risorsa contemporaneamente, entrambi forniscono lo stesso checksum corrente. La prima richiesta per raggiungere Amazon Lex corrisponde al checksum corrente della risorsa. Nel momento in cui arriva la seconda richiesta, il checksum è differente. Il secondo strumento riceve un'eccezione PreconditionFailedException e l'aggiornamento termina.

LeGet operazioniGetBot, eGetIntent, allaGetSlotType fine sono coerenti. Se utilizzi un'operazione Get immediatamente dopo aver creato o modificato una risorsa con una delle operazioni Put, le modifiche potrebbero non essere restituite. Dopo che un'operazione Get restituisce l'aggiornamento più recente, restituisce sempre quella risorsa aggiornata fino a quando la risorsa non viene nuovamente modificata. È possibile determinare se una risorsa aggiornata è stata restituita osservando il checksum.

Operazioni API di runtime

Le applicazioni client utilizzano le seguenti operazioni API di runtime per comunicare con Amazon Lex:

  • PostContent— Accetta l'input vocale o testuale e restituisce informazioni sull'intento e un messaggio di testo o vocale da trasmettere all'utente. Attualmente, Amazon Lex supporta i formati audio seguenti:

     

    Formati audio di input: LPCM e Opus

    Formati audio di output: MPEG, OGG e PCM

     

    L'operazione PostContent supporta input audio a 8 kHz e 16 kHz. Le applicazioni in cui l'utente finale parla con Amazon Lex al telefono, come un call center automatizzato, possono trasmettere direttamente un audio a 8 kHz.

     

  • PostText: prende il testo come input e restituisce informazioni sull'intento e un messaggio di testo da comunicare all'utente.

L'applicazione client utilizza l'API di runtime per chiamare un bot Amazon Lex specifico per elaborare le espressioni: testo o input vocale dell'utente. Ad esempio, supponiamo che un utente dica "Voglio una pizza". Il client invia questo input utente a un bot utilizzando una delle operazioni API di runtime di Amazon Lex. Dall'input dell'utente, Amazon Lex riconosce che la richiesta dell'utente riguarda l'OrderPizzaintento definito nel bot. Amazon Lex coinvolge l'utente in una conversazione per raccogliere le informazioni richieste o i dati relativi agli slot, come le dimensioni della pizza, i condimenti e il numero di pizze. Dopo che l'utente ha fornito tutti i dati di slot necessari, Amazon Lex richiama l'hook del codice della funzione Lambda per soddisfare l'intento o restituisce i dati dell'intento al client, a seconda di come è configurato l'intento.

Usa l'operazione PostContent quando il tuo bot utilizza l'input vocale. Ad esempio, un'applicazione automatizzata per call center può inviare messaggi vocali a un bot Amazon Lex anziché a un agente per rispondere alle richieste dei clienti. Puoi utilizzare il formato audio a 8 kHz per inviare l'audio direttamente dal telefono ad Amazon Lex.

La finestra di test nella console Amazon Lex utilizza l'PostContentAPI per inviare richieste vocali e di testo ad Amazon Lex. Puoi usare questa finestra di prova negli esercizi Guida introduttiva ad Amazon Lex.

Funzioni Lambda come ganci di codice

Puoi configurare il tuo bot Amazon Lex per richiamare una funzione Lambda come hook di codice. L'hook di codice può servire a più scopi:

  • Personalizza l'interazione con l'utente: ad esempio, quando Joe chiede i condimenti disponibili per la pizza, puoi utilizzare una conoscenza preliminare delle scelte di Joe per visualizzare un sottoinsieme di condimenti.

  • Convalida l'input dell'utente, supponiamo che Jen voglia raccogliere fiori fuori orario. È possibile convalidare l'ora che Jen inserisce e inviare una risposta appropriata.

  • Soddisfa l'intenzione dell'utente: dopo che Joe ha fornito tutte le informazioni per il suo ordine di pizza, Amazon Lex può richiamare una funzione Lambda per effettuare l'ordine presso una pizzeria locale.

Quando si configura un intento, si specificano le funzioni Lambda come hook di codice nei seguenti punti:

  • Hook di codice di dialogo per l'inizializzazione e la convalida: questa funzione Lambda viene richiamata su ogni input dell'utente, supponendo che Amazon Lex abbia compreso l'intento dell'utente.

  • Codice di adempimento Hook: questa funzione Lambda viene richiamata dopo che l'utente ha fornito tutti i dati dello slot necessari per soddisfare l'intento.

Scegli l'intento e imposta gli hook di codice nella console Amazon Lex, come mostrato nella schermata seguente:

La console Amazon Lex che mostra gli hook del codice delle funzioni Lambda.

È anche possibile impostare gli hook dei codici utilizzando i campi dialogCodeHook e fulfillmentActivity nell'operazione PutIntent.

Una funzione Lambda può eseguire l'inizializzazione, la convalida e l'adempimento. I dati sugli eventi ricevuti dalla funzione Lambda contengono un campo che identifica il chiamante come finestra di dialogo o codice di evasione. È possibile utilizzare queste informazioni per eseguire la parte di codice appropriata.

È possibile utilizzare una funzione Lambda per creare un bot in cui è possibile utilizzare una funzione Lambda per creare un bot in cui è possibile navigare in una finestra di dialogo di più. Utilizzi ildialogAction campo nella risposta della funzione Lambda per indirizzare Amazon Lex a intraprendere azioni specifiche. Ad esempio, puoi utilizzare l'azioneElicitSlot di dialogo per dire ad Amazon Lex di chiedere all'utente un valore di slot non obbligatorio. Se è stato definito un prompt di chiarimento, è possibile utilizzare l'operazione della finestra di dialogo ElicitIntent per ottenere un nuovo intento quando l'utente ha terminato con quello precedente.

Per ulteriori informazioni, consulta Utilizzo delle funzioni Lambda.