# 应用操作

Source: https://openflow.run/zh-cn/docs/nodes/connector/
Language: zh-CN
Product version: 0.1.0-beta.77

在“节点”页签选择应用和具体操作，使用已授权账号调用外部服务。

在添加面板的“节点”页签中选择应用，再选择需要的具体操作。选中的操作会直接加入画布，请求字段和响应端口由目录定义提供，授权账号则在节点设置中选择。

## 查询与选择

在目录中查找所需操作，再读取其 schema。操作 ID、字段和权限均以目录为准。

下面演示查询到操作后的 CLI/MCP 请求。`connector` 是接口中的类型；面板按应用展示可添加的具体操作。

```json
{
  "op": "node.add", "as": "send", "type": "connector", "name": "Send an update",
  "config": { "action": "DISCOVERED_ACTION_ID", "connectionId": "CONNECTION_ID" },
  "inputs": {
    "to": { "kind": "value", "value": "customer@example.com" },
    "subject": { "kind": "value", "value": "Your support request" },
    "body": { "kind": "value", "value": "Your replacement is ready to ship." }
  }
}
```

上面的输入名仅用于演示邮件操作，需要替换为实际选中操作的字段。平台会生成相应定义，无需手动提供内部执行器端口。

应用操作节点使用明确指定的收件人、主题和正文调用所选 Gmail 操作。

**输入**
收件人：customer@example.com；主题："Your support request"。

**预期结果**
Gmail 操作配置正确并调用成功后，返回 messageId。预览不会发送邮件。

**运行前准备**
运行前，从部署端目录选择真实 Gmail 操作，刷新字段，并授权发信账号。保存的案例尚未选择账号连接。

[下载工作流](https://openflow.run/docs/examples/send-with-connector.openflow.json)

## 绑定数据

操作输入接受节点结构说明支持的来源，包括固定值和可用的上游数据。响应端口由操作契约生成。不能假定所有操作都返回 `result`、`body`，或相同的数组结构。

修改标签或无关字段会保留已有定义快照。需要更新目录字段时，应明确重新选择或刷新该能力。

## 账号准备

没有选择账号表示尚未配置；选择 Connection 则明确指定一个账号。显式推迟账号选择，可以让未完成的草稿继续保存，但不会授予权限，也不会让操作变得可调用。发布和执行时仍会检查是否准备就绪。

Connector 管理凭据并调用外部应用。部署端检查工作流所有者的权限和声明的访问范围。在目录中看得到某个操作，不等于有权执行。

应用操作节点支持普通[重试和错误处理](https://openflow.run/zh-cn/docs/concepts/errors-and-retries/index.md)。重试可能重复外部写入，应确认操作的幂等规则，即重复调用是否会产生重复结果。

## 资料来源

*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md)
*   [docs/control/flow-authorization.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/flow-authorization.md)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#connector-response-ports)
*   [packages/open-flow/src/workbench/browser/runtime/stores/connectorStore.ts](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/packages/open-flow/src/workbench/browser/runtime/stores/connectorStore.ts)
