Lambda-Funktions-Eingabe-Ereignis und Antwort-Format - Amazon Lex V1

Wenn Sie Amazon Lex V2 verwenden, lesen Sie stattdessen das Amazon Lex V2-Handbuch.

 

Wenn Sie Amazon Lex V1 verwenden, empfehlen wir, Ihre Bots auf Amazon Lex V2 zu aktualisieren. Wir fügen V1 keine neuen Funktionen mehr hinzu und empfehlen dringend, V2 für alle neuen Bots zu verwenden.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Lambda-Funktions-Eingabe-Ereignis und Antwort-Format

In diesem Abschnitt wird die Struktur der Ereignisdaten beschrieben, die Amazon Lex für eine Lambda-Funktion bereitstellt. Nutzen Sie diese Informationen zum Analysieren der Eingabe der Lambda-Code. Es wird auch das Format der Antwort erklärt, die Amazon Lex als Rückgabe Ihrer Lambda-Funktion erwartet.

Eingabe-Ereignis-Format

Nachfolgend sehen Sie das allgemeine Format eines Amazon Lex -Ereignisses, das an eine Lambda-Funktion übergeben wird. Nutzen Sie diese Informationen zum Schreiben einer Lambda-Funktion.

Anmerkung

Das Eingabeformat kann sich auch ohne entsprechende Änderung der messageVersion ändern. Ihr Code sollte keinen Fehler ausgeben, wenn neue Felder vorhanden sind.

{ "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" } } ] }

