使用变量

可以使用变量来存储客户的响应,并在对话中稍后重复使用其内容。

还可以使用变量创建逻辑表达式以沿着不同对话路径动态传递客户。 例如,将客户的姓名保存在名为 "customerName" 的变量中,智能体可以在对话继续时按姓名处理该客户。

变量也可以传递到其他主题Power Automate 流并返回。

创建变量

返回输出的任何节点(如 问题 节点)都会自动创建相应类型的输出变量。

问题节点的屏幕截图,其中突出显示了变量的默认名称和类型。

提示

重命名节点,使其更容易识别。 选择节点名称字段直接更新名称,或选择节点的三个点(...),然后从菜单中选择 重命名 。 您也可以在代码编辑器中重命名节点。

无法重命名触发器节点和转到步骤节点。

节点名称最长可达 500 个字符。

选取要使用的实体

默认情况下,将创建具有多选选项的问题节点。 若要使用不同的 预生成实体或自定义实体,请选择“ 标识 ”框,然后选择所需的信息类型。

已打开“选择信息以识别”面板的问题节点的屏幕截图。

重命名变量

创建变量时会自动为变量分配一个名称。 最佳做法是为变量提供有意义的名称,以便向任何必须维护代理的人员明确其用途。

  1. 选择变量。 将出现变量属性面板。

  2. “变量名称”下,输入变量的所需名称。

设置变量

通常使用问题节点将用户输入存储到变量中。 但是,在某些情况下,你可能想要自行设置变量的值。 在这种情况下,请使用设置变量值节点。

  1. 选择要在其后添加设置变量值节点的节点下的添加节点 图标。

  2. 选择 “变量管理>设置变量”值。 画布上会显示 “设置变量值 ”节点。

  3. 选中设置变量下面的方框,然后选择创建新变量。 创建了新变量。 在为其赋值之前,其类型是未知

    带有未知类型新变量的“设置变量值”节点截图。

  4. 对于目标值,使用以下选项之一分配一个值:

    • 键入文字值
    • 选择同一类型的现有变量。
    • 使用 Power Fx 公式。 Power Fx 公式对于不能使用文字值的更复杂类型很有用,如表和记录类型。

在动作节点中使用变量

Action 节点中使用变量时,如果其基类型与为流指定的参数类型匹配,或者为 Bot Framework 技能指定,则可以将其馈送给该参数。 Action节点的输出将生成新变量。

如需更多上下文,请参阅从主题调用代理流使用输入和输出变量传递信息中的示例场景。

为变量输入使用文字值

在可以为输入参数设置值的节点中,可以输入文字值,而不是选择其他变量作为值。

显示对名为 productName 的变量输入参数使用字面值的屏幕截图。

该节点尝试将文字值解释为字符串、数字或布尔值。 例如,123 将被解释为一个数字。 如果您希望将其解释为字符串值,您可以用双引号括住此值,如下所示:"123"

在某些场景中(例如,使用复杂类型的场景),您可能需要使用 Power Fx 公式来设置特定类型。

将环境变量用于 Azure Key Vault 密码

环境变量可以引用密钥保管库中的密码。 密钥环境变量是一种特殊的环境变量,有唯一的注意事项。

要在 Power Apps 门户中创建机密环境变量,您必须配置其密钥保管库

要授权 Copilot Studio 读取此密钥保管库,必须执行以下操作:

  1. 将 Key Vault 机密用户角色分配给 Microsoft Copilot Studio 服务 应用程序。

  2. 若要授权来自环境的所有代理访问机密,请在机密上创建一个标记 AllowedEnvironments ,并添加以逗号分隔的允许的环境 ID。

  3. 若要仅授权环境中的特定智能体使用此密钥保管库,请创建标记 AllowedAgents 并将智能体标识符置于格式 {envId}/{schemaName} 中。 对于多个值,用逗号分隔这些值。

    如果达到最大字符数,但仍需要添加更多智能体,请添加另一个具有描述性但唯一名称的标记(例如:AllowedAgents2)。

密码值在对话运行时缓存五分钟。 不成功的读取会缓存 30 秒。

警告

通过在代理中添加密钥,可能会泄露此密钥的值。 任何可以在环境中编辑代理的人都可以添加 消息 节点,并在消息中返回机密环境变量的值。

变量面板

