AMAZON.KendraSearchIntent - 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.

AMAZON.KendraSearchIntent

Verwenden Sie die Absicht, um nach Dokumenten zu suchen, die Sie mit Amazon Kendra indexiert haben. AMAZON.KendraSearchIntent Wenn Amazon Lex die nächste Aktion in einer Konversation mit dem Benutzer nicht bestimmen kann, löst es die Suchabsicht aus.

Das AMAZON.KendraSearchIntent ist nur im Gebietsschema Englisch (USA) (en-US) und in den Regionen USA Ost (Nord-Virginia), USA West (Oregon) und Europa (Irland) verfügbar.

Amazon Kendra ist ein machine-learning-based Suchdienst, der Dokumente in natürlicher Sprache wie PDF-Dokumente oder Microsoft Word-Dateien indexiert. Es kann indizierte Dokumente durchsuchen und die folgenden Arten von Antworten auf Fragen zurückgeben:

  • Antworten

  • Einträge aus häufig gestellten Fragen, die die Fragen möglicherweise beantworten

  • Dokumente, die sich auf die Fragen beziehen

Ein Beispiel für die Verwendung von AMAZON.KendraSearchIntent finden Sie unter Beispiel: Einen FAQ-Bot für einen Amazon Kendra Kendra-Index erstellen.

Wenn Sie eine AMAZON.KendraSearchIntent Absicht für Ihren Bot konfigurieren, ruft Amazon Lex die Absicht immer dann auf, wenn es die Benutzeräußerung für einen Slot oder eine Absicht nicht ermitteln kann. Wenn Ihr Bot beispielsweise eine Antwort für einen Slot-Typ namens „Pizzabelag“ auslöst und der Benutzer sagt: „Was ist eine Pizza? „, ruft Amazon Lex AMAZON.KendraSearchIntent an, um die Frage zu beantworten. Wenn keine Antwort von Amazon Kendra eingeht, wird die Konversation wie im Bot konfiguriert fortgesetzt.

Wenn Sie AMAZON.KendraSearchIntent sowohl das als auch das AMAZON.FallbackIntent im selben Bot verwenden, verwendet Amazon Lex die Absichten wie folgt:

  1. Amazon Lex nennt dasAMAZON.KendraSearchIntent. Die Absicht nennt Amazon Kendra Query Operation.

  2. Wenn Amazon Kendra eine Antwort zurückgibt, zeigt Amazon Lex dem Benutzer das Ergebnis an.

  3. Wenn Amazon Kendra keine Antwort erhält, fordert Amazon Lex den Benutzer erneut auf. Die nächste Aktion hängt von der Antwort des Benutzers ab.

    • Wenn die Antwort des Benutzers eine Äußerung enthält, die Amazon Lex erkennt, z. B. das Ausfüllen eines Slot-Werts oder die Bestätigung einer Absicht, wird die Konversation mit dem Benutzer wie für den Bot konfiguriert fortgesetzt.

    • Wenn die Antwort des Benutzers keine Äußerung enthält, die Amazon Lex erkennt, ruft Amazon Lex den Query Vorgang erneut auf.

  4. Wenn nach der konfigurierten Anzahl von Wiederholungen keine Antwort erfolgt, ruft Amazon Lex den an AMAZON.FallbackIntent und beendet die Konversation mit dem Benutzer.

Es gibt drei Möglichkeiten, mit dem eine Anfrage AMAZON.KendraSearchIntent an Amazon Kendra zu stellen:

  • Lassen Sie die Suchabsicht die Anfrage für Sie stellen. Amazon Lex ruft Amazon Kendra mit der Äußerung des Benutzers als Suchzeichenfolge auf. Wenn Sie die Absicht erstellen, können Sie eine Abfragefilterzeichenfolge definieren, die die Anzahl der Antworten begrenzt, die Amazon Kendra zurückgibt. Amazon Lex verwendet den Filter in der Abfrageanforderung.

  • Fügen Sie der Anfrage zusätzliche Abfrageparameter hinzu, um die Suchergebnisse mithilfe Ihrer Dialog-Lambda-Funktion einzugrenzen. Sie fügen der delegate Dialogaktion ein kendraQueryFilterString Feld hinzu, Amazon Kendra Kendra-Abfrageparameter enthält. Wenn Sie der Anfrage mit der Lambda-Funktion Abfrageparameter hinzufügen, haben diese Vorrang vor dem Abfragefilter, den Sie bei der Erstellung der Absicht definiert haben.

  • Erstellen Sie eine neue Abfrage mit der Dialog-Lambda-Funktion. Sie können eine vollständige Amazon Kendra Kendra-Abfrageanforderung erstellen, die Amazon Lex sendet. Sie legen die Abfrage im Feld kendraQueryRequestPayload in der Dialogaktion delegate fest. Das Feld kendraQueryRequestPayload hat Vorrang vor dem Feld kendraQueryFilterString.

