变量概述

变量可以存在于四个级别或范围中:

  • 主题变量只能在创建变量所在的主题中使用。 此范围是您创建的变量的默认范围。
  • 全局变量可用于所有主题。 您可以更改主题变量的范围以使主题变量成为全局变量。
  • 系统变量是使用代理自动创建的。 它们提供有关对话或用户的更多上下文信息。 它们可用于所有主题。
  • 环境变量在 Power Platform 中创建,但在 Copilot Studio 中是只读的。 它们存储参数键和值,然后作为各种其他应用程序对象的输入,包括 Copilot Studio。 将参数与使用的对象分开可以在同一环境中或在将解决方案迁移到其他环境时更改值。 另一种选择是将硬编码参数值保留在使用它们的组件中。

变量类型

变量与基本类型关联。 类型决定了变量可以包含哪些值,以及在使用变量构造逻辑表达式时可以使用的运算符。

类型​​ 说明
String 用于表示文本的一系列字符
布尔型 只能为 truefalse 的逻辑值
数字 任何实数
值列表,但所有值必须是相同类型
记录 名称-值对(其中的值可以是任意类型)的集合
日期/时间 与时间点相关的日期、时间、周中某一天或月份
单选 具有关联同义词的字符串值的列表
空白 “无值”或“未知值”的占位符;有关详细信息,请参阅 Power Fx 中的空白

变量的类型是在首次为变量分配值时设置的。 此后,该变量的类型是固定的,它不能被赋予任何其他类型的值。 例如,给定起始值为 1 的变量会被分配数字类型。 尝试将其分配给字符串"apples" 将导致错误。

测试代理时,变量可能会暂时显示为未知类型。 尚未为未知变量分配值。

变量的顺序从创作画布的顶部向底部确定。 在底部节点之前先考虑创作画布顶部的节点。

当创建包含条件节点的分支时,分支按从左到右的顺序排序。 最左边的分支中的节点先于最右边分支中的节点考虑。

实体

Copilot Studio 使用实体从用户的回复中识别特定类型的信息。 标识的信息保存在适合该信息的类型变量中。 下表列出了与预生成实体关联的变量基类型。

Entity 变量的基类型
多选选项 单选
用户的完整响应 String
年限 数字
布尔型 布尔型
City String
Color String
String
国家或地区 String
日期和时间 日期/时间
Email String
活动 String
整型 整型
语言 String
金钱 数字
数字 数字
顺序 数字
组织 String
百分比 数字
人员姓名 String
电话号码 String
兴趣点 String
速度
String
街道地址 String
温度 数字
URL String
粗细 数字
邮政编码 String
自定义实体 单选

环境变量

环境变量是一个 Power Platform 概念。 环境变量支持在 Power Platform 环境之间移动应用程序的基本应用程序生命周期管理 (ALM) 方案。 在这种情况下,除了源环境和目标环境之间的一些关键外部引用不同之外,应用程序保持完全相同。

使用环境变量的方式与使用主题、全局和系统变量的方式相同。 一个显著的区别是,环境变量在 Copilot Studio 中是只读的。 在 Copilot Studio 中,代理创作者不能修改环境变量。 但在 Power Apps 中,管理员可以更改环境变量的值。 在 Copilot Studio 中,可以使用变量面板查看环境变量的相关信息。 变量面板也有一个指向本地创作体验的链接。

使用环境变量的代理的已发布版本包含代理发布时为这些变量设置的值。 只要管理员更新了环境变量,就必须重新发布使用这些变量的代理,这样更改才能在运行时生效。 但有一个例外:当密码类型的环境变量的值发生变化时,你不需要重新发布代理。 与其他环境变量不同,密码变量是在运行时检索的。

Copilot Studio 中的环境变量类型映射到 Power Apps 数据类型,如下所示:

键入 Copilot Studio 键入 Power Apps
十进制数 数字
JSON 从值中检测类型。 如果不是 Json => 未指定(验证错误)
文本 String
是/否 布尔型
Data source String
机密 String

备注

在测试聊天中和发布时,环境变量错误是可见的。 但是,这些错误不会显示在主题列表中,因为它们不是主题变量。

系统变量

每个代理都带有内置的系统变量,可提供有关对话的其他信息。

代理主题中系统变量的屏幕截图。

备注

有关启用语音的代理变量的详细信息,请参阅 使用语音变量

并非所有系统变量都会显示在列表中。 您必须使用 Power Fx 公式来访问这些隐藏的系统变量。

要在 Power Fx 公式中使用系统变量,则必须在变量名称前面添加 System.。 例如,要在公式中包含系统变量 User.DisplayName,请将其引用为 System.User.DisplayName

