PostText - 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à.

PostText

Invia l'input dell'utente ad Amazon Lex. Le applicazioni client possono utilizzare questa API per inviare richieste ad Amazon Lex in fase di esecuzione. Amazon Lex interpreta quindi l'input dell'utente utilizzando il modello di apprendimento automatico creato per il bot.

In risposta, Amazon Lex restituisce il successivo message per comunicare all'utente un'opzione responseCard da visualizzare. Considera i seguenti messaggi di esempio:

  • Per un input dell'utente «Vorrei una pizza», Amazon Lex potrebbe restituire una risposta con un messaggio che richiama i dati relativi allo slot (ad esempio, PizzaSize): «Che dimensione di pizza vorresti?»

  • Dopo che l'utente ha fornito tutte le informazioni sull'ordine della pizza, Amazon Lex potrebbe restituire una risposta con un messaggio per ottenere la conferma dell'utente «Procedere con l'ordine della pizza?».

  • Dopo che l'utente ha risposto a una richiesta di conferma con un «sì», Amazon Lex potrebbe restituire una dichiarazione conclusiva: «Grazie, la tua pizza al formaggio è stata ordinata».

Non tutti i messaggi Amazon Lex richiedono una risposta da parte dell'utente. Ad esempio, una dichiarazione conclusiva non richiede una risposta. Alcuni messaggi richiedono solo una risposta utente «sì» o «no». Oltre amessage, Amazon Lex fornisce un contesto aggiuntivo sul messaggio nella risposta che è possibile utilizzare per migliorare il comportamento del client, ad esempio per visualizzare l'interfaccia utente client appropriata. Questi sono i slots campi slotToElicit dialogStateintentName,, e della risposta. Considerare i seguenti esempi:

  • Se il messaggio serve a richiamare dati sugli slot, Amazon Lex restituisce le seguenti informazioni di contesto:

    • dialogStateimpostato su ElicitSlot

    • intentNameimpostato sul nome dell'intento nel contesto corrente

    • slotToElicitimpostato sul nome dello slot per il quale message sta ottenendo informazioni

    • slotsimpostato su una mappa di slot, configurata per l'intento, con valori attualmente noti

  • Se il messaggio è una richiesta di conferma, dialogState è impostato su ConfirmIntent e impostato su SlotToElicit null.

  • Se il messaggio è una richiesta di chiarimenti (configurata per l'intento) che indica che l'intento dell'utente non è compreso, viene impostato su e impostato su dialogState null. ElicitIntent slotToElicit

Inoltre, Amazon Lex restituisce anche prodotti specifici per l'applicazionesessionAttributes. Per ulteriori informazioni, consulta Managing Conversation Context.

Sintassi della richiesta

POST /bot/botName/alias/botAlias/user/userId/text HTTP/1.1 Content-type: application/json { "activeContexts": [ { "name": "string", "parameters": { "string" : "string" }, "timeToLive": { "timeToLiveInSeconds": number, "turnsToLive": number } } ], "inputText": "string", "requestAttributes": { "string" : "string" }, "sessionAttributes": { "string" : "string" } }

Parametri della richiesta URI

La richiesta utilizza i seguenti parametri URI.

botAlias

L'alias del bot Amazon Lex.

Campo obbligatorio: sì

botName

Il nome del bot Amazon Lex.

Campo obbligatorio: sì

userId

L'ID dell'utente dell'applicazione client. Amazon Lex lo utilizza per identificare la conversazione di un utente con il tuo bot. In fase di esecuzione, ogni richiesta deve contenere il userID campo.

Per decidere l'ID utente da utilizzare per l'applicazione, considera i seguenti fattori.

  • Il userID campo non deve contenere informazioni di identificazione personale dell'utente, ad esempio nome, numeri di identificazione personale o altre informazioni personali dell'utente finale.

  • Se desideri che un utente inizi una conversazione su un dispositivo e continui su un altro dispositivo, utilizza un identificatore specifico dell'utente.

  • Se desideri che lo stesso utente possa tenere due conversazioni indipendenti su due dispositivi diversi, scegli un identificatore specifico del dispositivo.

  • Un utente non può avere due conversazioni indipendenti con due versioni diverse dello stesso bot. Ad esempio, un utente non può conversare con le versioni PROD e BETA dello stesso bot. Se prevedi che un utente debba conversare con due versioni diverse, ad esempio durante il test, includi l'alias bot nell'ID utente per separare le due conversazioni.

Vincoli di lunghezza: lunghezza minima di 2. Lunghezza massima di 100.

Modello: [0-9a-zA-Z._:-]+

Campo obbligatorio: sì

Corpo della richiesta

La richiesta accetta i seguenti dati in formato JSON.

activeContexts

Un elenco di contesti attivi per la richiesta. Un contesto può essere attivato quando viene soddisfatto un intento precedente o includendo il contesto nella richiesta,

Se non specifichi un elenco di contesti, Amazon Lex utilizzerà l'elenco corrente di contesti per la sessione. Se specifichi un elenco vuoto, tutti i contesti della sessione vengono cancellati.

Tipo: matrice di oggetti ActiveContext

Membri dell'array: numero minimo di 0 elementi. Numero massimo di 20 elementi.

Campo obbligatorio: no

inputText

Il testo inserito dall'utente (Amazon Lex interpreta questo testo).

Quando utilizzi l'AWS CLI, non puoi passare un URL nel --input-text parametro. Passa invece l'URL utilizzando il --cli-input-json parametro.

▬Tipo: stringa

Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 1024 caratteri.

Campo obbligatorio: sì

requestAttributes

Informazioni specifiche sulla richiesta trasferite tra Amazon Lex e un'applicazione client.

Lo spazio dei nomi x-amz-lex: è riservato agli attributi speciali. Non creare alcun attributo di richiesta con il prefisso. x-amz-lex:

Per ulteriori informazioni, vedere Impostazione degli attributi della richiesta.

Tipo: mappatura stringa a stringa

Campo obbligatorio: no

sessionAttributes

Informazioni specifiche dell'applicazione trasferite tra Amazon Lex e un'applicazione client.

Per ulteriori informazioni, consulta Impostazione degli attributi di sessione.

Tipo: mappatura stringa a stringa

Campo obbligatorio: no

Sintassi della risposta

HTTP/1.1 200 Content-type: application/json { "activeContexts": [ { "name": "string", "parameters": { "string" : "string" }, "timeToLive": { "timeToLiveInSeconds": number, "turnsToLive": number } } ], "alternativeIntents": [ { "intentName": "string", "nluIntentConfidence": { "score": number }, "slots": { "string" : "string" } } ], "botVersion": "string", "dialogState": "string", "intentName": "string", "message": "string", "messageFormat": "string", "nluIntentConfidence": { "score": number }, "responseCard": { "contentType": "string", "genericAttachments": [ { "attachmentLinkUrl": "string", "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subTitle": "string", "title": "string" } ], "version": "string" }, "sentimentResponse": { "sentimentLabel": "string", "sentimentScore": "string" }, "sessionAttributes": { "string" : "string" }, "sessionId": "string", "slots": { "string" : "string" }, "slotToElicit": "string" }

Elementi di risposta

Se l'operazione riesce, il servizio restituisce una risposta HTTP 200.

I dati seguenti vengono restituiti in formato JSON mediante il servizio.

activeContexts

Un elenco di contesti attivi per la sessione. Un contesto può essere impostato quando un intento viene soddisfatto o chiamando l'operazione PostContentPostText, o. PutSession

È possibile utilizzare un contesto per controllare gli intenti che possono far seguito a un intento o per modificare il funzionamento dell'applicazione.

Tipo: matrice di oggetti ActiveContext

Membri dell'array: numero minimo di 0 elementi. Numero massimo di 20 elementi.

alternativeIntents

Da uno a quattro intenti alternativi che possono essere applicabili all'intento dell'utente.

Ogni alternativa include un punteggio che indica quanto Amazon Lex sia sicuro che l'intento corrisponda a quello dell'utente. Le intenzioni sono ordinate in base al punteggio di confidenza.

Tipo: matrice di oggetti PredictedIntent

Membri della matrice: numero massimo di 4 elementi.

botVersion

La versione del bot che ha risposto alla conversazione. Puoi utilizzare queste informazioni per determinare se una versione di un bot funziona meglio di un'altra versione.

▬Tipo: stringa

Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 64 caratteri.

Modello: [0-9]+|\$LATEST

dialogState

Identifica lo stato attuale dell'interazione dell'utente. Amazon Lex restituisce uno dei seguenti valori comedialogState. Il client può opzionalmente utilizzare queste informazioni per personalizzare l'interfaccia utente.

  • ElicitIntent- Amazon Lex vuole suscitare l'intenzione dell'utente.

    Ad esempio, un utente potrebbe esprimere un intento («Voglio ordinare una pizza»). Se Amazon Lex non è in grado di dedurre l'intento dell'utente da questo enunciato, restituirà questo DialogState.

  • ConfirmIntent- Amazon Lex prevede una risposta «sì» o «no».

    Ad esempio, Amazon Lex richiede la conferma dell'utente prima di soddisfare un intento.

    Invece di un semplice «sì» o «no», un utente potrebbe rispondere fornendo informazioni aggiuntive. Ad esempio, «sì, ma preparala una pizza dalla crosta densa» o «no, voglio ordinare da bere». Amazon Lex può elaborare tali informazioni aggiuntive (in questi esempi, aggiornare il valore dello slot del tipo di crosta o modificare l'intento da OrderPizza a OrderDrink).

  • ElicitSlot- Amazon Lex prevede un valore di slot per l'intento attuale.

    Ad esempio, supponiamo che nella risposta Amazon Lex invii questo messaggio: «Che dimensione di pizza vorresti?». Un utente potrebbe rispondere con il valore dello slot (ad esempio, «medio»). L'utente potrebbe anche fornire informazioni aggiuntive nella risposta (ad esempio, «pizza con crosta di medio spessore»). Amazon Lex è in grado di elaborare tali informazioni aggiuntive in modo appropriato.

  • Fulfilled- Indica che la funzione Lambda configurata per l'intento ha soddisfatto con successo l'intento.

  • ReadyForFulfillment- Indica che il cliente deve soddisfare l'intento.

  • Failed- Indica che la conversazione con l'utente è fallita.

    Ciò può accadere per vari motivi, tra cui il fatto che l'utente non ha fornito una risposta appropriata alle richieste del servizio (puoi configurare quante volte Amazon Lex può richiedere a un utente informazioni specifiche) o la funzione Lambda non è riuscita a soddisfare l'intento.

▬Tipo: stringa

Valori validi: ElicitIntent | ConfirmIntent | ElicitSlot | Fulfilled | ReadyForFulfillment | Failed

intentName

L'attuale intenzione dell'utente di cui Amazon Lex è a conoscenza.

▬Tipo: stringa

message

Il messaggio da trasmettere all'utente. Il messaggio può provenire dalla configurazione del bot o da una funzione Lambda.

Se l'intento non è configurato con una funzione Lambda o se la funzione Lambda viene Delegate restituita come dialogAction.type risposta, Amazon Lex decide la linea d'azione successiva e seleziona un messaggio appropriato dalla configurazione del bot in base al contesto di interazione corrente. Ad esempio, se Amazon Lex non è in grado di comprendere l'input dell'utente, utilizza un messaggio di richiesta di chiarimento.

Quando crei un intento, puoi assegnare messaggi ai gruppi. Quando i messaggi vengono assegnati a gruppi, Amazon Lex restituisce un messaggio per ogni gruppo nella risposta. Il campo del messaggio è una stringa JSON in escape contenente i messaggi. Per ulteriori informazioni sulla struttura della stringa JSON restituita, vedere. Formati di messaggio supportati

Se la funzione Lambda restituisce un messaggio, Amazon Lex lo trasmette al client nella sua risposta.

▬Tipo: stringa

Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 1024 caratteri.

messageFormat

Il formato del messaggio di risposta. Uno dei seguenti valori:

  • PlainText- Il messaggio contiene testo UTF-8 semplice.

  • CustomPayload- Il messaggio è un formato personalizzato definito dalla funzione Lambda.

  • SSML- Il messaggio contiene testo formattato per l'output vocale.

  • Composite- Il messaggio contiene un oggetto JSON in escape contenente uno o più messaggi provenienti dai gruppi a cui sono stati assegnati i messaggi al momento della creazione dell'intento.

▬Tipo: stringa

Valori validi: PlainText | CustomPayload | SSML | Composite

nluIntentConfidence

Fornisce un punteggio che indica quanto Amazon Lex sia sicuro che l'intento restituito corrisponda all'intento dell'utente. Il punteggio è compreso tra 0,0 e 1,0. Per ulteriori informazioni, vedere Confidence Scores.

Il punteggio è un punteggio relativo, non assoluto. Il punteggio può cambiare in base ai miglioramenti apportati ad Amazon Lex.

Tipo: oggetto IntentConfidence

responseCard

Rappresenta le opzioni a disposizione dell'utente per rispondere alla richiesta corrente. La Response Card può provenire dalla configurazione del bot (nella console Amazon Lex, scegli il pulsante delle impostazioni accanto a uno slot) o da un code hook (funzione Lambda).

Tipo: oggetto ResponseCard

sentimentResponse

Il sentimento espresso in ed enunciato.

Quando il bot è configurato per inviare enunciati ad Amazon Comprehend per l'analisi del sentiment, questo campo contiene il risultato dell'analisi.

Tipo: oggetto SentimentResponse

sessionAttributes

Una mappa di coppie chiave-valore che rappresentano le informazioni di contesto specifiche della sessione.

Tipo: mappatura stringa a stringa

sessionId

Un identificatore univoco per la sessione.

▬Tipo: stringa

slots

Gli slot di intenti rilevati da Amazon Lex in base all'input dell'utente nella conversazione.

Amazon Lex crea un elenco di risoluzioni contenente i valori probabili per uno slot. Il valore restituito è determinato dal valore valueSelectionStrategy selezionato al momento della creazione o dell'aggiornamento del tipo di slot. Se valueSelectionStrategy è impostato suORIGINAL_VALUE, viene restituito il valore fornito dall'utente, se il valore utente è simile ai valori dello slot. Se valueSelectionStrategy è impostato TOP_RESOLUTION su Amazon Lex restituisce il primo valore nell'elenco delle risoluzioni o, se non esiste un elenco di risoluzioni, null. Se non specifichi avalueSelectionStrategy, l'impostazione predefinita èORIGINAL_VALUE.

Tipo: mappatura stringa a stringa

slotToElicit

Se il dialogState valore èElicitSlot, restituisce il nome dello slot per il quale Amazon Lex sta ottenendo un valore.

▬Tipo: stringa

Errori

BadGatewayException

Il bot Amazon Lex è ancora in fase di creazione oppure uno dei servizi dipendenti (Amazon Polly, AWS Lambda) non è riuscito a causa di un errore interno del servizio.

Codice di stato HTTP: 502

BadRequestException

La convalida della richiesta non è riuscita, non è presente alcun messaggio utilizzabile nel contesto oppure la compilazione del bot non è riuscita, è ancora in corso o contiene modifiche non integrate.

Codice di stato HTTP: 400

ConflictException

Due client utilizzano lo stesso account AWS, lo stesso bot Amazon Lex e lo stesso ID utente.

Codice di stato HTTP: 409

DependencyFailedException

Una delle dipendenze, come AWS Lambda o Amazon Polly, generava un'eccezione. Ad esempio,

  • Se Amazon Lex non dispone di autorizzazioni sufficienti per chiamare una funzione Lambda.

  • Se l'esecuzione di una funzione Lambda richiede più di 30 secondi.

  • Se una funzione Lambda di adempimento restituisce un'azione di Delegate dialogo senza rimuovere alcun valore dello slot.

Codice di stato HTTP: 424

InternalFailureException

Errore interno del servizio. Riprova la chiamata.

Codice di stato HTTP: 500

LimitExceededException

È stato superato un limite.

Codice di stato HTTP: 429

LoopDetectedException

Questa eccezione non viene utilizzata.

Codice di stato HTTP: 508

NotFoundException

La risorsa (ad esempio il bot Amazon Lex o un alias) a cui si fa riferimento non è stata trovata.

Codice di stato HTTP: 404

Vedi anche

Per ulteriori informazioni sull'utilizzo di questa API in uno degli AWS SDK specifici della lingua, consulta quanto segue: