
最後更新:2026年7月20日
Quire 與其他應用程式的雙向同步,需要一個中介層伺服器來接收雙邊的 webhooks,並呼叫各自的 API 來鏡射變更。架構如下:Quire ↔ 你的應用程式 ↔ 其他應用程式。實作分四步:架設 webhook 伺服器、向 Quire 註冊(加入為專案關注者)、向另一個應用程式註冊,然後根據 Quire API 文件中的活動類型來處理事件。兩條安全守則:為每筆變更標記來源以避免無限迴圈,並維護 Quire 任務 ID 與另一應用程式項目 ID 之間的對應關係。Google日曆雙向同步應用程式就是一個實際運作的範例。
當資料同時存在於兩個應用程式中,每個動作都得做兩次,否則就會悄悄失去同步。雙向同步能解決這種重複輸入的問題,讓 Quire 與另一個應用程式透過 webhooks 自動交換更新。Quire 的開放 API 正是為了這種模式而打造。
工具彼此不連通的代價,早已有明確的數據佐證。根據麥肯錫針對社群經濟的研究,知識工作者每週有近 20% 的時間花在追查內部資訊,而不是真正做事。可靠的同步機制,能自動消除其中一大部分的額外負擔。
Google日曆雙向同步應用程式就是最典型的例子:Quire 任務與 Google日曆事件無需手動核對就能保持一致。這篇文章會帶你了解如何針對任何其他應用程式的 API 打造出同樣的機制。
Google日曆雙向同步適用於 Premium 及以上的訂閱層級。更多資訊請參閱我們的定價頁面。
| 元件 | 角色 |
|---|---|
| Quire 應用程式 | 提供 API 憑證;註冊為專案關注者以接收 webhooks |
| 中介層伺服器(你的應用程式) | 接收雙邊的 webhooks;呼叫各自的 API 來鏡射變更 |
| 另一個應用程式(例如 Google日曆) | 該端事件的來源;同時也是 API 寫入的目標 |
| Quire 應用程式設定中的 Webhook 網址 | Quire 發送活動事件 POST 請求的目的地 |
| ID 對應表 | 對應 Quire 任務 ID 與另一應用程式的項目 ID |
| 每筆變更的來源標籤 | 防止更新無限循環 |
可以把雙向同步想成兩個應用程式之間的一場對話。當你在 Quire 中更新一項任務時,它會把這個變更告知另一個應用程式;而當那個應用程式中有內容被更新時,它也會告知 Quire。這能讓你的資訊在各處都保持一致。

架設你的 Quire 應用程式是第一步。你需要建立一個應用程式,取得透過 API 存取 Quire 專案所需的憑證。
如果想了解如何用 Quire API 打造自己的應用程式的逐步指南,請參閱我們的部落格文章。
要實作雙向同步,你需要開發一個中介層應用程式(你的應用程式),做為 Quire 與目標應用程式(例如 Google日曆)之間的橋樑。可以把它想成一位翻譯員:先從一方取得資訊、處理後,再把正確的指令送往另一方。整體流程如下:Quire ↔ 你的應用程式 ↔ 另一個應用程式。
要啟用雙向同步,首先要架設你自己的伺服器應用程式,做為中介層。這個應用程式負責接收來自 Quire 與另一應用程式的 webhook POST 請求。
你的伺服器應該要能夠:
你可以用任何自己偏好的技術來打造這個伺服器應用程式,例如 Node.js、Python 或 Ruby。在接下來的區段中,我們會用 Node.js 來示範一個接收與處理 webhook 事件的簡單範例。
請確保你的伺服器能從網際網路連線,這樣 Quire 與另一應用程式才能將 webhook 事件送達。
以下是一個使用 Express 的簡單 Node.js 範例:
const express = require('express');
const app = express();
app.use(express.json());
app.listen(3000, () => {
console.log('Server is running on port 3000');
});接下來,你需要在伺服器中建立一個路由,用來接收來自 Quire 的 webhook 事件。
app.post('/webhook', (req, res) => {
console.log('Received webhook event:', req.body);
// TODO: Handle the event and update Quire or other app via API
res.status(200).send('Event received');
});在這個範例中,webhook 路由是 /webhook,因此完整網址會是 ${your-host}/webhook。
複製這個 webhook 網址,貼到 Quire 應用程式設定中,這樣 Quire 就會知道要將事件通知傳送到你應用程式的哪個位置。

