Wie kann ich den Ablauf meines Amazon-Lex-Bots mithilfe einer AWS-Lambda-Funktion zur Initialisierung/Validierung oder Erfüllung ändern?

Lesedauer: 4 Minute
0

Ich möchte den Ablauf meines Amazon-Lex-Bots mithilfe einer AWS-Lambda-Funktion zur Initialisierung/Validierung oder Erfüllung ändern. Wie kann ich das mit der Amazon-Lex-Konsole machen?

Kurzbeschreibung

Änderungen am Dialogablauf Ihres Amazon-Lex-Bots können Sie mithilfe von AWS-Lambda-Code-Hooks zur Initialisierung/Validierung oder Erfüllung vornehmen. Die Amazon-Lex-Konsole verfügt über das Feld dialogAction, das Amazon Lex bei der nächsten Vorgehensweise in der Interaktion mit Ihren Benutzern anweist. Dieses Feld beschreibt Amazon Lex, was nach Rückgabe einer Antwort an den Client von einem Benutzer zu erwarten ist.

Das Feld type zeigt die nächste Vorgehensweise für den Bot an. Sie bestimmt auch die anderen Felder, die die Lambda-Funktion als Teil des dialogAction-Werts bereitstellen muss. Es gibt fünf Typen:

  1. ElicitIntent: Informiert Amazon Lex darüber, dass vom Benutzer erwartet wird, dass er mit einer Äußerung reagiert, die eine Absicht enthält.
  2. ElicitSlot: Informiert Amazon Lex darüber, dass vom Benutzer erwartet wird, dass er in der Antwort einen Slot-Wert angibt.
  3. Close: Informiert Amazon Lex darüber, dass keine Antwort vom Benutzer zu erwarten ist. Zum Beispiel erfordert „Ihre Pizza-Bestellung wurde aufgegeben“ keine Antwort.
  4. ConfirmIntent: Informiert Amazon Lex darüber, dass vom Benutzer erwartet wird, dass er eine Ja- oder Nein-Antwort gibt, um die aktuelle Absicht zu bestätigen oder abzulehnen.
  5. Delegate: Weist Amazon Lex an, basierend auf der Bot-Konfiguration die nächste Vorgehensweise zu wählen

Lösung

Hinweis: Die Schritte in diesem Artikel basieren auf V2 der Amazon-Lex-Konsole. Wenn Sie derzeit V1 verwenden, wählen Sie Im Navigationsbereich Switch to the new Lex v2 console (Zur neuen Lex v2-Konsole wechseln).

Lambda response syntax (Syntax der Lambda-Antwort) gibt das Format an, in dem Amazon Lex eine Antwort von Ihrer Lambda-Funktion erwartet.

Lesen Sie die folgenden Informationen zu den Antwortfeldern:

  • sessionState – Dies ist ein Pflichtfeld. Es beschreibt den aktuellen Status der Konversation mit dem Benutzer. Der tatsächliche Inhalt der Struktur hängt von der Art der Dialogaktion ab.
  • dialogAction – Dieses Feld bestimmt die Art der Aktion, die Amazon Lex als Reaktion auf die Lambda-Funktion ausführen soll. Das Feld type ist immer ein Pflichtfeld. Das Feld slotToElicit ist nur erforderlich, wenn dialogAction.type den Wert ElicitSlot hat.
  • intent – Der Name der von Amazon Lex verwendeten Absicht. Dieses Feld ist nicht erforderlich, wenn dialogAction.type den Wert Delegate oder ElicitIntent hat.
  • state – Dies ist ein Pflichtfeld. Der Status kann nur ReadyForFulfillment sein, wenn dialogAction.type auf Delegate festgelegt ist.
  • messages – Dieses Feld ist erforderlich, wenn dialogAction.type auf ElicitIntent festgelegt ist. Es beschreibt eine oder mehrere Nachrichten, die Amazon Lex dem Kunden zur Durchführung der nächsten Runde des Gesprächs anzeigt. Wenn Sie keine Nachrichten bereitstellen, verwendet Amazon Lex eine entsprechende Nachricht, die Sie bei der Erstellung des Bot definiert haben. Weitere Informationen finden Sie unter dem Datentyp Message.
  • contentType – Dies beschreibt den Typ der zu verwendenden Nachricht.
  • content – Wenn der Nachrichtentyp PlainText, CustomPayload oder SSML ist, enthält dieses Feld die Nachricht, die an den Benutzer gesendet werden soll.
  • imageResponseCard – Wenn der Nachrichtentyp ImageResponseCard ist, enthält dieses Feld die Definition der Antwortkarte, die dem Benutzer angezeigt werden soll. Weitere Informationen finden Sie unter dem Datentyp ImageResponseCard.

Ändern des Dialogablaufs mithilfe des Typs ElicitSlot

Um den Dialogablauf mithilfe des Typs ElicitSlot zu ändern, übergeben Sie die Antwort des Lambda-Code-Hooks in diesem Format:

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

Nach Rückgabe der Antwort wird von Amazon Lex ein Slot namens slot-name-to-elicit ausgelöst, der zur Absicht intent-name-to-eicit gehört.

Ändern des Dialogablaufs mithilfe des Typs ElicitIntent

Um den Dialogablauf mithilfe des Typs ElicitIntent zu ändern, übergeben Sie die Antwort des Lambda-Code-Hooks in diesem Format:

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

Nach Rückgabe dieser wird die im Nachrichtenplatzhalter angegebene Nachricht dem Benutzer angezeigt. Die nächste Benutzereingabe wird als Absichtsäußerung verwendet, die die Absicht mit dem höchsten nluConfidence-Score aufruft.


Relevante Informationen

Format der Antwort

amazon-lex-v2-Dialog

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren