Memory scopes and properties
APPLIES TO: Composer v1.x and v2.x
This article lists the properties that Composer sets by default, grouped by memory scope.
See Conversation flow and memory to find out how memory is used in Bot Framework Composer,
Memory properties are managed within the following scopes:
The scopes
Scope | Description |
---|---|
Settings | Read-only information from the bot configuration file. |
User | Properties associated with the current user. Properties in the user scope don't expire. These properties are in scope while the bot is processing an activity associated with the user. |
Conversation | Properties associated with the current conversation. Properties in the conversation scope have a lifetime of the conversation itself. These properties are in scope while the bot is processing an activity associated with the conversation. |
Dialog | Properties associated with the active dialog. Properties in the dialog scope are kept until the dialog ends. |
This | Properties associated with the current action. |
Turn | Properties associated with the current turn. |
Dialog context | Properties associated with the dialog stack. |
Dialog class | Information about the active dialog. |
Class | Information about the current action. |
Tip
- A turn consists of the user's incoming activity to the bot and any activities the bot sends back to the user as an immediate response. You can think of a turn as the processing associated with the bot receiving a given activity.
- Both user and conversation state are scoped by channel. The same person using different channels to access your bot appears as different users, one for each channel, and each with a distinct user state.
The next sections describe the properties that Composer automatically makes available to you. You can also define and access your own properties. See Conversation flow and memory for more about how memory scopes and properties are used in bot.
Settings scope
The settings scope lets you reference your bot's configuration settings.
To see your bot's current settings in Composer, go to the Configure page and turn on the Advanced Settings View (json). To access settings properties and subproperties from within adaptive expressions, use JSON notation. Alternatively, use the jPath adaptive expression prebuilt function to retrieve information from a settings property.
For example, default QnA Maker properties are:
"qna": {
"hostname": "",
"knowledgebaseid": "",
"qnaRegion": "westus",
"endpointKey": "",
"subscriptionKey": ""
},
To reference your knowledge base ID, use the adaptive expression, settings.qna.knowledgebaseid
.
Dialog scope
Variable | Description |
---|---|
dialog.eventCounter | Counter of emitted events. |
dialog.expectedProperties | Currently expected properties. |
dialog.lastEvent | Last surfaced entity ambiguity event. |
dialog.lastIntent | The last top scoring intent for this dialog. |
dialog.lastTriggerEvent | Inside a forms dialog, the forms event which triggered an Ask action. Note, the forms feature is in preview. |
dialog.requiredProperties | Currently required properties. |
dialog.retries | Number of retries for the current Ask. |
This scope
Variable | Description |
---|---|
this.options | The options passed into the active dialog via the options argument of the BeginDialog action. |
this.turnCount | The number of previous times the user was prompted for this information. Applies to input actions. |
this.value | The value to use as the default value. Applies to input actions. Can be an adaptive expression. |
Turn scope
Variable | Description |
---|---|
turn.activity | The current activity for the turn. For detailed information about the structure of an activity, see the Bot Framework Activity schema. |
turn.activity.action | |
turn.activity.attachments | A list of objects to be displayed as part of this activity. |
turn.activity.entities | A list of metadata objects pertaining to this activity. Unlike attachments, entities don't necessarily manifest as user-interactable content elements, and are intended to be ignored if not understood. |
turn.activity.from | Indicates which client, bot, or channel generated an activity. |
turn.activity.importance | For message activities: contains an enumerated set of values to signal to the recipient the relative importance of the activity. It's up to the receiver to map these importance hints to the user experience. |
turn.activity.locale | For message activities: the language code of the text field. |
turn.activity.localTimestamp | The datetime and timezone offset where the activity was generated. This may be different from the UTC timestamp where the activity was recorded. |
turn.activity.localTimezone | The timezone where the activity was generated. |
turn.activity.name | The name of the activity, if any. |
turn.activity.recipient | Indicates which client or bot is receiving this activity. |
turn.activity.semanticAction | For message activities: contains an optional programmatic action accompanying the user request. The semantic action field is populated by the channel and bot based on some understanding of what the user is trying to accomplish. |
turn.activity.speak | For message activities: indicates how the activity should be spoken via a text-to-speech system. |
turn.activity.suggestedActions | For message activities: contains a payload of interactive actions that may be displayed to the user. Support for suggestedActions and their manifestation depends heavily on the channel. |
turn.activity.summary | For message activities: contains text used to replace attachments on channels that don't support them. |
turn.activity.text | For message activities: the text content, either in the Markdown format, XML, or as plain text. |
turn.activity.timestamp | The exact UTC time when the activity occurred, as recorded by the channel. |
turn.activity.topicName | |
turn.activity.type | The activity's type, such as "message", "event", or "conversationUpdate", and so on. |
turn.activity.value | For message activities, contains a programmatic payload specific to the activity being sent. |
turn.activityProcessed | Indicates whether the original turn activity was consumed. |
turn.dialogEvent | The current dialog event for this turn. |
turn.interrupted | Indicates whether an interruption occurred. |
turn.lastresult | The result from the last dialog that was called. |
turn.recognized | The recognized result for the current turn. |
turn.recognized.alteredText | The input text as modified by the recognizer, for example for spelling correction. |
turn.recognized.entities | All recognized top-level entities. |
turn.recognized.intent | The top scoring intent. |
turn.recognized.intents | All recognized intents, with the intent as key and the confidence as value. |
turn.recognized.score | The score for the top intent. |
turn.recognized.text | The input text to the recognizer. |
turn.recognizedEntities | Entities recognized from the text. |
turn.repeatedIds | For internal use only. |
turn.unrecognizedText | The original text, split into unrecognized strings. |
Tip
The turn.activity
property represents the activity your bot received from the user or the user's channel this turn. For detailed information about the activity object's properties, see the Bot Framework Activity schema.