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
dialogState
intentName
,, e della risposta. Considerare i seguenti esempi:
-
Se il messaggio serve a richiamare dati sugli slot, Amazon Lex restituisce le seguenti informazioni di contesto:
-
dialogState
impostato su ElicitSlot -
intentName
impostato sul nome dell'intento nel contesto corrente -
slotToElicit
impostato sul nome dello slot per il qualemessage
sta ottenendo informazioni -
slots
impostato 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 suSlotToElicit
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. ElicitIntentslotToElicit
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
PostContent
PostText
, 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 come
dialogState
. 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 comedialogAction.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. SevalueSelectionStrategy
è impostato suORIGINAL_VALUE
, viene restituito il valore fornito dall'utente, se il valore utente è simile ai valori dello slot. SevalueSelectionStrategy
è impostatoTOP_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: