您可以使用变量来保存客户的回答,并在稍后的对话中重复使用他们的内容。
还可以使用变量创建逻辑表达式以沿着不同对话路径动态传递客户。 例如,将客户的姓名保存在名为 "customerName" 的变量中,代理可以在对话继续时按姓名处理该客户。
变量也可以传递到其他主题和Power Automate 流并从其中返回。
创建变量
提示您选择变量作为输出的任何节点,例如问题节点,都会自动创建一个合适类型的输出变量。
小费
重命名节点,使其更容易识别。 选择节点的名称字段以直接更新名称,或者选择节点的更多图标 (…),然后从菜单中选择重命名。 您也可以在代码编辑器中重命名节点。
无法重命名触发器节点和转到步骤节点。
节点名称最长可达 500 个字符。
选取要使用的实体
重命名变量
创建变量时会自动为变量分配一个名称。 最佳做法是为您的变量提供有意义的名称,以便向必须维护您的代理的其他人明确其用途。
选择变量,在变量属性面板中打开变量。
在变量名称下面,请为变量输入新名称。
设置变量
通常使用问题节点将用户输入存储到变量中。 但是,在某些情况下,您可能希望自己设置变量值。 在这种情况下,请使用设置变量值节点。
选择添加节点(+)以添加节点,然后选择变量管理>设置变量值。
选中设置变量下面的方框,然后选择创建新变量。
创建了新变量。 在为其赋值之前,其类型是未知。
对于目标值,使用以下选项之一分配一个值:
- 键入文字值。
- 选择同一类型的现有变量。 此操作会将您的变量设置为与您选择的变量相同的值。
- 使用 Power Fx 公式。 Power Fx 公式对于不能使用文字值的更复杂类型很有用,例如表和记录类型。
备注
在设置字符串类型变量时,如果遇到设置变量和目标值不匹配,则会出现错误信息和修复类型不匹配按钮。 选择该按钮可 Copilot Studio 自动生成 Power Fx 解决不匹配的公式 。
在操作节点中使用变量
当您在操作节点中使用变量时,如果其基本类型与为流或 Bot Framework 技能指定的参数类型匹配,您可以将其提供给该参数。 操作节点的输出会生成新变量。
为变量输入使用文字值
在可以为输入参数设置值的节点中,可以输入文字值,而不是选择其他变量作为值。
该节点尝试将文字值解释为字符串、数字或布尔值。 例如,123 将被解释为一个数字。 如果您希望将其解释为字符串值,您可以用双引号括住此值,如下所示:"123"。
在某些情况下(例如,使用复杂类型的情况),您可能需要使用 Power Fx 公式来设置特定类型。
将环境变量用于 Azure Key Vault 密码
环境变量可以引用密钥保管库中的密码。 密钥环境变量是一种特殊的环境变量,有唯一的注意事项。
要在 Power Apps 门户中创建密码环境变量,您必须配置其密钥保管库。
要授权 Copilot Studio 读取此密钥保管库,必须执行以下操作:
将
Key Vault Secrets User
角色分配给Microsoft Virtual Agents Service
应用程序。要授权环境中的所有代理访问密钥,请在密钥上创建标记
AllowedEnvironments
,并添加允许的环境 ID,以逗号分隔。若要仅授权环境中的特定代理使用此密钥保管库,请创建标记
AllowedAgents
并将代理标识符置于格式{envId}/{schemaName}
中。 对于多个值,用逗号分隔这些值。
如果达到最大字符数,但仍需要添加更多代理,请添加另一个具有描述性但唯一名称的标记(例如:AllowedAgents2
)。
密码值在对话运行时缓存五分钟。 不成功的读取会缓存 30 秒。
警告
通过在代理中添加密钥,您可以向可以在环境中编辑代理的所有用户公开此密钥的值,因为这些用户可以编辑代理以返回 SendMessage
节点中的值。
变量面板
在变量面板中,您可以查看某个主题的所有可用变量,无论这些变量在哪个节点中定义或使用。 对于每个变量,您可以选择它是可以从其他主题接收其值、将其值返回给其他主题,还是两者均可。 您还可以在变量属性面板中选择一个变量来编辑其属性。
要打开变量面板,请在主题的菜单栏中选择变量。
变量属性面板
在变量属性面板中,您可以重命名变量,查看变量使用位置,或者将变量转换为全局变量。 但是,不能将全局变量转换回主题变量。 您还可以选择主题变量是否可以接收值或将其值传递给其他主题。
要打开某个变量的变量属性面板,请在变量面板中选择所需的变量。 您还可以通过在任何节点中选择一个变量来打开变量属性面板。
在主题之间传递变量
当您将一个主题重定向到另一个主题时,可以将变量的值从原始主题传递到目标主题,还可以将目标主题的值返回原始主题。 当前面的主题已经收集了后面的主题需要的信息时,在主题之间传递变量特别有用。 您的用户会很高兴不必再次回答相同的问题。
接收其他主题中的值
当主题定义变量时(例如,通过问题节点),代理会询问用户问题来填写变量值。 如果代理在前面的主题中已获取值,则没有理由再次提问。 在这些情况下,您可以将变量设置为接收其他主题中的值。 当另一个主题重定向到此主题时,它可以将任一变量值(或文字值)传递给此变量,并会跳过问题。 用户与代理交谈的体验是无缝的。
在此示例中,我们将使用问候语和与客户交谈这两个主题。 这两个主题都询问客户的名称。 但是,如果问候语主题先运行,与客户交谈主题会跳过它的问题。 而是使用了问候语主题中传递的变量值。
下面是与客户交谈主题的流:
如测试面板中所示,如果首先触发了此主题,它询问用户“我应该调用您什么?”它将值存储在一个称为 customerName 的字符串变量中。 customerName 变量也被设置为从其他主题获取值。 该主题以“希望您今天过得愉快,customerName!”结束。
下面是问候语主题的流:
如测试面板中所示,如果首先触发此主题,则它会询问用户“你叫什么名字?”它会将值存储在名为 customerName 的字符串变量中。 此主题发送消息“很高兴认识你,customerName!”,然后它重定向到与客户交谈主题,该主题发送消息“我希望你今天过得愉快,customerName!”但是请注意,与客户交谈主题跳过了再次询问用户姓名这一步骤。 相反,它使用从问候语主题传递的 customerName 变量的值。
最后,再次进行第二次对话,这次是从与客户交谈主题的角度出发:
我们来演练一下设置主题以从其他主题接收值的步骤。 我们的示例场景使用预定义主题问候语作为源主题,并使用新主题与客户交谈作为目标主题,但同样的步骤也适用于任何主题,只要有可能,都应使用先前主题的值。
设置目标主题
目标主题是要重定向到的主题,即从其他主题接收值的主题。 在我们的示例中,它是与客户交谈。
创建新主题并称其为“与客户交谈”。
添加触发短语,如“与我交谈”、“与我说话”、“与我聊天”。
添加问题节点,并输入“我该怎么称呼您?
在识别下面,选择预生成的实体人员姓名。
选择变量的名称。 这时会打开变量属性面板。
用 "customerName" 替换默认名称,然后选择从其他主题接收值。
添加消息节点。
在消息框中输入“我希望你今天过得愉快”。
选择插入变量图标 ({x}),然后选择 customerName。
选择变量后的空格并输入 "!"。
保存主题。
设置源主题
源主题是进行重定向的主题,该主题提供值且将其传递给目标主题。 在本示例中,此为问候语。
转到问候语主题,删除默认节点,触发器节点除外。
添加问题节点,输入“您叫什么名字?”。
在识别下面,选择预生成的实体人员姓名。
将默认名称替换为“customerNameFromGreeting”。
添加消息节点。
在信息框中输入“很高兴见到您”。
选择插入变量图标({x}),然后选择 customerNameFromGreeting。
选择变量后的空格并输入 "!"。
添加重定向节点,并选择目标主题与客户交谈。
选择添加输入,然后从要向其传递值的目标主题中选择变量。
选择 > 图标,然后选择要传递值的变量,本例中为 customerNameFromGreeting。
重定向节点应如下所示:
保存主题。
将值返回到原始主题
当一个主题通过提问或其他方式被重定向到并获取一个变量时,该变量可以返回到原始主题。 此变量会成为原始主题的一部分,可以像任何其他变量一样使用。 因此,代理获取的信息可跨主题提供,从而减少对全局变量的需要。
我们继续上一节中的示例。 我们在与客户交谈主题中提出一个新问题,然后将答案返回给问候语主题。
为返回的变量设置源主题
在将变量返回到主题时,源主题是提供要传递回原始主题的值的主题。 在本例中,源主题是与客户交谈。
转到源主题。
添加一个问题节点,输入“您住在哪个城市?”
在识别下面,选择预生成的实体城市。
选择变量以打开变量属性面板。 将其命名为“customerCity”,然后选择将值返回到原始主题。
添加消息节点。
选择插入变量图标({x}),然后选择 customerCity。
在信息框中的变量后输入“每年的这个时候一定很美!”。
保存主题。
为返回的变量设置目标主题
在将变量返回到主题时,目标主题是从当前主题接收值的主题。 在我们的示例中,目标主题是问候语。
转到目标主题。
您在源主题中选择的变量应该作为输出变量出现在重定向节点中。
保存主题。
“分析值”节点
分析值节点允许您将一种类型的值转换为另一种类型的值。 向主题添加节点时,请选择添加节点图标 ,指向变量管理并选择解析值。
使用分析值节点的主要场景侧重于将原始 JSON 或非类型化变量(其值或结构直到运行时才知道;例如 ChannelData)转换为具体类型。
该流程在调用流时启动,而此流则会调用 API。 然后,API 返回结果。 通常,您需要解析该响应并返回一个或多个原始变量。 使用分析值节点,可以将整个 API 结果作为字符串发送。 例如:
{
"Name": "Parker",
"Position": "Product manager",
"Company": "Contoso",
"FormerPositions": [{
"Position": "Customer service representative"
}
]
}
使用这个新节点,您现在拥有的字符串变量可以通过 Power Fx 中的全面智能感知支持转换为记录变量。 以下使用示例数据的示例演示了此过程。
使用“分析值”节点的示例
添加分析值节点,然后选择要解析的变量。
选择数据类型。 在这种情况下,请选择从示例数据。
选择 从 JSON 示例中获取模式,然后在打开的编辑器中输入所需的 JSON 示例。
最后,指定要将解析值放入哪个变量中。 通常,你会创建一个新变量。
输出变量现在是正确的类型:记录。
除了解析 JSON 字符串,解析值节点的一个主要用途是在运行时解析非类型对象。 最常见的使用案例是收到事件时需要解析该事件值。 或者您可能想解析 System.Activity.ChannelData 属性,该属性在运行时因区段而异。
如果您要解析来自 Teams 的事件信息,您需要使用 Teams 开发人员文档查找预期事件的示例,然后将此示例用作本节前面概述的示例数据。