共用方式為


Windows 上應用程式動作的動作定義 JSON 架構

本文說明 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) 清單,可透過呼叫 GetActionsForInputsGetAllActions 來探索動作。 支援萬用字元。 “*” 會符合所有 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}&param2=${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\"" 
]