iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0

前言:

今天我們要來實作我們的「單向CUD」,我們一步一步來達到我們的期待,今天的目標是:

  • Notion Create Trigger 串接
  • Notion Updata Trigger 串接
  • Notion Delete Trigger 串接
  • AI Agent Prompt 修改

Step 1:用 Set 節點為不同 Trigger 「貼標籤」

我們要告訴 AI Agent 這次的任務是什麼。

  1. 在你的三個 Trigger (Create, Update, Delete) 的後面,分別都接上一個 Set 節點。現在你的流程會看起來像:

    • Notion Database Create Trigger -> Set (Create)
    • Notion Database Update Trigger -> Set (Update)
    • Webhook-Notion Deletor Trigger -> Set (Delete)
      image
  2. 設定 Set 節點

    • 對於 Set (Create) 節點

      • Mode 選擇 JSON

      • 修改 JSON

        {
          "operation":"CREATE"
        }
        
      • 開啟 Include Other Input Fields 讓後面的節點還是可以看到Notion Trigger 輸出的東西。
        image

    • 對於 Set (Update) 節點

      • Mode 選擇 Manual Mapping
      • Add Field:
        • name 輸入:operation
        • value 輸入:UPDATE
      • 一樣開啟 Include Other Input Fields 讓後面的節點還是可以看到 Notion Trigger 的輸出。
        image
    • 對於 Set (Delete) 節點

      • Mode 選擇 Manual Mapping

      • Add Field:

        第一個:

        • name 輸入:operation
        • value 輸入:DELETE

        第二個:

        • name 輸入:Event_ID
        • value 輸入:{{ $json.body.entity.id }}
      • 一樣開啟 Include Other Input Fields 讓後面的節點還是可以看到 Notion Trigger 的輸出。
        image

  3. 現在,將這三個 Set 節點的輸出端,全部連接到 AI Agent 節點的輸入端。這樣,無論從哪個 Trigger 進來,資料都會帶著一個清晰的任務標籤進入 AI Agent。

第 2 步:升級你的 AI Agent Prompt

現在 AI Agent 能收到 operation 標籤了,我們要教它如何使用這個標籤。

  1. 點開你的 AI Agent 節點。

  2. 修改 Prompt,讓它變成一個「條件式」的指令。參考範例如下:

    # 你的角色
    你是一個高效的 Notion-Google Calendar 同步助理。你的任務是解析傳入的 JSON 資料,理解操作指令 (operation),並精確地使用提供的工具來操作 Google Calendar。
    
    # 核心規則
    1.  所有操作都依賴於 `operation` 欄位的值,它可能是 'CREATE', 'UPDATE', 或 'DELETE'。
    2.  對於 'UPDATE' 和 'DELETE' 操作,你必須從資料的 `properties.GCal_Event_ID.rich_text[0].text.content` 路徑中提取 Google Calendar 的事件 ID (`eventId`)。如果找不到這個 ID,就停止操作並回報錯誤。
    3.  操作完成後,只需輸出工具的執行結果即可。
    
    # 詳細操作指南 (CUD)
    
    ## 如果 operation 是 'CREATE':
    這是一個兩步驟的特殊流程:
    1.  **步驟一 (創建事件)**: 使用 `create_event` 工具。
        *   從 `properties['目標完成時間'].date.start` 提取開始時間。
        *   從 `properties['目標完成時間'].date.end` 提取結束時間。
    2.  **步驟二 (更新標題)**: 立刻使用 `update_event` 工具來為剛剛創建的事件設定標題。
        *   `eventId` 來自步驟一的回傳結果。
        *   `title` 從 `properties['活動名稱'].title[0].text.content` 提取。
    
    ## 如果 operation 是 'UPDATE':
    1.  從 `properties.GCal_Event_ID.rich_text[0].text.content` 提取 `eventId`。
    2.  檢查資料中哪些欄位被更新了(例如 `活動名稱` 或 `目標完成時間`)。
    3.  使用 `update_event` 工具,將 `eventId` 和更新後的資訊(如 `title`, `start_time`, `end_time`)傳入,只更新有變動的部分。
    
    ## 如果 operation 是 'DELETE':
    1.  從 `properties.GCal_Event_ID.rich_text[0].text.content` 提取 `eventId`。
    2.  使用 `delete_event` 工具,並傳入這個 `eventId` 來刪除日曆事件。
    
    # 資料來源
    這是傳入的完整 JSON 資料,請從中解析所需資訊:
    {{ JSON.stringify($json) }}
    

    image

今日總結

  1. 建立了清晰的指令管道:透過 Set 節點,我們讓不同來源的自動化任務都有了專屬的 operation 標籤,指令不再混亂。
  2. 賦予 AI Agent 判斷能力:我們升級了 Prompt,讓 AI Agent 從一個只會單一任務的助理,蛻變成一個能根據指令、按條件執行 CREATE, UPDATE, DELETE 的智慧大腦。

現在,你的 Notion 與 Google Calendar 同步工作流已經具備了完整的單向 CUD 功能。每一個在 Notion 上的操作,都能被精準地轉譯並執行到 Google Calendar 中。
在下一篇文章中,我們將進行最後的整合測試,並探討如何讓這個流程更穩定、更符合實戰需求。敬請期待!


上一篇
Day 25 | 讓本地 n8n 也可以使用 Webhook
系列文
生成式AI 與 Notion 的碰撞 ?! 你還在 ctrl+c ctrl+v ?26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言