# 應用操作

Source: https://openflow.run/zh-tw/docs/nodes/connector/
Language: zh-TW
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-tw/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)