Beachten Sie die folgenden zusätzlichen Informationen über die Ereignisfelder:

  • currentIntent – Stellt die Absichtsfelder name, slots, slotDetails und confirmationStatus bereit.

     

    nluIntentConfidenceScoreist das Vertrauen, das Amazon Lex hat, dass die aktuelle Absicht diejenige ist, die der aktuellen Absicht des Benutzers am besten entspricht.

     

    slotsist eine Zuordnung von Slot-Namen, die für die Absicht konfiguriert werden, zu Slot-Werten, die Amazon Lex in der Benutzerkonversation erkannt hat. Ein Slot-Wert bleibt Null, bis der Benutzer einen Wert angibt.

     

    Der Slot-Wert im Eingabeereignis stimmt möglicherweise nicht mit einem der für den Slot konfigurierten Werte überein. Wenn der Benutzer auf die Aufforderung "Welche Farbe soll Ihr Auto haben?" Mit „pizza“ gibt Amazon Lex „pizza“ als Slot-Wert zurück. Die Funktion sollte die Werte überprüfen, um sicherzustellen, dass sie im Kontext Sinn machen.

     

    slotDetails bietet weitere Informationen zu einem Slot-Wert. Das resolutions-Array enthält eine Liste weiterer Werte, die für den Slot erkannt wurden. Jeder Slot kann maximal fünf Werte haben.

     

    Das Feld originalValue enthält den Wert, der vom Benutzer für den Slot eingegeben wurde. Wenn der Slot-Typ so konfiguriert wurde, dass er den Wert der höchsten Auflösung als Slot-Wert zurückgibt, unterscheidet sich der originalValue möglicherweise von dem Wert im Feld slots.

     

    confirmationStatus bietet dem Benutzer eine Antwort auf eine Bestätigungsaufforderung, falls eine vorhanden ist. Wenn zum Beispiel Amazon Lex fragt: „Möchten Sie eine große Käsepizza bestellen? , „ist der Wert dieses Felds je nach Antwort des BenutzersConfirmedoderDeniedaus. Andernfalls ist der Wert dieses Felds None.

     

    Wenn der Benutzer die Absicht bestätigt, setzt Amazon Lex dieses Feld aufConfirmedaus. Wenn der Benutzer die Absicht verneint, setzt Amazon Lex diesen Wert aufDeniedaus.

     

    In der Antwort zur Bestätigung führt eine Benutzeräußerung möglicherweise zur Aktualisierung von Slots. So könnte der Benutzer zum Beispiel sagen „Ja, ändere Größe zu Mittel.“ In diesem Fall hat das nachfolgende Lambda-Ereignis den aktualisierten Slot-Wert:PizzaSizestellen Sie aufmediumaus. Amazon Lex setztconfirmationStatuszuNonegeändert hat, weshalb der Benutzer einige Slot-Daten geändert hat, weshalb die Lambda-Funktion eine Validierung der Benutzerdaten durchführen muss.

     

  • AlternativeIntents— Wenn Sie Konfidenzwerte aktivieren, gibt Amazon Lex bis zu vier alternative Absichten zurück. Jede Absicht enthält einen Punktestand, der das Vertrauen angibt, das Amazon Lex hat, dass die Absicht die richtige Absicht ist, basierend auf der Äußerung des Benutzers.

     

    Der Inhalt der alternativen Absichten entspricht dem Inhalt descurrentIntentfield. Weitere Informationen finden Sie unter Verwenden von Zuverlässigkeitswert .

     

  • bot – Informationen über den Bot, der die Anforderung verarbeitet hat.

    • name – Der Name des Bots, der die Anforderung verarbeitet hat.

    • alias – Der Alias der Bot-Version, mit dem die Anforderung verarbeitet wurde.

    • version – Die Version des Bots, mit der die Anforderung verarbeitet wurde.

     

  • userId— Dieser Wert wird von der Clientanwendung angegeben. Amazon Lex gibt es an die Lambda-Funktion weiter.

     

  • inputTranscript – Der Text, der für die Verarbeitung der Anforderung verwendet wurde.

    Wurde Text eingegeben, enthält das Feld inputTranscript den vom Benutzer eingegebenen Text.

     

    Wurde ein Audio-Stream eingegeben, enthält das Feld inputTranscript den aus dem Audio-Stream extrahierten Text. Dies ist der Text, der tatsächlich verarbeitet wurde, um Absichten und Slot-Werte zu erkennen.

     

  • invocationSource: Um anzugeben, warum Amazon Lex die Lambda-Funktion aufruft, wird dies auf einen der folgenden Werte eingestellt:

    • DialogCodeHook: Amazon Lex stellt diesen Wert ein, um die Lambda-Funktion anzuweisen, die Funktion zu initialisieren und die Dateneingabe des Benutzers zu validieren.

       

      Wenn die Absicht konfiguriert ist, um eine Lambda-Funktion als einen Code-Haken zur Initialisierung und Validierung aufzurufen, ruft Amazon Lex bei jeder Benutzereingabe (Äußerung) die angegebene Lambda-Funktion bei jeder Benutzereingabe (Äußerung) auf, nachdem Amazon Lex die Absicht verstanden hat.

      Anmerkung

      Wenn die Absicht nicht klar ist, kann Amazon Lex die Lambda-Funktion nicht aufrufen.

       

    • FulfillmentCodeHook— Amazon Lex setzt diesen Wert ein, um die Lambda-Funktion anzuweisen, eine Absicht zu erfüllen.

       

      Wenn die Absicht konfiguriert ist, um eine Lambda-Funktion als Code-Haken zur Erfüllung aufzurufen, stellt Amazon Lex dieinvocationSourceauf diesen Wert erst dann, wenn alle Slot-Daten zur Erfüllung der Absicht vorliegen.

       

    In der Konfiguration Ihrer Absicht können Sie zwei unterschiedliche Lambda-Funktionen haben, um Benutzerdaten zu initialisieren und zu validieren und um die Absicht zu erfüllen. Eine Lambda-Funktion kann auch beides machen. In diesem Fall kann Ihre Lambda-FunktioninvocationSourceWert, um dem richtigen Code-Pfad zu folgen.

     

  • OutputDialogMode: Für jede Benutzereingabe sendet der Client die Anfrage an Amazon Lex mithilfe einer der API-Operationen zur Laufzeit,PostContentoderPostTextaus. Mithilfe der Anforderungsparameter legt Amazon Lex fest, ob es sich bei der Antwort an den Client um Text oder Sprache handelt, und stellt dieses Feld entsprechend ein.

     

    Die Lambda-Funktion kann diese Informationen verwenden, um eine entsprechende Mitteilung zu generieren. Wenn der Client beispielsweise eine Sprachantwort erwartet, kann Ihre Lambda-Funktion SSML (Speech Synthesis Markup Language) anstelle von Text zurückgeben.

     

  • MessageVersion: Die Version der Mitteilung, die das Format der Ereignisdaten, die in die Lambda-Funktion eingehen, und das erwartete Format der Antwort von einer Lambda-Funktion identifiziert.

    Anmerkung

    Sie konfigurieren diesen Wert, wenn Sie eine Absicht definieren. In der aktuellen Implementierung, nur Mitteilung Version 1.0 wird unterstützt. Daher nimmt die Konsole 1.0 als Standardwert an und zeigt die Mitteilungsversion nicht.

  • sessionAttributes— Anwendungsspezifische Sitzungsattribute, die der Client in der Anforderung sendet. Wenn Sie möchten, dass Amazon Lex diese in die Antwort an den Client einschließt, sollte Ihre Lambda-Funktion diese in der Antwort an Amazon Lex zurücksenden. Weitere Informationen finden Sie unterFestlegen von Sitzungsattributen

     

  • requestAttributes— Anforderungsspezifische Attribute, die der Client in der Anforderung sendet. Verwenden Sie Anforderungsattribute zur Weitergabe von Informationen, die nicht während der ganzen Sitzung erhalten bleiben müssen. Wenn keine Anforderungsattribute vorhanden sind, ist der Wert Null. Weitere Informationen finden Sie unterFestlegen von Anforderungsattributen

     

  • RecentIntentSummaryView— Informationen über den Stand einer Absicht. Sie können Informationen zu den letzten drei Absichten anzeigen. Sie können diese Informationen verwenden, um Werte in der Absicht festzulegen oder zu einer vorherigen Absicht zurückzukehren. Weitere Informationen finden Sie unter Verwalten von Sitzungen mit der Amazon Lex API .

     

  • SentimentResponse— Das Ergebnis einer Amazon Comprehend-Stimmentanalyse der letzten Äußerung. Sie können diese Informationen verwenden, um den Konversationsfluss Ihres Bots je nach der vom Benutzer ausgedrückten Stimmung zu verwalten. Weitere Informationen finden Sie unter Stimmungsanalyse .

     

  • KendraResponse— Das Ergebnis einer Abfrage eines Amazon Kendra-Index. Nur in der Eingabe zu einem Erfüllungscode-Hook vorhanden und nur, wenn die Absicht die integrierte Absicht AMAZON.KendraSearchIntent erweitert. Das Feld enthält die gesamte Antwort aus der Amazon Kendra-Suche. Weitere Informationen finden Sie unter AMAZON.KendraSearchIntent .

     

  • ActiveContexts— Ein oder mehrere Kontexte, die während dieser Runde eines Gesprächs mit dem Benutzer aktiv sind.

    • TimeToLive— Die Dauer oder Anzahl der Windungen im Gespräch mit dem Benutzer, dass der Kontext aktiv bleibt.

    • Name— Der Name des Kontexts.

    • Parametereine Liste von Schlüssel/Wert-Paaren enthält den Namen und Wert der Slots aus der Absicht, die den Kontext aktiviert hat.

    Weitere Informationen finden Sie unter Absichtskontext festlegen .

