---
title: "自訂提醒訊息與使用 Webhook"
slug: "webhooks-and-messages"
kind: "HELP_ARTICLE"
category: "alerts"
locale: "zh-Hant"
canonical: "https://app.forecastcity.com/zh-Hant/help/alerts/webhooks-and-messages"
published: "2026-09-08T17:58:35.210Z"
updated: "2026-10-28T00:01:29.772Z"
description: "了解提醒訊息的內容、加入您自己的文字與變數，並透過 Webhook 將提醒傳送到您自己的軟體、Discord 或 Slack。"
---

# 自訂提醒訊息與使用 Webhook

每個提醒都會將同一則訊息傳送到您勾選的每個位置。在預設情況下，訊息會寫明發生了什麼事、當下的價格，以及提醒是否繼續保持啟用。您可以加上交易計畫備註，在打開圖表前就先看到自己原本的規劃。設定提醒與訊息既簡單、快速又準確。您可以直接在編輯器中輸入，或透過語音或文字告訴或請 **AI Trading Assistant** 為您設定。

如果您使用自己的軟體、Discord 或 Slack，Webhook 也能將每次提醒自動傳送到那裡，完全不需要手動複製。本指南將同時說明這兩項功能。

範例：在 EURUSD 的 5m 圖表上建立一個當價格向上穿越 1.09 時觸發的提醒。

## 自動訊息的內容

當 **Message** 欄位留空時，提醒會在觸發時自動產生訊息。以上述範例來說，訊息內容如下：

```
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
```

第一列會以提醒編輯器的語句說明發生了什麼事。第二列提供觸發當下的數值。最後一列則說明提醒是否繼續保持啟用。此範例使用了 **Once only**，因此提醒現在已關閉。若選擇其他 Trigger 方式，最後一列會顯示「This alert stays on.」。

其他類型的提醒也遵循相同的順序。以下列出幾個第一列的範例，以及各自下方對應的數值列：

-   觸及線條：「GBPJPY touched 1h Resistance R1」與「Price 210.16, line at 210.20.」
    
-   突破線條：「GBPJPY broke above 1h Resistance R1」與「The 1h candle closed at 210.32, above the line at 210.20.」
    
-   指標條件：「BTCUSD: 1h RSI(14) crossed above 70」與「RSI(14) was 71.4 when the 1h candle closed at 105240.50.」
    
-   預測改變：「GBPJPY: 1h forecast turned bearish」與「Before: bullish above 209.80. Now: bearish below 209.40.」
    

包含多個條件的提醒會先說明有幾個條件成立，接著為每個成立的條件各列出一列說明：

```
BTCUSD: both conditions met
• Price crossed above 105000: the 1h candle closed at 105240.50
• 1h RSI(14) is above 55 (now 58.2)
This alert stays on.
```

如果有更多條件，第一列會顯示例如「all 3 conditions met」或「2 of 3 conditions met」。當只有一個條件成立時（例如使用 **or** 連接詞），第一列會直接寫出該條件，並在下方列出對應數值。

## 撰寫自訂訊息

1.  開啟提醒編輯器並前往 **Options** 頁籤。
    
2.  點擊 **Message** 列。留空時它會顯示 Auto。點擊後下方會展開一個文字欄位。
    
3.  輸入您的訊息。此欄位最多可輸入 400 個字元。
    
4.  若要加入即時數值，請展開欄位下方的 **Available variables**。請完整複製變數名稱，包含前後的雙大括號。
    

