Come posso modificare il flusso del mio bot Amazon Lex utilizzando una funzione AWS Lambda di inizializzazione/convalida o di adempimento?

Ultimo aggiornamento: 27/05/2022

Desidero modificare il flusso del mio bot Amazon Lex utilizzando una funzione AWS Lambda di inizializzazione/convalida o adempimento. Come posso eseguire questa operazione utilizzando la console Amazon Lex?

Breve descrizione

Puoi utilizzare gli hook di codice AWS Lambda di inizializzazione/convalida o adempimento per apportare modifiche al flusso di dialogo del tuo bot Amazon Lex. La console Amazon Lex fornisce il campo dialogAction, che indirizza Amazon Lex nella linea di operazioni successiva da eseguire nella sua interazione con gli utenti. Questo campo descrive ad Amazon Lex cosa aspettarsi da un utente dopo aver restituito una risposta al client.

Il campo type indica la linea di operazioni successiva per il bot. Determina anche gli altri campi che la funzione Lambda deve fornire come parte del valore dialogAction. Esisono cinque tipi:

  1. ElicitIntent: informa Amazon Lex che l'utente deve rispondere con un enunciato che include un intento.
  2. ElicitSlot: informa Amazon Lex che l'utente deve fornire un valore di slot nella risposta.
  3. Close: informa Amazon Lex che non c'è bisogno di una risposta da parte dell'utente. Ad esempio, "Il tuo ordine di pizza è stato effettuato" non richiede una risposta.
  4. ConfirmIntent: informa Amazon Lex che l'utente è tenuto a dare una risposta sì o no per confermare o negare l'intenzione corrente.
  5. Delegate: ordina ad Amazon Lex di scegliere la linea di operazioni successiva in base alla configurazione del bot

Risoluzione

Nota: la procedura descritta in questo articolo utilizza la versione V2 della console Amazon Lex. Se stai usando la versione V1, scegli Passa alla nuova console Lex v2 nel pannello di navigazione.

La sintassi della risposta Lambda specifica il formato in cui Amazon Lex si aspetta una risposta dalla funzione Lambda.

Rivedi le seguenti informazioni sui campi di risposta:

  • sessionState: questo campo è obbligatorio. Descrive lo stato attuale della conversazione con l'utente. Il contenuto effettivo della struttura dipende dal tipo di operazione della finestra di dialogo.
  • dialogAction: questo campo determina il tipo di operazione che Amazon Lex deve eseguire in risposta alla funzione Lambda. Il campo type è sempre obbligatorio. Il campo slotToElicit è obbligatorio solo quando dialogAction.type è ElicitSlot.
  • intent: il nome dell'intento utilizzato da Amazon Lex. Questo campo non è obbligatorio quando dialogAction.type è Delegate o ElicitIntent.
  • state: questo campo è obbligatorio. Lo stato può essere ReadyForFulfillment solo se dialogAction.type è Delegate.
  • messages: questo campo è obbligatorio se dialogAction.type è ElicitIntent. Descrive uno o più messaggi che Amazon Lex mostra al cliente per eseguire il turno successivo della conversazione. Se non fornisci messaggi, Amazon Lex utilizza un messaggio appropriato che hai definito al momento della creazione del bot. Per ulteriori informazioni, consulta il tipo di dati Message.
  • contentType: descrive il tipo di messaggio da utilizzare.
  • content: se il tipo di messaggio è PlainText, CustomPayload o SSML, questo campo contiene il messaggio da inviare all'utente.
  • imageResponseCard: se il tipo di messaggio è ImageResponseCard, questo campo contiene la definizione della scheda di risposta da mostrare all'utente. Per ulteriori informazioni, consulta il tipo di dati ImageResponseCard.

Modifica il flusso della finestra di dialogo utilizzando il tipo ElicitSlot

Per modificare il flusso della finestra di dialogo utilizzando il tipo ElicitSlot, passa la risposta dall'hook del codice Lambda in questo formato:

{
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "<slot-name-to-elicit>",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "<intent-name-to-elicit>",
            "state": "<state>"
        }
    }
}

Dopo aver restituito la risposta, Amazon Lex genera uno slot denominato slot-name-to-elicit appartenente all'intento intent-name-to-elicit.

Modifica del flusso della finestra di dialogo utilizzando il tipo ElicitIntent

Per modificare il flusso della finestra di dialogo utilizzando il tipo ElicitIntent, passa la risposta dall'hook del codice Lambda in questo formato:

   {
     "sessionState": {
         "dialogAction": {
             "type": "ElicitIntent"
         }
     },
     "messages": [{
         "contentType": "<content-type>",
         "content": "<message>"
     }]
 }

Dopo aver restituito questa risposta, il messaggio specificato nel segnaposto del messaggio viene visualizzato all'utente. Il successivo input dell'utente viene considerato come un enunciato intento, che richiama l'intento con il punteggio nluConfidence più alto.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?