Reaktion-Format

Amazon Lex erwartet eine Antwort einer Lambda-Funktion im folgenden Format:

{ "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. } }

Die Antwort besteht aus vier Feldern. DiesessionAttributes,recentIntentSummaryView, undactiveContextsDie Felder sind optionaldialogActionist ein Pflichtfeld. Der Inhalt von Feld dialogAction ist abhängig vom Wert in Feld type. Details hierzu finden Sie unter dialogAction.

sessionAttributes

Optional. Wenn Sie das Feld sessionAttributes einschließen, kann es leer sein. Wenn Ihre Lambda-Funktion keine Sitzungsattribute zurückgibt, ist der letzte bekanntesessionAttributes, die über die API- oder Lambda-Funktion übergeben wird, bleiben erhalten. Weitere Informationen finden Sie im Zusammenhang mit den Operationen PostContent und PostText.

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

RecentIntentSummaryView

Optional. Wenn diese Option enthalten ist, werden Werte für eine oder mehrere aktuelle Absichten festgelegt. Sie können Informationen für bis zu drei Absichten aufnehmen. Beispielsweise können Sie Werte für vorherige Absichten basierend auf Informationen festlegen, die von der aktuellen Absicht erfasst werden. Die Informationen in der Zusammenfassung müssen für die Absicht gültig sein. Beispielsweise muss der Absichtsname eine Absicht im Bot sein. Wenn Sie einen Steckplatzwert in die Zusammenfassungsansicht einschließen, muss der Steckplatz in der Absicht vorhanden sein. Wenn Sie recentIntentSummaryView nicht in Ihre Antwort aufnehmen, bleiben alle Werte für die letzten Absichten unverändert. Weitere Informationen finden Sie beim PutSession-Vorgang oder dem IntentSummary-Datentyp.

"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

Optional. Wenn diese Option enthalten ist, wird der Wert für einen oder mehrere Kontexte festgelegt. Sie können beispielsweise einen Kontext einbeziehen, um eine oder mehrere Absichten zu erstellen, die diesen Kontext als Eingabe haben, die für die nächste Runde der Konversation anerkannt werden kann.

Alle aktiven Kontexte, die nicht in der Antwort enthalten sind, haben ihre Time-to-Live-Werte verringert und sind möglicherweise bei der nächsten Anfrage weiterhin aktiv.

Wenn Sie eine Live-Zeit von 0 für einen Kontext angeben, der in das Eingabeereignis aufgenommen wurde, ist er bei der nächsten Anforderung inaktiv.

Weitere Informationen finden Sie unter Absichtskontext festlegen .

dialogAction

Erforderlich. DiedialogActionDas Feld führt Amazon Lex zur nächsten Aktion und beschreibt, was vom Benutzer zu erwarten ist, nachdem Amazon Lex eine Antwort an den Client zurückgegeben hat.

Das Feld type gibt die nächste Vorgehensweise an. Es legt auch fest, welche anderen Felder die Lambda-Funktion als Teil derdialogActionWert.

  • Close- Informiert Amazon Lex darüber, keine Antwort vom Benutzer zu erwarten. Beispiel: Für "Ihre Pizzabestellung wurde aufgenommen" ist keine Antwort erforderlich.

     

    Das Feld fulfillmentState ist ein Pflichtfeld. Amazon Lex verwendet diesen Wert, um diedialogStatefield imPostContentoderPostTextAntwort auf die Client-Anwendung. Die Felder message und responseCard sind optional. Wenn Sie keine Mitteilung festlegen, verwendet Amazon Lex die Abschiedsmitteilung oder die für die Absicht konfigurierte Follow-up-Mitteilung.

    "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: Informiert Amazon Lex darüber, dass vom Benutzer ein „Ja“ oder „Nein“ als Antwort erwartet wird, um die aktuelle Absicht zu bestätigen oder zu verwerfen.

     

    Sie müssen die Felder intentName und slots einschließen. Das Feld slots muss einen Eintrag für jeden ausgefüllten Slot für die angegebene Absicht enthalten. Sie brauchen im Feld slots keinen Eintrag für Slots anzugeben, die nicht ausgefüllt sind. Das Feld message muss enthalten sein, wenn das Feld confirmationPrompt der Absicht Null ist. Der Inhalt dermessageDas Feld, das von der Lambda-Funktion zurückgegeben wird, hat Vorrang vorconfirmationPromptIn der Absicht angegeben. Das Feld responseCard ist optional.

    "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— Weist Amazon Lex an, die nächste Aktion basierend auf der Bot-Konfiguration auszuwählen. Wenn die Antwort keine Sitzungsattribute enthält, behält Amazon Lex die vorhandenen Attribute bei. Wenn Sie möchten, dass ein Slot-Wert null ist, brauchen Sie das Slot-Feld nicht in die Anforderung einzuschließen. Sie erhalten die Ausnahme DependencyFailedException, wenn die Erfüllungsfunktion die Dialogaktion Delegate zurückgibt, ohne dass Slots entfernt werden.

    Die Felder kendraQueryRequestPayload und kendraQueryFilterString sind optional und werden nur verwendet, wenn die Absicht von der integrierten Absicht AMAZON.KendraSearchIntent abgeleitet wird. Weitere Informationen finden Sie unter 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: Informiert Amazon Lex darüber, dass vom Benutzer als Antwort eine Äußerung erwartet wird, die eine Absicht beinhaltet. "Ich möchte eine große Pizza" gibt beispielsweise OrderPizzaIntent an. Die Äußerung „groß“ reicht jedoch für Amazon Lex für Amazon Lex aus, um die Absicht des Benutzers zu erkennen.

     

    Die Felder message und responseCard sind optional. Wenn Sie keine Mitteilung bereitstellen, verwendet Amazon Lex eine der Aufforderungen zur Klärung des Bots. Wenn keine Klärungsaufforderung definiert ist, gibt Amazon Lex eine 400 Bad Request-Ausnahme zurück.

    { "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— Informiert Amazon Lex darüber, dass vom Benutzer als Antwort ein Slot-Wert erwartet wird.

     

    Die Felder intentName, slotToElicit und slots sind erforderlich. Die Felder message und responseCard sind optional. Wenn Sie keine Mitteilung festlegen, verwendet Amazon Lex eine der Aufforderungen zur Eingabe eines Slots, die für den Slot konfiguriert sind.

    "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" } ] } ] } }