在 Copilot Studio 中,我从 HTTP 响应接收一个对象,其中属性之一可以是字符串值或空白 (null)。但是,我无法弄清楚如何在变量类型的架构编辑器中定义该类型。如果我这样定义
kind: Record
properties:
firstName: String
lastName: String
middleName: String <--- This should be String or Blank (null)
当
middleName
属性为 null 时,我在 Copilot Studio 中收到错误:Error Message: The provided value for path ‘Topic.Response.middleName’ cannot be parsed into ‘StringDataType’ type. Provided value: Error Code: ValueParsingError
。
我可以将类型设置为
Any
middleName: Any
并让它以这种方式工作,但除非必要,否则我不喜欢使用它。 有没有办法将属性类型定义为
String or Blank
?
我尝试了基于 TypeScript 语法或 JSON 定义的不同变体,例如:
middleName: String | Blank
middleName: String or Blank
middleName: [String, Blank]
middleName: ["String", "Blank"]
middleName: ["string", "null"]
但是所有这些定义都会导致对话框窗口中出现错误,显示
Unknown $kind: "undefined"
。
是否可以将类型定义为
String or Blank
还是我一直使用 Any
类型?
在 Copilot Studio 的架构定义格式中,您需要显式允许属性为 String 或 Null。如果值为 null,则简单地将属性定义为 String 将导致解析错误。相反,您可以为该属性使用 Union 类型,它允许多种可能的类型,例如 String 或 Null。
以下是修复架构定义的方法:
种类:记录 特性: 名: 种类:字符串 姓: 种类:字符串 中间名字: 种类: 联盟 其中之一: - 种类:字符串 - 种类:空
它的作用:
kind:Union 定义 middleName 可以是多种类型之一。 oneOf: [String, Null] 明确告诉模式 middleName 可以是 String 值或 Null。 这确保了如果 HTTP 响应返回 middleName 为 null,则不会导致解析错误,并且如果它是有效字符串,也将被正确处理。