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
- Eine Einführung in die Verwaltung des Status in Composer finden Sie im Composer-Konzeptartikel Konversationsfluss und Speicher.