Um den queryFilterString Parameter anzugeben, wenn Sie einen Bot erstellen, oder um das kendraQueryFilterString Feld anzugeben, wenn Sie die delegate Aktion in einer Dialog-Lambda-Funktion aufrufen, geben Sie eine Zeichenfolge an, die als Attributfilter für die Amazon Kendra Kendra-Abfrage verwendet wird. Wenn die Zeichenfolge kein gültiger Attributfilter ist, wird zur Laufzeit die Ausnahme InvalidBotConfigException zurückgegeben. Weitere Informationen zu Attributfiltern finden Sie unter Verwenden von Dokumentattributen zum Filtern von Abfragen im Amazon Kendra Developer Guide.

Um die Abfrage zu kontrollieren, die Amazon Lex an Amazon Kendra sendet, können Sie in dem kendraQueryRequestPayload Feld Ihrer Dialog-Lambda-Funktion eine Abfrage angeben. Wenn die Abfrage nicht gültig ist, gibt Amazon Lex eine InvalidLambdaResponseException Ausnahme zurück. Weitere Informationen finden Sie unter Abfragevorgang im Amazon Kendra Developer Guide.

Ein Beispiel für die Verwendung von AMAZON.KendraSearchIntent finden Sie unter Beispiel: Einen FAQ-Bot für einen Amazon Kendra Kendra-Index erstellen.

IAM-Richtlinie für Amazon Kendra Search

Um den AMAZON.KendraSearchIntent Intent zu verwenden, müssen Sie eine Rolle verwenden, die AWS Identity and Access Management (IAM) -Richtlinien bereitstellt, die es Amazon Lex ermöglichen, eine Runtime-Rolle anzunehmen, die berechtigt ist, den Amazon Kendra Query Kendra-Intent aufzurufen. Die IAM-Einstellungen, die Sie verwenden, hängen davon ab, ob Sie die AMAZON.KendraSearchIntent mit der Amazon Lex Lex-Konsole oder mit einem AWS-SDK oder dem AWS Command Line Interface (AWS CLI) erstellen. Wenn Sie die Konsole verwenden, können Sie wählen, ob Sie der mit dem Amazon Lex-Service verbundenen Rolle die Berechtigung zum Aufrufen von Amazon Kendra hinzufügen oder eine Rolle speziell für den Aufruf des Amazon Query Kendra Kendra-Vorgangs verwenden möchten. Wenn Sie die AWS CLI oder ein SDK verwenden, um die Absicht zu erstellen, müssen Sie eine Rolle speziell zum Aufrufen der Query-Operation verwenden.

Anfügen von Berechtigungen

Sie können die Konsole verwenden, um der standardmäßigen serviceverknüpften Rolle von Amazon Lex Berechtigungen für den Zugriff auf den Amazon Query Kendra-Vorgang zuzuweisen. Wenn Sie der serviceverknüpften Rolle Berechtigungen zuordnen, müssen Sie keine spezielle Runtime-Rolle erstellen und verwalten, um eine Verbindung mit dem Amazon Kendra Kendra-Index herzustellen.

Der Benutzer, die Rolle oder die Gruppe, die Sie für den Zugriff auf die Amazon Lex-Konsole verwenden, muss über Berechtigungen zur Verwaltung von Rollenrichtlinien verfügen. Fügen Sie der Konsolenzugriffsrolle die folgende IAM-Richtlinie hinzu. Wenn Sie diese Berechtigungen erteilen, verfügt die Rolle über Berechtigungen zum Ändern der vorhandenen Richtlinie für die serviceverknüpfte Rolle.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy", "iam:GetRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/lex.amazonaws.com/AWSServiceRoleForLexBots" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "*" } ] }

Angeben einer Rolle

Sie können die Konsole, die oder die API verwendenAWS CLI, um eine Laufzeitrolle anzugeben, die beim Aufrufen des Amazon Kendra Query Kendra-Vorgangs verwendet werden soll.