变量面板中,您可以查看某个主题的所有可用变量,无论这些变量在哪个节点中定义或使用。 对于每个变量,您可以选择它是可以从其他主题接收其值、将其值返回给其他主题,还是两者均可。 您还可以在变量属性面板中选择一个变量来编辑其属性。

若要打开 “变量 ”面板,请选择主题菜单栏上的 “变量 ”。

“变量”面板的屏幕截图,其中突出显示了“变量”按钮。

变量属性面板

“变量属性 ”面板中,可以重命名变量、查看代理使用它的位置,或将其转换为 全局变量。 但是,不能将全局变量转换回主题变量。 您还可以选择主题变量是否可以接收值或将其值传递给其他主题。

要打开某个变量的变量属性面板,请在变量面板中选择所需的变量。 还可以通过选择所需的变量,从任何使用变量的节点打开 变量属性 面板。

在主题之间传递变量

当您将一个主题重定向到另一个主题时,可以将变量的值从原始主题传递到目标主题,还可以将目标主题的值返回原始主题。 当前面的主题已经收集了后面的主题需要的信息时,在主题之间传递变量特别有用。 用户当然赞赏不必多次回答相同的问题。

接收其他主题中的值

当主题定义变量时(例如,通过问题节点),智能体会询问用户问题来填写变量值。 如果智能体在前面的主题中已获取值,则没有理由再次提问。 在这些情况下,您可以将变量设置为接收其他主题中的值。 当另一个主题重定向到此主题时,它可以将任一变量值(或文字值)传递给此变量,并会跳过问题。 用户与智能体交谈的体验是无缝的。

在此示例中,我们将使用问候语与客户交谈这两个主题。 这两个主题都询问客户的名称。 但是,如果问候语主题先运行,与客户交谈主题会跳过它的问题。 而是使用了问候语主题中传递的变量值。

下面是与客户交谈主题的流:

“与客户交谈”主题对话流的屏幕截图。

如测试面板中所示,如果首先触发了此主题,它询问用户“我应该调用您什么?”它将值存储在一个称为 customerName 的字符串变量中。 customerName 变量也被设置为从其他主题获取值。 该主题以“希望您今天过得愉快,customerName!”结束。

下面是问候语主题的流:

“问候”主题对话流的屏幕截图。

如测试面板中所示,如果首先触发此主题,则它会询问用户“你叫什么名字?”它会将值存储在名为 customerName 的字符串变量中。 此主题发送消息“很高兴认识你,customerName!”,然后它重定向到与客户交谈主题,该主题发送消息“我希望你今天过得愉快,customerName!”但是请注意,与客户交谈主题跳过了再次询问用户姓名这一步骤。 相反,它使用从问候语主题传递的 customerName 变量的值。

最后,再次进行第二次对话,这次是从与客户交谈主题的角度出发:

先触发问候主题时,“与客户交谈”主题对话流的屏幕截图。

我们来演练一下设置主题以从其他主题接收值的步骤。 我们的示例场景使用预定义主题问候语作为源主题,并使用新主题与客户交谈作为目标主题,但同样的步骤也适用于任何主题,只要有可能,都应使用先前主题的值。

设置目标主题

目标主题是要重定向到的主题,即从其他主题接收值的主题。 在我们的示例中,它是与客户交谈

  1. 创建新主题并称其为“与客户交谈”。

  2. 添加触发短语,如“与我交谈”、“与我说话”、“与我聊天”。

  3. 添加问题节点,并输入“我该怎么称呼您?

  4. 识别下面,选择预生成的实体人员姓名

  5. 选择变量的名称。 这时会打开变量属性面板。

  6. 用 "customerName" 替换默认名称,然后选择从其他主题接收值

    显示 customerName 变量及其属性的“变量属性”面板的屏幕截图。

  7. 添加消息节点。

  8. 在消息框中输入“我希望你今天过得愉快”。

  9. 选择插入变量图标 ({x}),然后选择 customerName

  10. 选择变量后的空格并输入 "!"。

  11. 保存主题。

设置源主题

