Verwalten des Zustands in adaptiven Dialogen - Anleitung

GILT FÜR: SDK v4

Dieser Artikel enthält technische Details, die Ihnen bei der Arbeit mit Speicherbereichen in adaptiven Dialogfeldern helfen. Eine Einführung in Speicherbereiche und das Verwalten des Zustands in adaptiven Dialogfeldern finden Sie im Composer-Konzeptartikel Unterhaltungsfluss und Speicher

Tipp

Bei Eigenschaftenpfaden wird nie zwischen Groß- und Kleinschreibung unterschieden. user.name entspricht beispielsweise user.Name. Wenn Sie nicht über eine Eigenschaft mit dem Namen user.name verfügen und eine Eigenschaft mit dem Namen user.name.first erstellen, wird das user.name-Objekt außerdem automatisch erstellt.

Benutzerbereich

Der Benutzerbereich umfasst persistente Daten bezogen auf die ID des Benutzers, mit dem Sie eine Konversation betreiben.

Beispiele:

  • user.name
  • user.address.city

Konversationsbereich

Der Konversationsbereich umfasst persistente Daten bezogen auf die ID der Konversation.

Beispiele:

  • conversation.hasAccepted
  • conversation.dateStarted
  • conversation.lastMaleReference
  • conversation.lastFemaleReference
  • conversation.lastLocationReference

Dialogbereich

Im Dialogbereich werden Daten für die Lebensdauer des zugeordneten Dialogs beibehalten. Er bietet Speicherplatz für jeden Dialog als interne persistente Buchführung. Der Dialogbereich wird gelöscht, wenn der zugehörige Dialog endet.

Kurzformbeispiele für den Dialogbereich:

  • Die Kurzform für dialog.orderStarted ist $orderStarted.
  • Die Kurzform für dialog.shoppingCart ist $shoppingCart.

Alle Optionen, die beim Erstellen eines neuen adaptiven Dialogs an BeginDialog übergeben werden, werden zu Eigenschaften dieses Dialogs und können so lange aufgerufen werden, wie er im Gültigkeitsbereich liegt. Sie greifen über den Namen auf diese Eigenschaften zu: <dialog.Eigenschaftenname>. Wenn der Aufrufer beispielsweise {a : '1', b: '2'} übergeben wurde, wird er als Dialog.a und dialog.b festgelegt.

Dialogunterbereiche

Alle Triggeraktionen in einem adaptiven Dialog verfügen über eigene Unterbereiche, auf die über den Namen. Auf die Foreach Aktion wird z. B. zugegriffen als dialog.Foreach. Standardmäßig werden der Index und der Wert im Bereich dialog.foreach festgelegt, auf den als dialog.Foreach.index und dialog.Foreach.value zugegriffen werden kann.

Durchlaufbereich

Der Durchlaufbereich enthält nicht persistente Daten, die nur für den aktuellen Durchlauf gültig sind. Der Durchlaufbereich bietet eine Möglichkeit zum Freigeben von Daten für die Lebensdauer des aktuellen Durchlaufs.

Beispiele:

  • turn.bookingConfirmation
  • turn.activityProcessed

Durchlaufunterbereiche

turn.activity

Jede eingehende Aktivität für den Bot, ist über den Bereich turn.activity verfügbar.

Beispielsweise kann es vorkommen, dass in unserer LG-Datei als Antwort auf einen Benutzer, der als Angabe seines Alters einen ungültigen Wert eingegeben hat, etwas Ähnliches wie dies definiert ist:

Sorry, I don't understand '${turn.activity.text}'. ${GetAge()}

turn.recognized

Alle von einer Erkennung in einem Durchlauf zurückgegebenen Absichten und Entitäten werden automatisch im Bereich turn.recognized festgelegt und bleiben bis zum nächsten Durchlauf verfügbar. Der Bereich turn.recognized verfügt über drei Eigenschaften:

  • turn.recognized.intents.xxx: Eine Liste der besten Absichten, die von der Erkennung für diesen Durchlauf klassifiziert wurden.
  • turn.recognized.entities.xxx: Eine Liste der in diesem Durchlauf erkannten Entitäten.
  • turn.recognized.score: Die Konfidenzbewertung der höchsten Absicht mit dem höchsten Score für diesen Durchlauf.

turn.dialogEvent

turn.dialogEvent enthält die Nutzlast eines Ereignisses, das vom System oder von Ihrem Code ausgelöst wurde. Sie können auf die in der Nutzlast enthaltenen Informationen zugreifen, indem Sie auf den Bereich turn.dialogEvent.<eventName>.value zugreifen.

turn.lastResult

Sie können auf die Ergebnisse aus dem letzten Dialog zugreifen, der aus dem Bereich turn.lastResult aufgerufen wurde.

turn.activityProcessed

turn.activityProcessed ist eine boolesche Eigenschaft true, die bei Festlegung angibt, dass turnContext.activity von einer Komponente im System verarbeitet wurde.

turn.interrupted

turn.interrupted ist eine boolesche Eigenschaft: true gibt an, dass eine Unterbrechung aufgetreten ist.

Einstellungsbereich

Dies umfasst alle Einstellungen, die dem Bot über das plattformspezifische Einstellungskonfigurationssystem zur Verfügung gestellt werden. Wenn Sie beispielsweise den Bot mit C# entwickeln, sind diese Einstellungen in der Datei appsettings.json aufgeführt.

Beispiel für den Einstellungsbereich

Dies ist ein Beispiel für die Datei appsettings.json, die Konfigurationseinstellungen für Ihren Bot enthält:

{
    "MicrosoftAppId": "<yourMicrosoftAppId>",
    "MicrosoftAppPassword": "<yourMicrosoftAppPassword>",
    "QnAMaker": {
        "knowledgebaseId": "<yourQnAKnowledgebaseId>",
        "hostname": "https://<YourHostName>.azurewebsites.net/qnamaker",
        "endpointKey": "yourEndpointKey"
    }
}

this-Bereich

Der this-Bereich bezieht sich auf den Eigenschaftenbehälter für die aktive Aktion. Dies ist hilfreich für Eingabeaktionen, da deren Lebensdauer in der Regel über einen einzelnen Konversationsdurchlauf hinausgeht.

  • this.value enthält den aktuellen erkannten Wert für die Eingabe.
  • this.turnCount gibt an, wie oft die fehlenden Informationen für diese Eingabe angefordert wurden.

Klassenbereich

Dieser enthält die Instanzeigenschaften des aktiven Dialogs. Sie verweisen auf diesen Bereich wie folgt: ${class.<propertyName>}.

Weitere Informationen