Formato di evento di input e di risposta della funzione Lambda - 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à.

Formato di evento di input e di risposta della funzione Lambda

Questa sezione descrive la struttura dei dati dell'evento che Amazon Lex fornisce a una funzione Lambda. Utilizza queste informazioni per analizzare l'input nel codice Lambda. Illustra inoltre il formato della risposta che Amazon Lex prevede di ricevere in restituzione dalla funzione Lambda.

Formato dell'evento di input

Di seguito è riportato il formato generale di un evento Amazon Lex passato a una funzione Lambda. Fai riferimento a queste informazioni quando scrivi la tua funzione Lambda.

Nota

Il formato di input potrebbe cambiare senza che corrisponda una modifica in messageVersion. Il codice non dovrebbe generare errori se sono presenti nuovi campi.

{ "currentIntent": { "name": "intent-name", "nluIntentConfidenceScore": score, "slots": { "slot name": "value", "slot name": "value" }, "slotDetails": { "slot name": { "resolutions" : [ { "value": "resolved value" }, { "value": "resolved value" } ], "originalValue": "original text" }, "slot name": { "resolutions" : [ { "value": "resolved value" }, { "value": "resolved value" } ], "originalValue": "original text" } }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)" }, "alternativeIntents": [ { "name": "intent-name", "nluIntentConfidenceScore": score, "slots": { "slot name": "value", "slot name": "value" }, "slotDetails": { "slot name": { "resolutions" : [ { "value": "resolved value" }, { "value": "resolved value" } ], "originalValue": "original text" }, "slot name": { "resolutions" : [ { "value": "resolved value" }, { "value": "resolved value" } ], "originalValue": "original text" } }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)" } ], "bot": { "name": "bot name", "alias": "bot alias", "version": "bot version" }, "userId": "User ID specified in the POST request to Amazon Lex.", "inputTranscript": "Text used to process the request", "invocationSource": "FulfillmentCodeHook or DialogCodeHook", "outputDialogMode": "Text or Voice, based on ContentType request header in runtime API request", "messageVersion": "1.0", "sessionAttributes": { "key": "value", "key": "value" }, "requestAttributes": { "key": "value", "key": "value" }, "recentIntentSummaryView": [ { "intentName": "Name", "checkpointLabel": Label, "slots": { "slot name": "value", "slot name": "value" }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)", "dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close", "fulfillmentState": "Fulfilled or Failed", "slotToElicit": "Next slot to elicit" } ], "sentimentResponse": { "sentimentLabel": "sentiment", "sentimentScore": "score" }, "kendraResponse": { Complete query response from Amazon Kendra }, "activeContexts": [ { "timeToLive": { "timeToLiveInSeconds": seconds, "turnsToLive": turns }, "name": "name", "parameters": { "key name": "value" } } ] }

Tieni conto delle ulteriori informazioni seguenti sui campi di evento:

  • currentIntent: fornisce i campi name, slots, slotDetails e confirmationStatus dell'intento.

     

    nluIntentConfidenceScoreè la certezza che Amazon Lex ha che l'intento attuale è quello che meglio corrisponde all'intento attuale dell'utente.

     

    slotsè una mappa di nomi di slot, configurati per l'intento, per i valori degli slot che Amazon Lex ha riconosciuto nella conversazione con l'utente. Un valore di slot rimane null fino a quando l'utente non fornisca un valore.

     

    Il valore dello slot nell'evento di input potrebbe non corrispondere a uno dei valori configurati per lo slot. Ad esempio, se l'utente risponde al messaggio di richiesta "Quale colore preferisci per l'auto?" con «pizza», Amazon Lex restituirà «pizza» come valore dello slot. La funzione dovrebbe convalidare i valori per assicurare che questi abbiano senso nel contesto.

     

    slotDetails fornisce ulteriori informazioni su un valore dello slot. La matrice resolutions contiene un elenco di valori aggiuntivi riconosciuti per lo slot. Ciascuno slot può avere un massimo di cinque valori.

     

    Il campo originalValue contiene il valore che l'utente ha inserito per lo slot. Quando il tipo di slot è configurato per restituire il valore di risoluzione superiore come valore dello slot, originalValue potrebbe essere diverso dal valore del campo slots.

     

    confirmationStatus fornisce la risposta dell'utente a un messaggio di richiesta di conferma, se disponibile. Ad esempio, se Amazon Lex chiede «Vuoi ordinare una pizza grande al formaggio? », in base alla risposta dell'utente, il valore di questo campo può essereConfirmedoDenied. In caso contrario, il valore di questo campo è None.

     

    Se l'utente conferma l'intento, Amazon Lex imposta il campo suConfirmed. Se l'utente rifiuta l'intento, Amazon Lex imposta il valore suDenied.

     

    Nella risposta di conferma, un'enunciazione utente potrebbe fornire aggiornamenti dello slot. Ad esempio, l'utente potrebbe dire "Sì, modifica dimensione a media". In questo caso, l'evento Lambda successivo presenterà il valore dello slot aggiornato,PizzaSizeimpostato sumedium. Amazon Lex imposta ilconfirmationStatusaNone, in quanto l'utente ha modificato alcuni dati dello slot, richiedendo alla funzione Lambda di eseguire la convalida dei dati utente.

     

  • Intenti alternativi— Se abiliti i punteggi di fiducia, Amazon Lex restituisce fino a quattro intenti alternativi. Ogni intento include un punteggio che indica il livello di sicurezza di Amazon Lex che l'intento è l'intento corretto in base all'enunciato dell'utente.

     

    Il contenuto degli intenti alternativi è lo stesso del contenuto dellacurrentIntent. Per ulteriori informazioni, consultare Usare i punteggi di.

     

  • bot: informazioni sul bot che ha elaborato la richiesta.

    • name: nome del bot che ha elaborato la richiesta.

    • alias: alias della versione del bot che ha elaborato la richiesta.

    • version: versione del bot che ha elaborato la richiesta.

     

  • userId— Questo valore è fornito dall'applicazione client. Amazon Lex lo passa alla funzione Lambda.

     

  • inputTranscript: testo utilizzato per elaborare la richiesta.

    Se si tratta di un input di testo, il campo inputTranscript contiene il testo inserito dall'utente.

     

    In caso di input di flusso audio, il campo inputTranscript contiene il testo estratto dal flusso audio. Questo è il testo che viene effettivamente elaborato per riconoscere gli intenti e i valori dello slot.

     

  • invocationSource: per indicare perché Amazon Lex invoca la funzione Lambda imposta uno dei seguenti valori:

    • DialogCodeHook: Amazon Lex imposta questo valore per indirizzare la funzione Lambda all'inizializzazione della funzione e alla convalida dell'input di dati dell'utente.

       

      Quando l'intento è configurato per invocare una funzione Lambda come hook di codice di inizializzazione e di convalida, Amazon Lex invoca la funzione Lambda specificata su ciascun input dell'utente (enunciazione) dopo che Amazon Lex abbia compreso l'intento.

      Nota

      Se l'intento non è chiaro, Amazon Lex non sarà in grado di invocare la funzione Lambda.

       

    • FulfillmentCodeHook— Amazon Lex imposta questo valore per indirizzare la funzione Lambda all'adempimento di un intento.

       

      Se l'intento è configurato per invocare una funzione Lambda come hook di codice di adempimento, Amazon Lex imposta ilinvocationSourcea questo valore solo quando dispone di tutti i dati dello slot necessari per adempiere l'intento.

       

    Nella configurazione dell'intento, puoi avere due funzioni Lambda separate per inizializzare e convalidare i dati utente e adempiere l'intento. Puoi inoltre utilizzare una funzione Lambda per entrambe le operazioni. In questo caso, la funzione Lambda può utilizzareinvocationSourcevalore per seguire il percorso corretto del codice.

     

  • outputDialogMode: per ogni input dell'utente, il client invia la richiesta ad Amazon Lex utilizzando una delle operazioni API di runtime,PostContentoPostText. Amazon Lex utilizza i parametri della richiesta per determinare se la risposta al client è di testo o vocale, quindi imposta il campo di conseguenza.

     

    La funzione Lambda può utilizzare queste informazioni per generare un messaggio appropriato. Ad esempio, se il client prevede una risposta vocale, la funzione Lambda può restituire Speech Synthesis Markup Language (SSML) al posto del testo.

     

  • messageVersion: la versione del messaggio che identifica il formato dei dati di evento che giungono alla funzione Lambda e il formato previsto della risposta da parte di una funzione Lambda.

    Nota

    Puoi configurare questo valore quando definisci un intento. Nell'implementazione corrente, è supportata solo la versione 1.0 dei messaggi. Pertanto, la console presuppone il valore predefinito di 1.0 e non mostra la versione del messaggio.

  • sessionAttributes— Attributi di sessione specifici dell'applicazione che il client invia nella richiesta. Se vuoi che Amazon Lex li includa nella risposta al client, la funzione Lambda deve inviarli ad Amazon Lex nella risposta. Per ulteriori informazioni, consultaImpostazione degli attributi di sessione

     

  • requestAttributes— Attributi specifici della richiesta che il client invia nella richiesta. Utilizza gli attributi di richiesta per inviare informazioni che non devono essere conservate per l'intera sessione. Se non ci sono attributi della richiesta, il valore sarà null. Per ulteriori informazioni, consultaImpostazione degli attributi di richiesta

     

  • recentIntentSummaryView— Informazioni sullo stato di un intento. È possibile visualizzare informazioni sugli ultimi tre intenti utilizzati. Queste informazioni possono essere usate per impostare i valori nell'intento o per tornare a un intento precedente. Per ulteriori informazioni, consultare Gestione di sessioni con l'API di Amazon Lex.

     

  • sentimentResponse— Il risultato dell'analisi di un sentiment di Amazon Comprehend dell'ultimo enunciato. È possibile utilizzare queste informazioni per gestire il flusso di conversazione del bot in base all'emozione espressa dall'utente. Per ulteriori informazioni, consultare Analisi delle emozioni.

     

  • kendraResponse— Il risultato di una query su un indice Amazon Kendra. Presente solo nell'input a un hook di codice di adempimento e solo quando l'intento estende l'intento integrato AMAZON.KendraSearchIntent. Il campo contiene l'intera risposta della ricerca di Amazon Kendra. Per ulteriori informazioni, consultare AMAZON.KendraSearchIntent.

     

  • Contesti attivi— Uno o più contesti attivi durante questo turno di una conversazione con l'utente.

    • TimeToLive— Il periodo di tempo o il numero di turni nella conversazione con l'utente in cui il contesto rimane attivo.

    • nome— il nome del contesto.

    • parametriun elenco di coppie chiave/valore che contiene il nome e il valore degli slot dall'intento che ha attivato il contesto.

    Per ulteriori informazioni, consultare Impostazione del contesto dell'intento.

Formato della risposta

Amazon Lex prevede una risposta da una funzione Lambda nel formato seguente:

{ "sessionAttributes": { "key1": "value1", "key2": "value2" ... }, "recentIntentSummaryView": [ { "intentName": "Name", "checkpointLabel": "Label", "slots": { "slot name": "value", "slot name": "value" }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)", "dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close", "fulfillmentState": "Fulfilled or Failed", "slotToElicit": "Next slot to elicit" } ], "activeContexts": [ { "timeToLive": { "timeToLiveInSeconds": seconds, "turnsToLive": turns }, "name": "name", "parameters": { "key name": "value" } } ], "dialogAction": { "type": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close", Full structure based on the type field. See below for details. } }

La risposta è costituita da quattro campi. LasessionAttributes,recentIntentSummaryView, eactiveContextsi campi sono facoltativi,dialogActionè obbligatorio. Il contenuto del campo dialogAction dipende dal valore del campo type. Per dettagli, consultare dialogAction.

sessionAttributes

Facoltativo. Se includi il campo sessionAttributes, questo può essere vuoto. Se la funzione Lambda non restituisce gli attributi di sessione, l'ultimo notosessionAttributespassata tramite l'API o la funzione Lambda rimangono. Per maggiori informazioni, consulta le operazioni PostContent e PostText.

"sessionAttributes": { "key1": "value1", "key2": "value2" }

recentIntentSummaryView

Facoltativo. Se incluso, imposta i valori per uno o più intenti recenti. È possibile includere informazioni per un massimo di tre intenti. Ad esempio, puoi impostare i valori per gli intenti precedenti in base alle informazioni raccolte dall'intento corrente. Le informazioni contenute nel riepilogo devono essere valide per l'intento. Ad esempio, il nome dell'intento deve essere un intento nel bot. Se includi un valore di slot nella visualizzazione riepilogo, lo slot deve essere presente nell'intento. Se non includi la recentIntentSummaryView nella risposta, tutti i valori degli intenti recenti rimangono invariati. Per ulteriori informazioni, vedere l'operazione PutSession o il tipo di dati IntentSummary.

"recentIntentSummaryView": [ { "intentName": "Name", "checkpointLabel": "Label", "slots": { "slot name": "value", "slot name": "value" }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)", "dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close", "fulfillmentState": "Fulfilled or Failed", "slotToElicit": "Next slot to elicit" } ]

Contesti attivi

Facoltativo. Se incluso, imposta il valore di uno o più contesti. Ad esempio, puoi includere un contesto per rendere idonei al riconoscimento uno o più intenti che hanno quel contesto come input idoneo per il riconoscimento nel prossimo turno della conversazione.

Tutti i contesti attivi che non sono inclusi nella risposta hanno i valori di time-to-live diminuiti e possono essere ancora attivi sulla richiesta successiva.

Se si specifica un time-to-live pari a 0 per un contesto incluso nell'evento di input, sarà inattivo nella richiesta successiva.

Per ulteriori informazioni, consultare Impostazione del contesto dell'intento.

dialogAction

Campo obbligatorio. LadialogActionindirizza Amazon Lex verso l'operazione successiva e descrive cosa prevedere da parte dell'utente dopo che Amazon Lex abbia restituito una risposta al client.

Il campo type indica l'operazione successiva. Determina inoltre gli altri campi che la funzione Lambda deve fornire come parte dell'dialogActionvalue.

  • Close: informa Amazon Lex di non prevedere una risposta da parte dell'utente. Ad esempio, "L'ordine della tua pizza è stato registrato" non richiede una risposta.

     

    Il campo fulfillmentState è obbligatorio. Amazon Lex utilizza questo valore per impostaredialogStatenel campoPostContentoPostTextrisposta all'applicazione client. I campi message e responseCard sono facoltativi. Se non specifichi un messaggio, Amazon Lex utilizza il messaggio di saluto o il messaggio di prosecuzione configurato per l'intento.

    "dialogAction": { "type": "Close", "fulfillmentState": "Fulfilled or Failed", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, Thanks, your pizza has been ordered." }, "responseCard": { "version": integer-value, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title", "subTitle":"card-sub-title", "imageUrl":"URL of the image to be shown", "attachmentLinkUrl":"URL of the attachment to be associated with the card", "buttons":[ { "text":"button-text", "value":"Value sent to server on button click" } ] } ] } }
  • ConfirmIntent: informa Amazon Lex che l'utente deve fornire una risposta affermativa o negativa per confermare o negare l'intento corrente.

     

    È necessario includere i campi intentName e slots. Il campo slots deve contenere una voce per ciascuno slot riempito per l'intento specificato. Non è necessario includere una voce nel campo slots per gli slot che non vengono riempiti. È necessario includere il campo message se il campo intento confirmationPrompt è nullo. Contenuti dimessageIl campo restituito dalla funzione Lambda ha la precedenza rispetto alconfirmationPromptspecificato nell'intento. Il campo responseCard è facoltativo.

    "dialogAction": { "type": "ConfirmIntent", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, Are you sure you want a large pizza?" }, "intentName": "intent-name", "slots": { "slot-name": "value", "slot-name": "value", "slot-name": "value" }, "responseCard": { "version": integer-value, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title", "subTitle":"card-sub-title", "imageUrl":"URL of the image to be shown", "attachmentLinkUrl":"URL of the attachment to be associated with the card", "buttons":[ { "text":"button-text", "value":"Value sent to server on button click" } ] } ] } }
  • Delegate: indirizza Amazon Lex a scegliere la prossima operazione in base alla configurazione del bot. Se la risposta non include alcun attributo di sessione, Amazon Lex mantiene gli attributi esistenti. Per ottenere un valore null di uno slot, non occorre includere il campo slot nella richiesta. Si riceverà un'eccezione DependencyFailedException se la funzione di adempimento restituisce l'operazione di dialogo Delegate senza rimuovere alcuno slot.

    I campi kendraQueryRequestPayload e kendraQueryFilterString sono facoltativi e utilizzati solo quando l'intento è derivato dall'intento integrato AMAZON.KendraSearchIntent. Per ulteriori informazioni, consulta AMAZON.KendraSearchIntent.

    "dialogAction": { "type": "Delegate", "slots": { "slot-name": "value", "slot-name": "value", "slot-name": "value" }, "kendraQueryRequestPayload": "Amazon Kendra query", "kendraQueryFilterString": "Amazon Kendra attribute filters" }
  • ElicitIntent: informa Amazon Lex che l'utente deve rispondere con un'enunciazione contenente un intento. Ad esempio, "Voglio una pizza grande", che indica l'intento OrderPizzaIntent. L'enunciazione «grande», invece, non è sufficiente affinché Amazon Lex deduca l'intento dell'utente.

     

    I campi message e responseCard sono facoltativi. Se non fornisci un messaggio, Amazon Lex utilizza uno dei messaggi di richiesta di chiarimento del bot. Se non viene definito alcun prompt di chiarimento, Amazon Lex restituisce un'eccezione 400 Bad Request (Richiesta non valida).

    { "dialogAction": { "type": "ElicitIntent", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, What can I help you with?" }, "responseCard": { "version": integer-value, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title", "subTitle":"card-sub-title", "imageUrl":"URL of the image to be shown", "attachmentLinkUrl":"URL of the attachment to be associated with the card", "buttons":[ { "text":"button-text", "value":"Value sent to server on button click" } ] } ] } }
  • ElicitSlot: informa Amazon Lex che l'utente dovrebbe fornire un valore dello slot nella risposta.

     

    I campi intentName, slotToElicit e slots sono obbligatori. I campi message e responseCard sono facoltativi. Se non specifichi un messaggio, Amazon Lex utilizza uno dei messaggi di richiesta di sollecitazione dello slot configurati per lo slot.

    "dialogAction": { "type": "ElicitSlot", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, What size pizza would you like?" }, "intentName": "intent-name", "slots": { "slot-name": "value", "slot-name": "value", "slot-name": "value" }, "slotToElicit" : "slot-name", "responseCard": { "version": integer-value, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title", "subTitle":"card-sub-title", "imageUrl":"URL of the image to be shown", "attachmentLinkUrl":"URL of the attachment to be associated with the card", "buttons":[ { "text":"button-text", "value":"Value sent to server on button click" } ] } ] } }