# 调用技能

该 API 用于调用某个 Aily 应用的特定技能，支持指定技能入参；并同步返回技能执行的结果。
**注意事项**：更多信息及示例代码，可参考 [Aily 技能 OpenAPI 接口说明](https://bytedance.larkoffice.com/wiki/ZkKnwxogliNj3ik9ppEc0cFUnAd)。

> **技能 API** 能显著简化业务系统的集成工作（单轮 API 调用）。技能 API 提供更贴合系统间服务调用的参数传递模式（JSON 入参 / 出参），且无需通过文本消息对话的方式调用 AI 能力。
<div style="text-align: center;">

## 请求

基本 | &nbsp;
---|---
HTTP URL | https://open.feishu.cn/open-apis/aily/v1/apps/:app_id/skills/:skill_id/start
HTTP Method | POST
接口频率限制 | [100 次/分钟](https://open.feishu.cn/document/ukTMukTMukTM/uUzN04SN3QjL1cDN)
支持的应用类型 | Custom App
权限要求<br>**调用该 API 所需的权限。开启其中任意一项权限即可调用** | 运行技能(aily:skill:write)

### 请求头

名称 | 类型 | 必填 | 描述
---|---|---|---
Authorization | string | 是 | `tenant_access_token`<br>或<br>`user_access_token`<br>**值格式**："Bearer `access_token`"<br>**示例值**："Bearer u-7f1bcd13fc57d46bac21793a18e560"<br>[了解更多：如何选择与获取 access token](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-choose-which-type-of-token-to-use)
Content-Type | string | 是 | **固定值**："application/json; charset=utf-8"
X-Aily-BizUserID | string | 否 | 标识创建会话的唯一用户 ID<br>>  建议使用唯一内部 ID 或其他可标识用户唯一身份的字段（如飞书账号的 `user_id`），可用于分析来自 API 的具体用户<br>**示例值**："ou_5ad573a6411d72b8305fda3a9c15c70e"<br>**数据校验规则**：<br>- 长度范围：`0` ～ `255` 字符

### 路径参数

名称 | 类型 | 描述
---|---|---
app_id | string | Aily 应用 ID（`spring_xxx__c`），可以在 Aily 应用开发页面的浏览器地址里获取<br>**示例值**："spring_e7004f87f1__c"<br>**数据校验规则**：<br>- 长度范围：`0` ～ `64` 字符
skill_id | string | 技能 ID；可通过技能编辑页面的浏览器地址栏获取（`skill_xxx`）<br>**示例值**："skill_6cc6166178ca"<br>**数据校验规则**：<br>- 长度范围：`0` ～ `32` 字符

### 请求体

名称 | 类型 | 必填 | 描述
---|---|---|---
global_variable | skill_global_variable | 否 | 技能的全局变量
query | string | 否 | 触发技能的消息文本；即用户在飞书机器人等渠道**对话输入的内容**<br>**示例值**："你好"<br>**数据校验规则**：<br>- 长度范围：`0` ～ `40960` 字符
files | string\[\] | 否 | 触发技能的文件信息（如 OCR 节点等所需消费的图片文件）<br>> 如技能不需要文件，`files` 参数传空即可<br>**示例值**：["file_4d9nu1ev3a2rq"]<br>**数据校验规则**：<br>- 长度范围：`0` ～ `32`
channel | channel | 否 | 渠道信息
variables | string | 否 | 自定义传入的变量；可在 Workflow 技能全局变量中消费<br>**示例值**："{"custom_key": "custom_value"}"<br>**数据校验规则**：<br>- 长度范围：`0` ～ `255` 字符
input | string | 否 | 技能的自定义变量<br>**示例值**："{\"custom_string\":\"my string\",\"custom_integer\":22}"<br>**数据校验规则**：<br>- 长度范围：`0` ～ `40960` 字符

### 请求体示例
```json
{
  "global_variable": {
    "query": "你好"
  }
}
```

> `input` 请求参数说明：为技能的自定义参数（JSON String）
>
> `output` 响应参数说明：技能执行输出结果（JSON String）；按开发者在 Workflow 技能「结束节点」配置的响应参数进行输出
<div style="text-align: center;">

## 响应

### 响应体

名称 | 类型 | 描述
---|---|---
code | int | 错误码，非 0 表示失败
msg | string | 错误描述
data | \- | \-
output | string | 技能的输出
status | string | 技能的执行状态

### 响应体示例
```json
{
  "code": 0,
  "data": {
    "output": "{\"message_status\":true,\"input_message\":\"\"}",
    "status": "success"
  },
  "msg": ""
}
```

### 错误码

HTTP状态码 | 错误码 | 描述 | 排查建议
---|---|---|---
400 | 2700001 | param is invalid | 参数错误

