你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
自适应对话中的管理状态 - 参考指南
适用于:SDK v4
本文介绍技术详细信息,可帮助你处理自适应对话中的内存范围。 有关自适应对话中内存范围和管理状态的介绍,请参阅对话流和内存 Composer 概念一文。
提示
所有属性路径均不区分大小写。 例如,user.name
和 user.Name
相同。 此外,如果没有名为 user.name
的属性并创建了名为 user.name.first
的属性,则会自动创建 user.name
对象。
用户范围
用户范围是永久性数据,其作用域为正在与你进行对话的用户的 ID。
示例:
user.name
user.address.city
会话范围
会话范围是永久性数据,其作用域为你正在进行的对话的 ID。
示例:
conversation.hasAccepted
conversation.dateStarted
conversation.lastMaleReference
conversation.lastFemaleReference
conversation.lastLocationReference
对话范围
对话范围在关联的对话的生命期内保留数据,从而为每个对话提供具有内部持久簿记的内存空间。 关联的对话结束时,会清除对话范围。
对话范围速记示例:
dialog.orderStarted
的简写 是$orderStarted
。dialog.shoppingCart
的简写 是$shoppingCart
。
创建新的自适应对话时,传递到 BeginDialog
中的所有选项都将成为该对话的属性,并且只要对话在范围内,就可以访问这些属性。 可通过名称访问这些属性:dialog.<propertyName>。 例如,如果调用方传递了 {a : '1', b: '2'},则将它们设置为 dialog.a 和 dialog.b。
对话子范围
自适应对话中的所有触发器操作都有它们自己的子范围,可通过名称访问。 例如,Foreach
操作作为 dialog.Foreach
访问。 默认情况下,索引和值都在 dialog.foreach
范围中设置,可通过 dialog.Foreach.index
和 dialog.Foreach.value
名称访问该范围。
轮次范围
轮次范围包含作用域仅限当前轮次的非永久性数据。 轮次范围提供在当前轮次的生存期内共享数据的位置。
示例:
turn.bookingConfirmation
turn.activityProcessed
轮次子范围
turn.activity
可通过 turn.activity
范围访问每个传入机器人的活动。
例如,你可能具有类似于在 .lg 文件中定义的此内容,用于在提示用户输入其年龄时对用户输入的无效值进行响应:
Sorry, I don't understand '${turn.activity.text}'. ${GetAge()}
turn.recognized
在任何给定的轮次中,从识别器返回的所有意向和实体都将在 turn.recognized
范围内自动设置,并保持可用状态,直到进行下一轮。 turn.recognized
范围有三个属性:
turn.recognized.intents.xxx
:识别器针对该轮次分类的排名靠前的意向列表。turn.recognized.entities.xxx
:该轮次中已识别的实体的列表。turn.recognized.score
:该轮次中分数最高的意向的置信度分数。
turn.dialogEvent
turn.dialogEvent
包含由系统或代码引发的事件负载。 可通过访问 turn.dialogEvent.<eventName>.value
范围访问负载中包含的信息。
turn.lastResult
可以从 turn.lastResult
范围中调用的最后一个对话中访问结果。
turn.activityProcessed
turn.activityProcessed
是一个布尔值属性,true
表示系统中的某些组件已使用 turnContext.activity
。
turn.interrupted
turn.interrupted
是一个布尔值属性;如果为 true
,则表示已发生中断。
设置范围
这表示通过平台特定设置配置系统向机器人提供的任何设置,例如,如果使用 C# 开发机器人,则这些设置将显示在 appsettings.json 文件中。
设置范围示例
这是保留机器人配置设置的 appsettings.json 文件的示例:
{
"MicrosoftAppId": "<yourMicrosoftAppId>",
"MicrosoftAppPassword": "<yourMicrosoftAppPassword>",
"QnAMaker": {
"knowledgebaseId": "<yourQnAKnowledgebaseId>",
"hostname": "https://<YourHostName>.azurewebsites.net/qnamaker",
"endpointKey": "yourEndpointKey"
}
}
This 范围
this
范围包含可用操作的属性包。 这对于输入操作非常有用,因为它们的生存期类型通常持续不止一轮对话。
this.value
包含当前识别的输入的值。this.turnCount
包含已针对此输入提示提供缺少信息的次数。
类范围
此项包含活动对话的实例属性。 按如下所示引用 this 范围:${class.<propertyName>}
。
其他信息
- 有关 Composer 中管理状态的介绍,请参阅对话流和内存 Composer 概念一文。