此外,你還需要將你的 Quire 應用程式註冊為想同步的專案的關注者,確保你的應用程式能收到相關更新的通知。
如果想了解如何透過 Quire API 接收通知的逐步指南,請參閱我們的說明文件。
要將另一個應用程式的更新同步到 Quire,你同樣需要在伺服器中建立一個路由,用來接收來自該應用程式的 webhook 事件。註冊流程與前面示範的 Quire 範例類似。只要將另一個應用程式設定成把事件通知送到你的中介應用程式的 webhook 端點,並確保你的伺服器能妥善接收與處理這些傳入事件即可。
一旦你的應用程式開始接收來自 Quire 與另一應用程式的 webhook 事件,你就需要實作邏輯來處理這些事件,並在兩個平台之間同步資料。這通常包含以下步驟:
只要細心處理傳入事件並透過 API 更新資料,你的應用程式就能確保雙方的變更都能準確反映,維持可靠的雙向同步。
以下是使用 Node.js 與 axios 的範例:
const axios = require('axios');
app.post('/webhook', (req, res) => {
const { type } = req.body.data;
// Reference of activity types:
// https://github.com/quire-api/quire-api/blob/master/docs/activity_types.md
switch (type) {
case 0: //Quire task created
onQuireTaskCreate();
break;
case 1: //Quire task deleted
onQuireTaskDelete();
break;
}
res.status(200).send('Event received');
});
// Route for handling events from another app to Quire
app.post('/anotherwebhook', async (req, res) => {
const { isCreate, id, name, projectId } = req.body;
if (isCreate) {
// Create a task in the Quire project
await axios.post(`https://quire.io/api/task/${projectId}`, { name });
// Optionally, store the mapping between your app's id and Quire's task id
} else {
// Retrieve the corresponding Quire task id using your mapping logic
const taskOid = getTaskIdByAppEventId(id, projectId);
// Delete the task from the Quire project
await axios.delete(`https://quire.io/api/task/${taskOid}`);
}
res.status(200).send('Event processed successfully');
});這個範例示範了如何處理來自另一應用程式的建立與刪除事件,並將它們與 Quire 同步。請務必實作妥善的錯誤處理,並維護 ID 對應以確保同步可靠運作。
兩條安全守則能涵蓋幾乎每個初次實作都會踩到的失敗情境:
開放 API 加上 webhooks,能讓 Quire 與你的其他工具合而為一,成為單一的真相來源,而不是兩套各自為政的資料。從最小可行的同步範圍開始(一種事件類型、一個方向),確認整條流程能完整運作後,再逐步擴充。
相關文章:透過 Quire API 整合外部工具——以 n8n 為例——如果你想從無程式碼的自動化工具開始,而不是自建伺服器,這是一個可參考的實作範例。
一種雙向連線:Quire 中的變更會推送到另一應用程式,而該應用程式中的變更也會推送回 Quire。Google日曆雙向同步應用程式就是一個實際運作的範例。
一個具備 API 憑證的 Quire 應用程式、一個能從網際網路連線接收 webhooks 的中介層伺服器,以及能在兩個 API 之間轉譯事件的邏輯。任何後端語言都適用。
它是 Quire 與另一項服務之間的翻譯員,負責接收 webhook 事件、決定該發出哪些 API 呼叫,並維護 Quire 任務 ID 與另一應用程式項目 ID 之間的對應關係。
追蹤每筆變更的來源,並忽略由你自己的同步流程觸發的更新。如果沒有這個防護機制,每次更新都會在兩個應用程式之間不斷來回反彈,永無止盡。
Premium 及以上。可在定價頁面查看目前的方案限制。