客户 类型​​ 定义
Activity.Attachments 用户提供的文件附件
Activity.Channel 选项 当前对话的渠道 ID
Activity.ChannelData 任意 一个包含渠道特定内容的对象
Activity.ChannelId string 字符串形式的当前对话的渠道 ID
Activity.From.Id string 发件人的特定于渠道的唯一 ID
Activity.From.Name string 发件人的特定于渠道的用户友好名称
Activity.Name string 事件的名称
Activity.Recipient.Id string 传入活动的类型属性。
Activity.Recipient.Name string 表示通道中代理的显示名称。 在电话通道上下文中,该变量的值是代理所连接的电话号码。
Activity.Text string 用户发送的最新消息
Activity.Type 选项 活动的类型
Activity.TypeId string 字符串形式的活动类型
Activity.Value 任意 开放式值
Bot.EnvironmentId string 代理的环境 ID
Bot.Id string 代理的 ID
Bot.Name string 代理的名称
Bot.SchemaName string 代理的架构名称
Bot.TenantId string 代理的租户 ID
ClientPluginActions 选项 生成式编排要考虑的动态客户端插件操作的集合
Conversation.Id string 当前对话的唯一 ID
Conversation.InTestMode 布尔型 表示对话是否在测试画布中进行的布尔标志
Conversation.LocalTimeZone string 用户使用的时区名称,采用 IANA 时区数据库格式
Conversation.LocalTimeZoneOffset datetime 当前本地时区相对于 UTC 的时间偏移量
Error.Code string 当前错误的错误代码。
当前错误的错误信息。
Error.Message string 当前错误的错误信息。
:仅当触发器为 On Error 时,才支持此变量。
FallbackCount 数字 此变量计算一个主题与用户输入不匹配的次数。
:仅当触发器为 On Unknown Intent 时,才支持此变量。
InactivityTimer.Continue 布尔型 表示计时器是否需要继续的布尔标志。
:仅当触发器为 Inactivity 时,才支持此变量。
InactivityTimer.Count 数字 在配置的时间后,由于用户不活动而触发 OnInactivity 计时器的次数。
:仅当触发器为 Inactivity 时,才支持此变量。
LastMessage.Id string 用户发送的上一条消息的 ID
LastMessage.Text string 用户发送的上一条消息
Recognizer.ExtractedEntities 选项 表示从触发消息中提取的实体。
:仅当触发器为 On Select Intent 时,才支持此变量。
Recognizer.IntentOptions 选项 表示识别器返回不明确结果时的意图选项。
:仅当触发器为 On Select Intent 时,才支持此变量。
Recognizer.SelectedIntent 选项 表示从识别器中选择的意图。
:仅当触发器为 On Select Intent 时,才支持此变量。
Recognizer.TriggeringMessage.Id string 触发当前主题的用户消息的 ID
Recognizer.TriggeringMessage.Text string 触发当前主题的用户消息
Recognizer.MultipleTopicsMatchedReason string 用于确定匹配多个主题的原因。
:仅当触发器为 On Select Intent 时,才支持此变量。
SignInReason 选项 用于确定触发主题时需要什么登录选项。
:仅当触发器为 On Sign In 时,才支持此变量。
User.Language 选项 此变量用于设置每个对话的用户语言环境。

集成式身份验证的变量(默认)

以下变量适用于配置为通过 Microsoft 身份验证的代理。 此配置使用 Microsoft Entra ID 身份验证,是新代理的默认配置。

有关详细信息,请参阅身份验证变量

客户 类型​​ 定义
User.DisplayName string 当前与代理通信的用户的显示名称。
User.Email string 当前与代理交谈的用户的电子邮件地址。
User.FirstName string 当前与代理对话的用户的名字。
User.Id string 当前与代理对话的用户的唯一 ID。
User.IsLoggedIn 布尔型 布尔标志,表示当前与代理通信的用户是否经过身份验证。
User.LastName string 当前与代理对话的用户的姓氏。
User.PrincipalName string 当前与代理对话的用户的用户主体名称。

用于使用通用 OAuth 2 进行手动身份验证的变量

下列变量适用于配置为使用通用 OAuth 2 服务提供程序的代理。

客户 类型​​ 定义
User.AccessToken string 使用代理进行身份验证的用户的访问令牌。
User.DisplayName string 当前与代理通信的用户的显示名称。
User.Id string 当前与代理对话的用户的唯一 ID。
User.IsLoggedIn 布尔型 布尔标志,表示当前与代理通信的用户是否经过身份验证。

使用 Microsoft Entra ID 进行手动身份验证的变量

以下变量适用于配置为使用 Microsoft Entra ID(以前为 Azure Active Directory)服务提供程序的代理。

客户 类型​​ 定义
User.AccessToken string 使用代理进行身份验证的用户的访问令牌。
User.DisplayName string 当前与代理通信的用户的显示名称。
User.Email string 当前与代理交谈的用户的电子邮件地址。
User.FirstName string 当前与代理对话的用户的名字。
User.Id string 当前与代理对话的用户的唯一 ID。
User.IsLoggedIn 布尔型 布尔标志,表示当前与代理通信的用户是否经过身份验证。
User.LastName string 当前与代理对话的用户的姓氏。
User.PrincipalName string 当前与代理对话的用户的主体名称。

支持语音的代理的变量

以下变量仅适用于支持语音的代理。

备注

有关启用语音的代理变量的详细信息,请参阅 使用语音变量

客户 类型​​ 定义
Activity.InputDTMFKeys string 从电话服务接收的原始 DTMF 键值。
Activity.SpeechRecognition.Confidence 数字 Azure Site Recovery 假设整体结果的置信度得分,从 0 到 1。
Activity.SpeechRecognition.MinimallyFormattedText string Azure Site Recovery 假设结果的稍微格式化的文本。 例如,“五百美元”。 单词已拼写完成,但包括基本的大写和标点符号。
Activity.UserInputType 选项 来自用户最新输入的输入类型。 该值可以是 test、speech 或 DTMF。
Conversation.OnlyAllowDTMF 布尔型 表示 IVR 是否应该在运行时设置为仅 DTMF 模式的布尔标志。
Conversation.SipUuiHeaderValue string 用于在呼叫开始时将上下文传递到 IVR 的 UUI 标头字符串。