Der Benutzer, die Rolle oder die Gruppe, die Sie zur Angabe der Runtime-Rolle verwenden, muss über die iam:PassRole entsprechende Berechtigung verfügen. Die folgende Richtlinie definiert die Berechtigung. Sie können die Bedingungskontextschlüssel iam:AssociatedResourceArn und iam:PassedToService verwenden, um den Umfang der Berechtigungen weiter einzuschränken. Weitere Informationen finden Sie unter IAM und AWS STS Condition Context Keys im AWS Identity and Access ManagementBenutzerhandbuch.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account:role/role" } ] }

Die Runtime-Rolle, die Amazon Lex zum Aufrufen von Amazon Kendra verwenden muss, muss über die kendra:Query entsprechenden Berechtigungen verfügen. Wenn Sie eine bestehende IAM-Rolle für die Erlaubnis zum Aufrufen des Amazon Kendra Query Kendra-Vorgangs verwenden, muss der Rolle die folgende Richtlinie beigefügt sein.

Sie können die IAM-Konsole, die IAM-API oder die verwenden, um eine Richtlinie AWS CLI zu erstellen und sie einer Rolle zuzuordnen. In diesen Anweisungen wird die AWS CLI zum Erstellen der Rolle und Richtlinien verwendet.

Anmerkung

Der folgende Code ist für Linux und MacOS formatiert. Ersetzen Sie unter Windows das Linux-Zeilenfortsetzungszeichen (\) durch ein Caret-Zeichen (^).

So fügen Sie einer Rolle die Berechtigung für die Query-Operation hinzu
  1. Erstellen Sie im aktuellen Verzeichnis ein Dokument mit dem Namen KendraQueryPolicy.json, fügen Sie ihm folgenden Code hinzu und speichern Sie es.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kendra:Query" ], "Resource": [ "arn:aws:kendra:region:account:index/index ID" ] } ] }
  2. Führen Sie in der den folgenden Befehl ausAWS CLI, um die IAM-Richtlinie für die Ausführung des Amazon Kendra Query Kendra-Vorgangs zu erstellen.

    aws iam create-policy \ --policy-name query-policy-name \ --policy-document file://KendraQueryPolicy.json
  3. Hängen Sie die Richtlinie an die IAM-Rolle an, mit der Sie den Vorgang aufrufen. Query

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::account-id:policy/query-policy-name --role-name role-name

Sie können wählen, ob Sie die mit dem Service verknüpfte Amazon Lex Lex-Rolle aktualisieren oder eine Rolle verwenden möchten, die Sie bei der Erstellung der AMAZON.KendraSearchIntent für Ihren Bot erstellt haben. Das folgende Verfahren zeigt, wie Sie die zu verwendende IAM-Rolle auswählen.

Um die Runtime-Rolle für AMAZON anzugeben. KendraSearchIntent
  1. Melden Sie sich bei der Amazon Lex Lex-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/lex/.

  2. Wählen Sie den Bot, dem Sie AMAZON.KendraSearchIntent hinzufügen möchten.

  3. Wählen Sie das Pluszeichen (+) neben Intents (Absichten).

  4. Wählen Sie unter Add intent (Absicht hinzufügen) die Option Search existing intents (Vorhandene Absichten durchsuchen).

  5. Geben Sie unter Search intents (Absichten suchen) AMAZON.KendraSearchIntent ein und wählen Sie dann Add (Hinzufügen).

  6. Geben Sie unter Copy built-in intent (Integrierte Absicht kopieren) einen Namen für die Absicht ein, z. B. KendraSearchIntent, und wählen Sie dann Add (Hinzufügen).

  7. Öffnen Sie den Abschnitt Amazon Kendra query (Amazon Kendra-Abfrage).

  8. Wählen Sie unter IAM role (IAM-Rolle) eine der folgenden Optionen:

    • Um die mit dem Service verknüpfte Amazon Lex Lex-Rolle zu aktualisieren, sodass Ihr Bot Amazon Kendra Kendra-Indizes abfragen kann, wählen Sie Amazon Kendra Kendra-Berechtigungen hinzufügen.

    • Um eine Rolle zu verwenden, die berechtigt ist, den Amazon Kendra Query Kendra-Vorgang aufzurufen, wählen Sie Bestehende Rolle verwenden.

Verwenden von Anforderungs- und Sitzungsattributen als Filter