![在 Options 頁籤中展開的 Message 列，顯示空白輸入欄、下方說明文字與 Available variables。](https://m.forecastcity.com/t/tnt_forecastcity/media/b4/b480142e20ce43cec05e3313cedc9941ceea0b334c3b3dda3ae8680099c0f69b.png)

展開且仍留空的 Message 欄位，此時提醒會傳送自動訊息。

1.  **Automatic message**：空白的輸入欄位。您可以在這裡輸入自己的文字，或將它留空。
    
2.  欄位下方的說明文字：“Leave it blank and the alert says what happened and at what price. A message of your own is sent first, with that under it.”（留空時，提醒會說明發生的事件與當下價格；若輸入自訂訊息，您的文字會排在最前面，自動訊息則列在下方。）
    
3.  **Available variables**：您可以加入訊息中的即時數值變數。
    

您輸入的文字會成為第一列，自動產生的文字則緊接在下方。以上述範例來說，這段訊息：

```
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
```

送達時會顯示如下：

```
EURUSD on 5m: check the 1h trend before entering.
EURUSD crossed above 1.09. Price 1.0901.
This alert is now off. It was set to fire once.
```

價格與條件已經包含在您文字下方的列中。請將自訂訊息用來記錄自動訊息無法呈現的內容，例如您的交易計畫。

您輸入的訊息同時也會成為該提醒在 Alerts 清單中的名稱。如果沒有輸入訊息，清單會顯示由條件組合而成的名稱。單純的價位條件名稱很短，例如「EURUSD crossing up 1.09」；線條或多條件提醒則會按照編輯器的語句顯示，例如「GBPJPY: 1h Price touches 1h Resistance R1」。當您修改條件時，這個名稱也會隨之更新。當您再次開啟該提醒時，**Message** 欄位依然會是空白的。您先前未輸入訊息而儲存的提醒，也會以這種形式顯示名稱。

## 各個接收位置的顯示方式

每個接收位置都會收到相同的訊息，並依該位置的版面進行排列：

<table><thead><tr><th>接收位置</th><th>顯示內容</th></tr></thead><tbody><tr><td>應用程式內的通知</td><td>第一列以粗體顯示，下方列出數值。</td></tr><tr><td><strong>Notify my devices</strong></td><td>第一列作為標題，下方列出其餘各列。</td></tr><tr><td><strong>Send to MetaTrader</strong></td><td>第一列作為標題，下方列出其餘各列。MetaTrader 會在訊息旁顯示它自己的時間。</td></tr><tr><td><strong>Telegram</strong></td><td>訊息內容、您所在時區的時間，以及前往圖表的連結。</td></tr><tr><td><strong>Send email</strong></td><td>訊息內容，以及您所在時區的日期與時間。</td></tr><tr><td><strong>Webhook URL</strong></td><td>Discord 與 Slack 會收到訊息以及 UTC 時間。若選擇 <strong>Raw JSON</strong>，您的軟體會收到下方的變數資料。</td></tr></tbody></table>

Telegram 會以這種格式顯示時間：「24 Sep, 11:02 London time」。如果時區不正確，請前往 **Your profile** 頁面的 **Timezone** 下方選擇您的時區。當 ForecastCity 無法得知您的時區時，時間會以 UTC 顯示。

Telegram 訊息、電子郵件、手機通知或 MetaTrader 彈出式視窗中的連結，會直接開啟該商品的圖表並打開 Alerts 面板。對於大多數 4CM-AI 提醒，連結會開啟圖表並顯示該次觸發的 **Alert observation**。

## 使用變數加入即時數值

當提醒觸發時，變數會被替換為當下的實際數值。以下是 **Available variables** 中的所有變數：

<table><thead><tr><th>變數</th><th>輸出的內容</th><th>範例</th></tr></thead><tbody><tr><td><code>{{symbol}}</code></td><td>商品名稱</td><td>EURUSD</td></tr><tr><td><code>{{price}}</code> 與 <code>{{close}}</code></td><td>提醒觸發時的價格</td><td>1.0901</td></tr><tr><td><code>{{condition_text}}</code></td><td>發生的事件（不含商品名稱）</td><td>Price crossed above 1.09</td></tr><tr><td><code>{{condition}}</code></td><td>條件的簡短代碼</td><td>CROSSING_UP 1.09</td></tr><tr><td><code>{{timeframe}}</code></td><td>提醒的時間週期</td><td>5m</td></tr><tr><td><code>{{time_iso}}</code></td><td>UTC 日期與時間</td><td>2026-09-24 10:02 UTC</td></tr><tr><td><code>{{time}}</code></td><td>以秒數表示的相同時間，供軟體使用</td><td>1790244120</td></tr><tr><td><code>{{time_now}}</code></td><td>訊息送出當下的秒數時間</td><td>1790244121</td></tr><tr><td><code>{{exchange}}</code></td><td>報價資料來源</td><td>TwelveData</td></tr><tr><td><code>{{status}}</code></td><td>提醒是否繼續保持啟用</td><td>This alert stays on.</td></tr><tr><td><code>{{alert_url}}</code></td><td>開啟該商品圖表與提醒清單的連結</td><td>網址</td></tr><tr><td><code>{{name}}</code></td><td>將各變數替換為實際數值後的自訂訊息，或 Alerts 清單顯示的名稱</td><td>EURUSD crossing up 1.09</td></tr></tbody></table>

對於線條提醒，`{{condition_text}}` 會顯示如「Price touched 1h Resistance R1」。若包含多個條件，它會用英文的 and 將所有成立的條件連接起來。當 **Once only** 提醒觸發後，`{{status}}` 會顯示「This alert is now off. It was set to fire once.」。對於包含多個條件、線條或指標的提醒，`{{condition}}` 會顯示 `TREE`。這個變數是專供軟體判讀的代碼。

對於 4CM-AI 提醒，`{{forecast_summary}}` 會摘述預測發生的變化，而 `{{forecast_symbol}}` 則會輸出預測的商品名稱。`{{forecast_cycle}}` 是一個計數器，每當提醒重新開始待命時就會加一。包含 `{{forecast_summary}}` 的訊息下方不會再附上自動訊息列，因為該摘要已經說明了發生的事件。

大多數 4CM-AI 提醒沒有單一觸發價格，因此 `{{price}}` 與 `{{close}}` 會保持空白。`{{time_iso}}` 使用 UTC 時區，因此可能與您螢幕上的時鐘不同。不存在的變數會原封不動地保留您輸入的文字：例如拼錯的 `{{prices}}` 送達時仍會顯示為 `{{prices}}`。

## 將提醒傳送到 Webhook

Webhook 會將每次提醒傳送到指定的網址，讓您自己的軟體、Discord 頻道或 Slack 頻道接收。您的訂閱方案必須包含 Webhook 功能。

1.  在 Options 頁籤的 Notifications 下方，勾選 **Webhook URL**。畫面會出現網址欄位、Format 選項以及內容主體欄位。
    
2.  貼上您的接收端所監聽的網址。網址開頭必須是 `http://` 或 `https://`。
    
3.  將 **Format** 設為 **Raw JSON**，並將內容主體欄位留空。
    
4.  按下 **Create** 按鈕；若是編輯現有的提醒，請按下 **Save** 按鈕。
    

![已勾選 Webhook URL 列，填入網址、將格式選擇器設為 Raw JSON，並保留空白的內容主體欄位。](https://m.forecastcity.com/t/tnt_forecastcity/media/9e/9e711afc65b24ebfe70a8e091cc4006b5f9d7d57d50d61b67e5ee920f8ab4877.png)

已勾選 Webhook URL，填入網址並將 Format 設為 Raw JSON。空白的內容主體欄位會傳送預設資料。

1.  您的接收端所監聽的網址。請使用標準通訊埠 80 或 443。
    
2.  **Format**：您自己的軟體請選 Raw JSON；若要傳送到 Discord 或 Slack，請選擇對應的服務名稱。
    

當內容主體欄位留空時，您的接收端會收到一個包含上表所有變數的 JSON 物件，外加 `alertId` 與 `triggerId` 兩個欄位，分別用來識別該提醒以及這一次觸發。在開發依賴這些欄位的程式之前，請先實際查看一次真實送達的資料內容。

在欄位下方，編輯器會列出我們發送請求的伺服器位址。如果您的接收端只接受已知位址的連線，請將該位址加入您的允許清單。

### 網址必須符合的條件

-   使用標準通訊埠的公開網址：http 為 80，https 為 443。系統不會傳送訊息至其他通訊埠、localhost 或私有網路位址。
    
-   網址內不得包含使用者名稱或密碼。
    
-   該網址本身必須在 3 秒內回應。重新導向（redirect）至其他網址會被視為傳送失敗。
    

編輯器只會檢查網址開頭是否為 `http://` 或 `https://`。其餘條件會在訊息實際送出時才進行檢查，因此請務必以真實的提醒測試您的網址。對於價格與技術指標提醒，如果您的接收端發生暫時性錯誤，系統最多會再重試傳送兩次。4CM-AI 提醒的訊息在發生逾時或伺服器錯誤後不會重複傳送，因為您的接收端可能已經根據該訊息執行了動作。

## 撰寫自訂 Webhook 內容主體

內容主體欄位可以填入範本，並使用與訊息相同的變數。此欄位最多可容納 2000 個字元。雖然欄位允許您輸入更多字元，但在儲存時超過長度的內容主體會被拒絕。

若選擇 **Raw JSON**，需要精簡 JSON 物件的接收端可以使用如下的內容主體：

```
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
```

變數會以純文字填入。如果替換後的數值包含引號或換行符號，可能會破壞您的 JSON 結構。不符合有效 JSON 格式的內容主體會改以純文字傳送。

若要傳送到 Discord 頻道，請將 **Format** 設為 **Discord**，並填入該頻道的 Webhook 網址。接著在內容主體欄位中寫入簡短的一列文字，例如：

```
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
```

若要傳送到 Slack，請選擇 **Slack** 並以相同方式撰寫。ForecastCity 會自動將您的文字包裝成該服務要求的格式。如果將內容主體欄位留空，這兩項服務都會收到如上所示的提醒訊息，並在最後一列附上 UTC 時間。

## 檢查傳送結果

1.  等待提醒觸發，然後開啟 Alerts 面板的 **Log** 頁籤。
    
2.  比對您的接收端收到的內容與 Log 中的觸發記錄：發生的事件、商品名稱以及時間。
    

Log 頁籤會顯示提醒已觸發，但不會顯示您的接收端是否成功收下訊息，因此請同時檢查接收端自己的記錄。如果您看到像 `{{prices}}` 這樣未被替換的大括號，代表變數名稱拼錯了。如果您的接收端拒絕該內容主體，請檢查 JSON 格式是否正確。

## 實用須知

-   自訂訊息會傳送到您勾選的每個位置；Webhook 內容主體則只會傳送到 Webhook。
    
-   Discord 最多顯示 1900 個字元，Slack 最多顯示 3000 個字元，超過的部分會被截斷。
    

## 相關指南

-   [選擇接收提醒的方式](<https://app.forecastcity.com/zh-Hant/help/alerts/notification-delivery>)
    
-   [找出未收到提醒的原因](<https://app.forecastcity.com/zh-Hant/help/alerts/trigger-log-and-troubleshooting>)
    
-   [建立您的第一個價格提醒](<https://app.forecastcity.com/zh-Hant/help/alerts/first-price-alert>)
