自适应对话中的管理状态 - 参考指南

适用于:SDK v4

本文介绍技术详细信息,可帮助你处理自适应对话中的内存范围。 有关自适应对话中内存范围和管理状态的介绍,请参阅对话流和内存 Composer 概念一文。

提示

所有属性路径均不区分大小写。 例如,user.nameuser.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.indexdialog.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>.chinacloudsites.cn/qnamaker",
        "endpointKey": "yourEndpointKey"
    }
}

This 范围

this 范围包含可用操作的属性包。 这对于输入操作非常有用,因为它们的生存期类型通常持续不止一轮对话。

  • this.value 包含当前识别的输入的值。
  • this.turnCount 包含已针对此输入提示提供缺少信息的次数。

类范围

此项包含活动对话的实例属性。 按如下所示引用 this 范围:${class.<propertyName>}

其他信息

  • 有关 Composer 中管理状态的介绍,请参阅对话流和内存 Composer 概念一文。