Um die Antwort von Amazon Kendra auf Elemente zu filtern, die sich auf die aktuelle Konversation beziehen, verwenden Sie Sitzungs- und Anforderungsattribute als Filter, indem Sie den queryFilterString Parameter hinzufügen, wenn Sie Ihren Bot erstellen. Sie geben einen Platzhalter für das Attribut an, wenn Sie die Absicht erstellen, und dann ersetzt Amazon Lex V2 einen Wert, bevor Amazon Kendra aufgerufen wird. Weitere Informationen zu Anforderungsattributen finden Sie unter Festlegen von Anforderungsattributen. Weitere Informationen über Sitzungsattribute finden Sie unter Festlegen von Sitzungsattributen.

Im Folgenden finden Sie ein Beispiel für einen queryFilterString Parameter, der eine Zeichenfolge verwendet, um die Amazon Kendra Kendra-Abfrage zu filtern.

"{"equalsTo": {"key": "City", "value": {"stringValue": "Seattle"}}}"

Im Folgenden finden Sie ein Beispiel für einen queryFilterString Parameter, der ein Sitzungsattribut verwendet, das aufgerufen wird"SourceURI", um die Amazon Kendra Kendra-Abfrage zu filtern.

"{"equalsTo": {"key": "SourceURI","value": {"stringValue": "[FileURL]"}}}"

Im Folgenden finden Sie ein Beispiel für einen queryFilterString Parameter, der ein Anforderungsattribut verwendet, das aufgerufen wird"DepartmentName", um die Amazon Kendra Kendra-Abfrage zu filtern.

"{"equalsTo": {"key": "Department","value": {"stringValue": "((DepartmentName))"}}}"

Die AMAZON.KendraSearchInteng Filter verwenden dasselbe Format wie die Amazon Kendra Kendra-Suchfilter. Weitere Informationen finden Sie unter Verwenden von Dokumentattributen zum Filtern von Suchergebnissen im Amazon Kendra Developer Guide.

Die mit dem verwendete Abfragefilterzeichenfolge AMAZON.KendraSearchIntent muss Kleinbuchstaben für den ersten Buchstaben jedes Filters verwenden. Der folgende ist beispielsweise ein gültiger Abfragefilter für. AMAZON.KendraSearchIntent

{ "andAllFilters": [ { "equalsTo": { "key": "City", "value": { "stringValue": "Seattle" } } }, { "equalsTo": { "key": "State", "value": { "stringValue": "Washington" } } } ] }

Verwenden der Suchantwort

Amazon Kendra gibt die Antwort auf eine Suche in der Absichtserklärung zurück. conclusion Die Absicht muss eine conclusion Aussage enthalten, es sei denn, eine Fulfillment-Lambda-Funktion erzeugt eine Abschlussnachricht.

Amazon Kendra bietet vier Arten von Antworten.

  • x-amz-lex:kendra-search-response-question_answer-question-<N>— Die Frage aus einer häufig gestellten Frage, die der Suche entspricht.

  • x-amz-lex:kendra-search-response-question_answer-answer-<N>— Die Antwort aus einer häufig gestellten Frage, die der Suche entspricht.

  • x-amz-lex:kendra-search-response-document-<N>— Ein Auszug aus einem Dokument im Index, der sich auf den Text der Äußerung bezieht.

  • x-amz-lex:kendra-search-response-document-link-<N>— Die URL eines Dokuments im Index, das sich auf den Text der Äußerung bezieht.

  • x-amz-lex:kendra-search-response-answer-<N>— Ein Auszug aus einem Dokument im Index, das die Frage beantwortet.

Die Antworten werden in request-Attributen zurückgegeben. Für jedes Attribut kann es bis zu fünf Antworten geben, nummeriert von 1 bis 5. Weitere Informationen zu Antworten finden Sie unter Antworttypen im Amazon Kendra Developer Guide.

