本文介绍 Windows 上应用操作的动作定义 JSON 文件格式。 该文件必须包含在生成操作设置为“内容”且复制到输出目录设置为“如果较新则复制”的项目中。 在包清单 XML 文件中指定 JSON 文件的包相对路径。 有关详细信息,请参阅操作提供程序包清单 XML 格式。
示例操作定义 JSON 文件
"version": 2,
"actions": [
{
"id": "Contoso.SampleGreeting",
"description": "Send greeting with Contoso",
"icon": "ms-resource//...",
"usesGenerativeAI": false,
"isAvailable": false,
"inputs": [
{
"name": "UserFriendlyName",
"kind": "Text"
},
{
"name": "PetName",
"kind": "Text",
"required": false
}
],
"inputCombinations": [
{
"inputs": ["UserFriendlyName"],
"description": "Greet ${UserFriendlyName.Text}"
},
{
"inputs": ["UserFriendlyName", "PetName"],
"description": "Greet ${UserFriendlyName.Text} and their pet ${PetName.Text}"
}
],
"contentAgeRating": "child",
"invocation":
{
{
"type": "Uri",
"uri": "contoso://greetUser?userName=${UserFriendlyName.Text}&petName=${PetName.Text}",
},
"where": [
"${UserFriendlyName.Length > 3}"
]
}
},
{
"id": "Contoso.SampleGetText",
"description": "Summarize file with Contoso",
"icon": "ms-resource://...",
"inputs": [
{
"name": "FileToSummarize",
"kind": "File"
}
],
"inputCombinations": [
{
"inputs": ["FileToSummarize"],
"description": "Summarize ${FileToSummarize.Path}"
},
],
"outputs": [
{
"name": "Summary",
"kind": "Text"
}
],
"contentAgeRating": "child",
"invocation": {
"type": "COM",
"clsid": "{...}"
}
}
]
}
操作定义 JSON 属性
下表描述了操作定义 JSON 文件的属性。
文档根目录
资产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
版本 | 字符串 | 架构版本。 当添加新功能后,版本号会增加一。 | 是的。 |
行动 | 动作[] | 定义应用提供的操作。 | 是的。 |
行动
资产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
id | 字符串 | 操作标识符。 对于每个应用包都必须是唯一的。 此值是不可本地化。 | 是的 |
描述 | 字符串 | 此操作的面向用户的描述。 此值可本地化。 | 是的 |
图标 | 字符串 | 可本地化的操作图标。 此值是随应用一起部署的图标的 ms-resource 字符串。 | 否 |
使用生成式AI | 布尔型 | 指定该动作是否使用生成式人工智能。 默认值为 false。 | 否 |
是否可用 | 布尔型 | 指定操作在安装后是否可用。 默认值为真。 | 是的 |
输入 | 输入[] | 此操作接受作为输入的实体列表。 | 是的 |
输入组合 | InputCombination[] | 提供不同输入组合的描述。 | 是的 |
输出 | 输出[] | 如果指定,则在当前版本中必须为空字符串。 | 否 |
祈祷 | 调用 | 提供有关如何调用操作的信息。 | 是的 |
内容年龄分级 | 字符串 | UserAgeConsentGroup 中的字段名称,指定操作的相应年龄分级。 允许的值是“儿童”、“未成年人”、“成年人”。 如果未指定值,则默认行为允许访问所有年龄。 | 否 |
输出
资产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
姓名 | 字符串 | 实体的变量名称。 此值是不可本地化。 | 是的 |
种类 | 字符串 | 指定实体类型的 ActionEntityKind 枚举的字段名称。 此值是不可本地化。 允许的值是“无”、“文档”、“文件”、“照片”、“文本”。 | 是的 |
输入组合
资产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
输入 | 字符串[] | 操作调用的输入名称列表。 此列表可能为空。 | 是的 |
描述 | 字符串 | 操作调用的描述。 此值可本地化。 | 否 |
其中 | 字符串[] | 一个或多个确定操作应用条件的条件语句。 | 否 |
调用
资产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
类型 | 字符串 | 操作的实例化类型。 允许的值为“uri”和“com” | 是的 |
URI(统一资源标识符) | 字符串 | 用于启动操作的绝对 URI。 实体用法可以包含在字符串中。 | 是的,适用于 URI 实例化的操作。 |
clsid | 字符串 | 实现 IActionProvider 的 COM 类的类 ID。 | 是的,适用于 COM 操作 |
输入数据 | 指定 URI 操作的附加数据的名称/值对列表。 | 否。 仅对 URI 操作有效。 |
ActionEntityKind 枚举
ActionEntityKind 枚举指定 Windows 上的应用作支持的实体类型。 在 JSON 操作定义的上下文中,实体类型是区分大小写的字符串字面量。
实体种类字符串 | DESCRIPTION |
---|---|
“文件” | 包括照片或文档实体类型不支持的所有文件类型。 |
“照片” | 图像文件类型。 支持的图像文件扩展名是“.jpg”、“.jpeg”和“.png” |
“文档” | 文档文件类型。 支持的文档文件扩展名有“.doc”、“.docx”、“.pdf”、“.txt” |
“文本” | 支持文本字符串。 |
“StreamingText” | 支持以增量方式流式传输的文本字符串。 |
“RemoteFile” | 支持元数据,使操作能够验证和检索云服务中的后备文件。 |
实体属性
每个实体类型都支持一个或多个为实体提供实例数据的属性。 实体属性名称区分大小写。
以下示例说明了如何在通过 URI 激活启动的操作的查询字符串中引用实体:
...?param1=${entityName.property1}¶m2=${entityName.property2}
有关使用实体属性在操作定义 JSON 中创建条件部分的信息,请参阅 Where 子语。
文件实体属性
资产 | 类型 | DESCRIPTION |
---|---|---|
“FileName” | 字符串 | 文件的名称。 |
“Path” | 字符串 | 文件的路径。 |
“Extension” | 字符串 | 文件的扩展名。 |
文档实体属性
文档实体支持与文件相同的属性。
照片实体属性
除了以下属性外,照片 实体还支持文件的所有属性。
资产 | 类型 | DESCRIPTION |
---|---|---|
“IsTemporaryPath” | 布尔型 | 一个指定照片是否存储在临时路径中的值。 例如,对于以位图形式存储在内存中而不是永久存储在文件中的照片,此属性为 true。 |
文本实体属性
资产 | 类型 | DESCRIPTION |
---|---|---|
“文本” | 字符串 | 完整文本。 |
“ShortText” | 字符串 | 文本的缩短版本,适用于 UI 显示。 |
“Title” | 字符串 | 文本的标题。 |
描述 | 字符串 | 文本的描述。 |
“Length” | 翻倍 | 文本的长度(以字符为单位)。 |
“WordCount” | 翻倍 | 文本中的单词数。 |
StreamingText 实体属性
资产 | 类型 | DESCRIPTION |
---|---|---|
“TextFormat” | 字符串 | 流媒体文本的格式。 支持的值为“Plain”、“Markdown”。 |
RemoteFile 实体属性
资产 | 类型 | DESCRIPTION |
---|---|---|
“AccountId(帐号识别码)” | 字符串 | 与远程文件关联的云服务帐户的标识符。 |
内容类型 | 字符串 | 远程文件的 MIME 类型。 |
“DriveId” | 字符串 | 与远程文件关联的远程驱动器的标识符。 |
“Extension” | 字符串 | 远程文件的扩展名。 |
“FileId” | 字符串 | 远程文件的标识符。 |
“FileKind” | RemoteFileKind | 远程文件类型。 |
来源标识符 | 字符串 | 托管远程文件的云服务的标识符。 |
“SourceUri” | 字符串 | 远程文件的 URI。 |
RemoteFileKind 枚举
RemoteFileKind 枚举指定 RemoteFile 实体支持的文件类型。
实体种类字符串 | DESCRIPTION |
---|---|
“文件” | 包括照片或文档实体类型不支持的所有文件类型。 |
“照片” | 图像文件类型。 支持的图像文件扩展名是“.jpg”、“.jpeg”和“.png” |
“文档” | 文档文件类型。 支持的文档文件扩展名有“.doc”、“.docx”、“.pdf”、“.txt” |
Where 子句
操作定义 JSON 格式支持可用于实现条件逻辑(例如指定仅当实体属性具有指定值时才应调用操作)的 where 子句。
以下运算符可与 where 子句一起使用。
操作员 | DESCRIPTION |
---|---|
== | 平等 |
~= | 等于(不区分大小写) |
!= | 不相等 |
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
|| | 逻辑或 |
&& | 逻辑与 |
Where 子句使用以下格式:
"where": [
"${<property_accessor>} <operator> <value>"
]
以下示例显示了一个 where 子句,如果文件实体具有文件扩展名“.txt”,则该子句的计算结果为 true。
"where": [
"${File.Extension} ~= \".txt\""
]
可以使用逻辑 AND 和逻辑 OR 运算符组合多个 where 子句。
"where": [
"${File.Extension} ~= \".txt\" || ${File.Extension} ~= \".md\""
]