Verwalten des Zustands in adaptiven Dialogen – ReferenzhandbuchManaging state in adaptive dialogs - reference guide

gilt für: SDK v4APPLIES TO: SDK v4

Dieser Artikel enthält technische Details, die Ihnen bei der Arbeit mit Speicherbereich in adaptiven Dialogen helfen.This article provides technical details that will help you work with memory scopes in adaptive dialogs. Eine Einführung in Speicherbereich und die Verwaltung des Zustands in adaptiven Dialogen finden Sie im Artikel Unterhaltungsfluss und Speicher– Composer-Konzept.For an introduction to memory scopes and managing state in adaptive dialogs, see the Conversation flow and memory Composer concept article.

Tipp

Bei Eigenschaftenpfaden wird nie zwischen Groß- und Kleinschreibung unterschieden.All property paths are case-insensitive. Beispielsweise ist user.name identisch mit user.Name.For example, user.name is the same as 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.Also, if you do not have a property named user.name and you create a property named user.name.first the user.name object will automatically be created for you.

BenutzerbereichUser scope

Der Benutzerbereich umfasst persistente Daten bezogen auf die ID des Benutzers, mit dem Sie eine Konversation betreiben.User scope is persistent data scoped to the ID of the user you are conversing with.

Beispiele:Examples:

  • user.name
  • user.address.city

KonversationsbereichConversation scope

Der Konversationsbereich umfasst persistente Daten bezogen auf die ID der Konversation.Conversation scope is persistent data scoped to the ID of the conversation you are having.

Beispiele:Examples:

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

DialogbereichDialog scope

Im Dialogbereich werden Daten für die Lebensdauer des zugeordneten Dialogs beibehalten. Er bietet Speicherplatz für jeden Dialog als interne persistente Buchführung.Dialog scope persists data for the life of the associated dialog, providing memory space for each dialog to have internal persistent bookkeeping. Der Dialogbereich wird gelöscht, wenn der zugehörige Dialog endet.Dialog scope is cleared when the associated dialog ends.

Kurzformbeispiele für den Dialogbereich:Dialog scope shorthand examples:

  • Die Kurzhand für dialog.orderStarted ist $orderStarted .The shorthand for dialog.orderStarted is $orderStarted.
  • Die Kurzhand für dialog.shoppingCart ist $shoppingCart .The shorthand for dialog.shoppingCart is $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.All options passed into BeginDialog when creating a new adaptive dialog become properties of that dialog and can be accessed as long as it is in scope. Sie greifen über den Namen auf diese Eigenschaften zu: „dialog.<propertyName>“.You access these properties by name: dialog.<propertyName>. Wenn der Aufrufer beispielsweise {a: '1', b: '2'} übergibt, werden diese als dialog.a und dialog.b festgelegt.For example, if the caller passed {a : '1', b: '2'} then they will be set as dialog.a and dialog.b.

DialogunterbereicheDialog sub-scopes

Alle Triggeraktionen in einem adaptiven Dialog verfügen über eigene Unterbereiche, auf die über den Namen zugegriffen wird. Beispielsweise wird auf die Aktion Foreach als dialog.Foreach zugegriffen.All trigger actions in an adaptive dialog have their own sub-scopes and are accessed by name, for example the Foreach action is accessed as 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.By default, the index and value are set in the dialog.foreach scope, which can be accessed as dialog.Foreach.index and dialog.Foreach.value.

DurchlaufbereichTurn scope

Der Durchlaufbereich enthält nicht persistente Daten, die nur für den aktuellen Durchlauf gültig sind.The turn scope contains non-persistent data that is only scoped for the current turn. Der Durchlaufbereich bietet eine Möglichkeit zum Freigeben von Daten für die Lebensdauer des aktuellen Durchlaufs.The turn scope provides a place to share data for the lifetime of the current turn.

Beispiele:Examples:

  • turn.bookingConfirmation
  • turn.activityProcessed

DurchlaufunterbereicheTurn sub-scopes

turn.activityturn.activity

Jede eingehende Aktivität für den Bot, ist über den Bereich turn.activity verfügbar.Each incoming activity to the bot is available via turn.activity scope.

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:For example, you might have something like this defined in our .lg file to respond to a user that entered an invalid value when prompted for their age:

