Modello di programmazione - Amazon Lex versione 1

Avviso di fine del supporto: il 15 settembre 2025 AWS interromperà il supporto per Amazon Lex V1. Dopo il 15 settembre 2025, non potrai più accedere alla console Amazon Lex V1 o alle risorse Amazon Lex V1. Se utilizzi Amazon Lex V2, consulta invece la guida Amazon Lex V2.

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 intent, tipo di slot, alias e associazione di canali 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 per la creazione di modelli tramite il programma 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 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.

Puoi anche creare funzioni Lambda e utilizzarle in un intento. Usa questi code hook di 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 utilizzi un'operazione Put API—PutBot, PutBotAliasPutIntent, o PutSlotType —per aggiornare una risorsa, devi superare 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.

Le Get operazioni— GetBotGetIntent, e GetSlotType —alla 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 input vocali o testuali 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 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 gli enunciati, ovvero input di testo o voce 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 dell'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 dati sugli slot, come le dimensioni della pizza, i condimenti e il numero di pizze. Dopo che l'utente ha fornito tutti i dati dello 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 di call center automatizzata 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 di testo e vocali ad Amazon Lex. Puoi usare questa finestra di prova negli esercizi Guida introduttiva ad Amazon Lex.

Lambda funziona come code hook

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 richiede i condimenti per pizza disponibili, puoi utilizzare la conoscenza precedente 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'intento 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 configuri un intento, specifichi le funzioni Lambda come code hook nelle seguenti posizioni:

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

  • Fulfillment code 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 i code hook nella console Amazon Lex, come mostrato nella seguente schermata:

La console Amazon Lex che mostra i code hook 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 hanno un campo che identifica il chiamante come dialogo o gancio di codice di adempimento. È possibile utilizzare queste informazioni per eseguire la parte appropriata del codice.

Puoi usare una funzione Lambda per creare un bot in grado di navigare in dialoghi complessi. Utilizza il dialogAction campo nella risposta della funzione Lambda per indirizzare Amazon Lex a intraprendere azioni specifiche. Ad esempio, puoi utilizzare l'azione di ElicitSlot dialogo per dire ad Amazon Lex di chiedere all'utente un valore di slot che non è richiesto. 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.