本文說明 Windows 上應用程式動作的動作定義 JSON 檔案格式格式。 此檔案必須包含在您的專案中,將 [建置動作] 設定為「內容」,並將 [複製到輸出目錄] 設定為「如果更新則複製」。 在封裝指令清單 XML 檔案中,指定 JSON 檔案的套件相對路徑。 如需詳細資訊,請參閱 動作提供者套件指令清單 XML 格式。
動作定義 JSON 檔案範例
"version": 3,
"actions": [
{
"id": "Contoso.SampleGreeting",
"description": "Send greeting with Contoso",
"icon": "ms-resource//...",
"usesGenerativeAI": false,
"isAvailable": false,
"allowedAppInvokers": ["*"],
"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 檔案的屬性。
此 版本 欄位指出引進屬性的結構描述版本。
PWA 欄位指出支援實作為漸進式 Web 應用程式 (PWA) 的動作提供者。 如需使用 PWA 的應用程式動作的詳細資訊,請參閱 在 Windows 上啟用 PWA 的應用程式動作。
檔根目錄
| 房產 | 類型 | 說明 | 為必填項目 | 版本 |
|---|---|---|---|---|
| 版本 | 字串 | 結構描述版本。 新增新功能時,版本會遞增一個。 | 是的。 | 2 |
| 行為 | 動作[] | 定義應用程式所提供的動作。 | 是的。 | 2 |
行動
| 房產 | 類型 | 說明 | 為必填項目 | 版本 | PWA |
|---|---|---|---|---|---|
| 識別碼 | 字串 | 動作標識碼。 每個應用程式套件都必須是唯一的。 此值無法本地化。 | 是的 | 2 | 是的 |
| 說明 | 字串 | 此動作的使用者面向描述。 此值可本地化。 | 是的 | 2 | 是的 |
| 圖示 | 字串 | 動作的可本地化圖示。 此值是應用程式隨附圖示的 ms-resource 字串。 | 否 | 2 | 是的 |
| allowedAppInvokers | 字串[] | 指定應用程式使用者模型識別碼 (AppUserModelID) 清單,可透過呼叫 GetActionsForInputs 或 GetAllActions 來探索動作。 支援萬用字元。 “*” 會符合所有 AppUserModelID。 建議對大部分動作執行此動作,除非有特定原因來限制可以叫用動作的呼叫端。 如果省略 allowedAppInvokers 或是空白清單,則任何應用程式都無法探索動作。 如需 AppUserModelID 的詳細資訊,請參閱 應用程式使用者模型識別碼 | 否 | 3 | 是的 |
| 使用生成式AI | 布林值 | 指定該動作是否使用生成式 AI。 預設值為 false。 | 否 | 2 | 是的 |
| 可用 | 布林值 | 指定是否可以立即在安裝時使用該動作。 預設值為 True。 | 是的 | 2 | 是的 |
| 輸入 | 輸入[] | 此動作接受做為輸入的實體清單。 | 是的 | 2 | 是的 |
| 輸入組合 | 輸入組合[] | 提供不同輸入組合的描述。 | 是的 | 2 | 是的 |
| 輸出 | 輸出[] | 如果指定,必須是目前版本中的空字串。 | 否 | 2 | 是的 |
| 引動過程 | 調用 | 提供如何叫用動作的相關信息。 | 是的 | 2 | 是的 |
| 內容年齡分級 | 字串 | UserAgeConsentGroup 的功能變數名稱,指定動作的適當年齡分級。 允許的值為 「Child」、“Minor”、“Adult”。 如果未指定任何值,則預設行為允許存取所有年齡。 | 否 | 2 | 是的 |
輸出
| 房產 | 類型 | 說明 | 為必填項目 | 版本 | PWA |
|---|---|---|---|---|---|
| 名稱 | 字串 | 實體的變數名稱。 此值無法本地化。 | 是的 | 2 | 是的 |
| 類型 | 字串 | 指定實體類型的 ActionEntityKind 列舉中的欄位名稱。 此值無法本地化。 允許的值為 “None”、“Document”、“File”、“Photo”、“Text”、“StreamingText”、“RemoteFile”、“Table”、“Contact”。 | 是的 | 2 | 是的 |
架構版本和 PWA 支援會因 kind 屬性的不同值而有所不同。 如需詳細資訊,請參閱每個實體類型的項目。
輸入組合
| 房產 | 類型 | 說明 | 為必填項目 | 版本 | PWA |
|---|---|---|---|---|---|
| 輸入 | 字串[] | 動作調用的輸入名稱清單。 清單可能是空的。 | 是的 | 2 | 是的 |
| 說明 | 字串 | 動作調用的描述。 此值可本地化。 | 否 | 2 | 是的 |
| 哪裡 | 字串[] | 一或多個條件語句,決定套用動作的條件。 | 否 | 2 | 是的 |
調用
| 房產 | 類型 | 說明 | 為必填項目 | 版本 | PWA |
|---|---|---|---|---|---|
| 型別 | 字串 | 動作的具現化類型。 允許的值為 “uri” 和 “com”。 | 是的 | 2 | 只有“uri”。 |
| 統一資源識別碼 (URI) | 字串 | 啟動動作的絕對 URI。 實體使用方式可以包含在字串中。 可以將特殊的保留查詢字串參數 token=${$.Token} 新增至 URI,以允許動作驗證動作執行階段是否已叫用它們。 如需詳細資訊,請參閱 使用 $。權杖 URI 查詢字串參數。 |
是,針對 URI 實例化動作。 | 2 | 是的 |
| clsid | 字串 | 實作 IActionProvider 之 COM 類別的類別標識碼。 | 是,對於 COM 動作。 | 2 | 否 |
| 輸入資料 | JSON 名稱/值組 | 指定 URI 動作其他資料的名稱/值組清單。 | 否。 僅適用於 URI 動作。 | 2 | 是的 |
ActionEntityKind 列舉型別
ActionEntityKind 列舉會指定 Windows 上的應用程式動作所支援的實體類型。 在 JSON 動作定義中,實體類型是區分大小寫的字串常量。
| 實體種類字串 | 說明 | 版本 | PWA |
|---|---|---|---|
| 檔案 | 包含相片或文件實體類型不支援的所有文件類型。 | 2 | 僅輸入。 |
| “相片” | 影像檔類型。 支援的映像擴展名為 “.jpg”、“.jpeg” 和 “.png” | 2 | 僅輸入。 |
| 文件 | 檔案檔案類型。 支援的檔擴展名為 「.doc」、「.docx」、「.pdf」、「.txt」 | 2 | 僅輸入。 |
| "文字" | 支援文字字串。 | 2 | 僅輸入。 |
| “StreamingText” | 支援以累加方式串流處理文字字串。 | 2 | 否 |
| “RemoteFile” | 支援元數據,讓動作能夠驗證和擷取雲端服務的備份檔案。 | 2 | 僅輸入。 |
| “桌子” | 序列化為 1 維字串陣列的字串值的 2D 資料表。 | 3 | 否。 |
| 《聯繫方式》 | 代表聯絡人的一組資料。 | 3 | 僅輸入。 |
實體屬性
每個實體類型都支援一或多個提供實體實例數據的屬性。 實體屬性名稱區分大小寫。
下列範例說明如何對於透過 URI 啟用的動作,在查詢字串中引用實體:
...?param1=${entityName.property1}¶m2=${entityName.property2}
如需使用實體屬性在動作定義 JSON 中建立條件區段的資訊,請參閱 Where 子句。
檔案實體屬性
| 房產 | 類型 | 說明 | 版本 | PWA |
|---|---|---|---|---|
| “FileName” | 字串 | 檔案的檔名。 | 2 | 僅輸入。 |
| 路徑 | 字串 | 檔案的路徑。 | 2 | 僅輸入。 |
| 延伸 | 字串 | 檔案的副檔名。 | 2 | 僅輸入。 |
檔案實體屬性
Document 實體支援與 File 相同的屬性。
相片實體屬性
除了下列屬性之外, Photo 實體還支援 File 的所有屬性。
| 房產 | 類型 | 說明 | 版本 | PWA |
|---|---|---|---|---|
| 是否為臨時路徑 | 布林值 | 值,指定相片是否儲存在暫存路徑中。 例如,對於從位圖儲存於記憶體中的相片而言,這個屬性為真,而不是永久儲存在檔案中。 | 2 | 僅輸入。 |
文字實體屬性
| 房產 | 類型 | 說明 | 版本 | PWA |
|---|---|---|---|---|
| "文字" | 字串 | 全文。 | 2 | 僅輸入。 |
| “ShortText” | 字串 | 適合UI顯示之文字的縮短版本。 | 2 | 僅輸入。 |
| “標題” | 字串 | 文字的標題。 | 2 | 僅輸入。 |
| 描述 | 字串 | 文字的描述。 | 2 | 僅輸入。 |
| 長度 | 雙倍 | 以字元為單位的文字長度。 | 2 | 僅輸入。 |
| “文字計數” | 雙倍 | 文字中的字數。 | 2 | 僅輸入。 |
StreamingText 實體屬性
| 房產 | 類型 | 說明 | 版本 | PWA |
|---|---|---|---|---|
| “TextFormat” | 字串 | 串流文字的格式。 支援的值為 「Plain」、“Markdown」。 | 2 | 否 |
RemoteFile 實體屬性
| 房產 | 類型 | 說明 | 版本 | PWA |
|---|---|---|---|---|
| 「AccountId」 | 字串 | 與遠端檔案相關聯的雲端服務帳戶標識碼。 | 2 | 僅輸入。 |
| 內容類型 | 字串 | 遠端檔案的MIME類型。 | 2 | 僅輸入。 |
| “DriveId” | 字串 | 與遠端檔案相關聯的遠端磁碟驅動器標識碼。 | 2 | 僅輸入。 |
| 延伸 | 字串 | 遠端檔案的擴展名。 | 2 | 僅輸入。 |
| “FileId” | 字串 | 遠端檔案的標識碼。 | 2 | 僅輸入。 |
| “FileKind” | RemoteFileKind | 遠端檔案類型。 | 2 | 僅輸入。 |
| 資源識別碼 | 字串 | 裝載遠端檔案之雲端服務的標識碼。 | 2 | 僅輸入。 |
| “SourceUri” | 字串 | 遠端檔案的 URI。 | 2 | 僅輸入。 |
RemoteFileKind 列舉
RemoteFileKind 列舉會指定 RemoteFile 實體支援的檔案類型。
| 實體種類字串 | 說明 | 版本 |
|---|---|---|
| 檔案 | 包含相片或文件實體類型不支援的所有文件類型。 | 2 |
| “相片” | 影像檔類型。 支援的映像擴展名為 “.jpg”、“.jpeg” 和 “.png” | 2 |
| 文件 | 檔案檔案類型。 支援的檔擴展名為 「.doc」、「.docx」、「.pdf」、「.txt」 | 2 |
表格實體屬性
| 房產 | 類型 | 說明 | 為必填項目 | 版本 | PWA |
|---|---|---|---|---|---|
| 「列計數」 | 整數 | 表格中的列數。 | 是的 | 3 | 否 |
| 「資料行計數」 | 整數 | 表格中的欄數。 | 是的 | 3 | 否 |
| “標題” | 字串 | 表格的標題。 | 否 | 3 | 否 |
| 描述 | 字串 | 表格的描述。 | 否 | 3 | 否 |
連絡人實體屬性
| 房產 | 類型 | 說明 | 為必填項目 | 版本 | PWA |
|---|---|---|---|---|---|
| 「電子郵件」 | 字串 | 連絡人的電子郵件地址。 | 否 | 3 | 僅輸入。 |
| “全名” | 整數 | 連絡人的全名。 | 否 | 3 | 僅輸入。 |
| “標題” | 字串 | 連絡人的標題。 | 否 | 3 | 僅輸入。 |
| 描述 | 字串 | 聯絡人的描述。 | 否 | 3 | 僅輸入。 |
Where 條件子句
動作定義 JSON 格式支援 where 子句,可用來實作條件邏輯,例如指定僅在實體屬性具有特定值時才應執行動作。
下列運算子可以搭配 where 子句使用。
| 操作員 | 說明 |
|---|---|
| == | 平等 |
| ~= | 不區分大小寫的相等 |
| != | 不平等 |
| < | 小於 |
| <= | 小於或等於 |
| > | 大於 |
| >= | 大於或等於 |
| || | 邏輯或 |
| && | 邏輯與運算 |
Where 子句使用下列格式:
"where": [
"${<property_accessor>} <operator> <value>"
]
下列範例顯示 File 實體的副檔名為「.txt」時,where 子句評估結果為 true。
"where": [
"${File.Extension} ~= \".txt\""
]
多個 where 子句可以使用邏輯 AND 和邏輯 OR 運算符結合。
"where": [
"${File.Extension} ~= \".txt\" || ${File.Extension} ~= \".md\""
]