Sorry, I do not understand '${turn.activity.text}'. ${GetAge()}

turn.recognizedturn.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.All intents and entities returned from a recognizer on any given turn, are automatically set in the turn.recognized scope and remain available until the next turn occurs. Der Bereich turn.recognized verfügt über drei Eigenschaften:the turn.recognized scope has three properties:

  • turn.recognized.intents.xxx: Eine Liste der besten Absichten, die von der Erkennung für diesen Durchlauf klassifiziert wurden.turn.recognized.intents.xxx: A list of the top intents classified by the recognizer for that turn.
  • turn.recognized.entities.xxx: Eine Liste der in diesem Durchlauf erkannten Entitäten.turn.recognized.entities.xxx: A list of entities recognized that turn.
  • turn.recognized.score: Die Zuverlässigkeitsbewertung der höchsten Absicht mit dem höchsten Score für diesen Durchlauf.turn.recognized.score: The confidence score of the top scoring intent for that turn.

turn.dialogEventturn.dialogEvent

turn.dialogEvent enthält die Nutzlast eines Ereignisses, das vom System oder von Ihrem Code ausgelöst wurde.turn.dialogEvent contains the payload of an event raised either by the system or your code. Sie können auf die in der Nutzlast enthaltenen Informationen zugreifen, indem Sie auf den Bereich „turn.dialogEvent.<eventName>.value“ zugreifen.You can access the information contained in the payload by accessing the turn.dialogEvent.<eventName>.value scope.

turn.lastResultturn.lastResult

Sie können auf die Ergebnisse aus dem letzten Dialog zugreifen, der aus dem Bereich turn.lastResult aufgerufen wurde.You can access the results from the last dialog that was called from the turn.lastResult scope.

turn.activityProcessedturn.activityProcessed

turn.activityProcessed ist eine boolesche Eigenschaft, die bei Festlegung bedeutet, dass turnContext.activity von einer Komponente im System verarbeitet wurde.turn.activityProcessed, a boolean property which if set means that turnContext.activity has been consumed by some component in the system.

turn.interruptedturn.interrupted

turn.interrupted ist eine boolesche Eigenschaft: true gibt an, dass eine Unterbrechung aufgetreten ist.turn.interrupted, a Boolean property; true indicates that an interruption has occurred.

EinstellungsbereichSettings scope

Dies stellt alle Einstellungen dar, die dem Bot über das plattformspezifische Einstellungskonfigurationssystem zur Verfügung gestellt werden. Wenn Sie z. B. Ihren Bot mit C# entwickeln, werden diese Einstellungen in der Datei appsettings.jsangezeigt.This represents any settings that are made available to the bot via the platform specific settings configuration system, for example if you are developing your bot using C#, these settings will appear in the appsettings.json file..

Beispiel für den EinstellungsbereichSettings scope example

Dies ist ein Beispiel für die Datei „appsettings.json“, die Konfigurationseinstellungen für Ihren Bot enthält:This is an example of an appsettings.json file that holds configuration settings for your bot:

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

this-BereichThis scope

Der this-Bereich bezieht sich auf den Eigenschaftenbehälter für die aktive Aktion.The this scope pertains the active action's property bag. Dies ist hilfreich für Eingabeaktionen, da deren Lebensdauer in der Regel über einen einzelnen Konversationsdurchlauf hinausgeht.This is helpful for input actions since their life type typically lasts beyond a single turn of the conversation.

  • this.value enthält den aktuellen erkannten Wert für die Eingabe.this.value holds the current recognized value for the input.
  • this.turnCount gibt an, wie oft die fehlenden Informationen für diese Eingabe angefordert wurden.this.turnCount holds the number of times the missing information has been prompted for this input.

KlassenbereichClass scope

Dieser enthält die Instanzeigenschaften des aktiven Dialogs.This holds the instance properties of the active dialog. Sie verweisen auf diesen Bereich wie folgt: ${class.<propertyName>}.you reference this scope as follows: ${class.<propertyName>}.

Zusätzliche InformationenAdditional information