源主题是进行重定向的主题,该主题提供值且将其传递给目标主题。 在本示例中,此为问候语

  1. 转到问候语主题,删除默认节点,触发器节点除外。

  2. 添加问题节点,输入“您叫什么名字?”。

  3. 识别下面,选择预生成的实体人员姓名

  4. 将默认名称替换为“customerNameFromGreeting”。

  5. 添加消息节点。

  6. 在信息框中输入“很高兴见到您”。

  7. 选择插入变量图标 ({x}),然后选择 customerNameFromGreeting

  8. 选择变量后的空格并输入 "!"。

  9. 添加重定向节点,并选择目标主题与客户交谈

  10. 选择添加输入,然后从要向其传递值的目标主题中选择变量。

    在重定向节点中添加了 customerName 变量作为输入的问候主题屏幕截图。

  11. 选择 > 图标,然后选择要传递值的变量,本例中为 customerNameFromGreeting

    重定向节点应如下所示:

    “问候语”主题中已完成的重定向节点的屏幕截图。

  12. 保存主题。

将值返回到原始主题

在智能体中,主题用于收集特定的信息片段。 其他多个主题可以调用它,并期望它以变量的形式返回信息。 该变量将成为原始主题的一部分,可以像任何其他变量一样使用。 因此,智能体获取的信息可跨主题提供,从而减少对全局变量的需要。

我们继续上一节中的示例。 我们在与客户交谈主题中提出一个新问题,然后将答案返回给问候语主题。

为返回的变量设置源主题

在将变量返回到主题时,源主题是提供要传递回原始主题的值的主题。 在本例中,源主题是与客户交谈

  1. 转到源主题。

  2. 添加一个问题节点,输入“您住在哪个城市?”

  3. 识别下面,选择预生成的实体城市

  4. 选择变量以打开变量属性面板。 将其命名为“customerCity”,然后选择将值返回到原始主题

    已突出显示 customerCity 变量及其属性的“与客户交谈”主题的屏幕截图。

  5. 添加消息节点。

  6. 选择插入变量图标 ({x}),然后选择 customerCity

  7. 在信息框中的变量后输入“每年的这个时候一定很美!”。

  8. 保存主题。

为返回的变量设置目标主题

在将变量返回到主题时,目标主题是从当前主题接收值的主题。 在我们的示例中,目标主题是问候语

  1. 转到目标主题。

  2. 您在源主题中选择的变量应该作为输出变量出现在重定向节点中。

    重定向节点中有返回变量的问候主题对话流的屏幕截图。

  3. 保存主题。

解析值

分析值节点允许您将一种类型的值转换为另一种类型的值。 分析值节点的常见用例是转换原始 JSON。 例如,代理调用流,后者又调用 API。 然后,API 返回结果。 现在,你需要一种方法来分析此结果并返回一个或多个基元变量。 使用 分析值 节点,可以将整个 API 结果作为字符串发送,如下所示:

{
    "Name": "Parker",
    "Position": "Product manager",
    "Company": "Contoso",
    "FormerPositions": [{
            "Position": "Customer service representative"
        }
    ]
}

Parse 值节点可以将你现在拥有的字符串变量转换为 Record 类型的变量,Power Fx 编辑器会为此提供 IntelliSense 代码完成和建议。

除了分析 JSON 字符串之外, 分析值 节点的键用法还会在运行时分析非类型化对象。 最常见的使用案例是收到事件时需要解析该事件值。 或者,你可能想要分析 System.Activity.ChannelData 属性,该属性在运行时因通道而异。

如果需要分析来自 Teams 的事件的信息,请参阅 Teams 开发人员文档,查找预期事件可能的外观示例。 然后,可以按照本部分中的说明,使用示例事件作为示例数据。

若要向主题添加 分析值 节点,请:

  1. 选择要分析值的 节点下的“添加节点 ”图标,指向 “变量管理”,然后选择“ 分析”值

  2. 添加分析值节点,然后选择要解析的变量。

    此屏幕截图显示如何选择要分析的变量。

  3. 选择数据类型。 在这种情况下,请选择从示例数据

    此屏幕截图显示如何为“分析值”节点选择数据类型。

  4. 选择“从示例 JSON 获取架构”,在打开的编辑器中输入所需的 JSON 示例,然后选择“确认”。

    显示输入示例 JSON 数据的编辑器的屏幕截图。

  5. 最后,选择要保存已分析值的变量。 通常,您会创建一个新变量。

    显示如何创建变量以直接从分析值节点保存已分析值的屏幕截图。

    输出变量现在具有预期的类型: 记录

    显示保存已分析数据的变量具有预期类型:记录的屏幕截图。