Windows 上的应用操作定义 JSON 架构

本文介绍 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}&param2=${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\"" 
]