Die Anweisung conclusion muss eine oder mehrere Nachrichtengruppen aufweisen. Jede Nachrichtengruppe enthält eine oder mehrere Nachrichten. Jede Nachricht kann eine oder mehrere Platzhaltervariablen enthalten, die in der Antwort von Amazon Kendra durch Anforderungsattribute ersetzt werden. In der Nachrichtengruppe muss mindestens eine Nachricht vorhanden sein, in der alle Variablen in der Nachricht durch Anforderungsattributwerte in der Laufzeitantwort ersetzt werden, oder in der Gruppe muss eine Nachricht ohne Platzhaltervariablen vorhanden sein. Die Anforderungsattribute werden durch doppelte Klammern ("((" "))") hervorgehoben. Die folgenden Nachrichtengruppennachrichten stimmen mit allen Antworten von Amazon Kendra überein:

  • „Ich habe eine häufig gestellte Frage für Sie gefunden: ((x-amz-lex: kendra-search-response-question _answer-question-1)), und die Antwort lautet ((: _answer-answer-1))“ x-amz-lex kendra-search-response-question

  • „Ich habe einen Auszug aus einem hilfreichen Dokument gefunden: ((: -1))“ x-amz-lex kendra-search-response-document

  • „Ich denke, die Antwort auf Ihre Fragen lautet ((x-amz-lex: kendra-search-response-answer -1))“

Verwenden einer Lambda-Funktion zur Verwaltung der Anfrage und Antwort

Die AMAZON.KendraSearchIntent Absicht kann Ihren Dialog-Code-Hook und Ihren Fulfillment-Code-Hook verwenden, um die Anfrage an Amazon Kendra und die Antwort zu verwalten. Verwenden Sie die Dialogcode-Hook-Lambda-Funktion, wenn Sie die Anfrage ändern möchten, die Sie an Amazon Kendra senden, und die Lambda-Funktion für den Fulfillment-Code-Hook, wenn Sie die Antwort ändern möchten.

Erstellen einer Abfrage mit dem Dialogcode-Hook

Sie können den Dialog-Code-Hook verwenden, um eine Abfrage zu erstellen, die an Amazon Kendra gesendet werden soll. Die Verwendung des Dialogcode-Hooks ist optional. Wenn Sie keinen Dialog-Code-Hook angeben, erstellt Amazon Lex eine Abfrage aus der Benutzeräußerung und verwendet diequeryFilterString, die Sie bei der Konfiguration der Absicht angegeben haben, sofern Sie eine angegeben haben.

Sie können zwei Felder in der Dialog-Code-Hook-Antwort verwenden, um die Anfrage an Amazon Kendra zu ändern:

  • kendraQueryFilterString— Verwenden Sie diese Zeichenfolge, um Attributfilter für die Amazon Kendra Kendra-Anforderung anzugeben. Sie können die Abfrage mithilfe eines beliebigen in Ihrem Index definierten Indexfelds filtern. Informationen zur Struktur der Filterzeichenfolge finden Sie unter Verwenden von Dokumentattributen zum Filtern von Abfragen im Amazon Kendra Developer Guide. Wenn die angegebene Filterzeichenfolge ungültig ist, erhalten Sie die Ausnahme InvalidLambdaResponseException. Die kendraQueryFilterString-Zeichenfolge überschreibt alle Abfragezeichenfolgen, die im für diese Absicht konfigurierten queryFilterString angegeben sind.

  • kendraQueryRequestPayload— Verwenden Sie diese Zeichenfolge, um eine Amazon Kendra Kendra-Abfrage anzugeben. Ihre Anfrage kann alle Funktionen von Amazon Kendra verwenden. Wenn Sie keine gültige Abfrage angeben, erhalten Sie die Ausnahme InvalidLambdaResponseException. Weitere Informationen finden Sie unter Query im Amazon Kendra Developer Guide.

Nachdem Sie den Filter oder die Abfragezeichenfolge erstellt haben, senden Sie die Antwort an Amazon Lex, wobei das dialogAction Feld der Antwort auf gesetzt istdelegate. Amazon Lex sendet die Anfrage an Amazon Kendra und sendet dann die Abfrageantwort an den Fulfillment-Code-Hook zurück.

Verwenden des Erfüllungscode-Hooks für die Antwort

Nachdem Amazon Lex eine Anfrage an Amazon Kendra gesendet hat, wird die Abfrageantwort an die AMAZON.KendraSearchIntent Fulfillment-Lambda-Funktion zurückgegeben. Das Eingabeereignis für den Code-Hook enthält die vollständige Antwort von Amazon Kendra. Die Abfragedaten haben dieselbe Struktur wie die, die von der Amazon Kendra Query Kendra-Operation zurückgegeben wurde. Weitere Informationen finden Sie unter Syntax der Abfrageantwort im Amazon Kendra Developer Guide.

Der Erfüllungscode-Hook ist optional. Wenn keine vorhanden ist oder wenn der Code-Hook keine Nachricht in der Antwort zurückgibt, verwendet Amazon Lex die conclusion Anweisung für Antworten.