---
title: "Cara menulis mesej makluman sendiri dan menggunakan webhook"
slug: "webhooks-and-messages"
kind: "HELP_ARTICLE"
category: "alerts"
locale: "ms"
canonical: "https://app.forecastcity.com/ms/help/alerts/webhooks-and-messages"
published: "2026-09-08T17:58:35.210Z"
updated: "2026-10-28T00:00:36.394Z"
description: "Ketahui kandungan mesej makluman, tambahkan nota serta pemboleh ubah sendiri, dan hantar makluman ke perisian anda, Discord atau Slack melalui webhook."
---

# Cara menulis mesej makluman sendiri dan menggunakan webhook

Setiap makluman menghantar satu mesej ke setiap saluran yang anda tandakan. Secara automatik, mesej tersebut menyatakan perkara yang berlaku, harga pada ketika itu dan sama ada makluman kekal aktif. Tambahkan nota tentang pelan dagangan anda supaya anda dapat melihat rancangan anda sebelum membuka carta. Penyediaan makluman dan mesejnya adalah mudah, pantas dan tepat. Taip mesej dalam editor, atau beritahu atau minta **AI Trading Assistant** melalui suara atau tulisan.

Jika anda menggunakan perisian sendiri, Discord atau Slack, webhook akan menghantar setiap makluman ke sana juga tanpa perlu menyalin apa-apa secara manual. Panduan ini menerangkan kedua-duanya.

Contoh: makluman pada EURUSD yang dicetuskan apabila harga melintasi ke atas 1.09 pada carta 5m.

## Kandungan mesej automatik

Apabila medan **Message** dibiarkan kosong, makluman menulis mesejnya sendiri apabila dicetuskan. Bagi contoh di atas, mesej tersebut berbunyi:

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

Baris pertama menyatakan perkara yang berlaku mengikut ayat dalam editor makluman. Baris seterusnya memberikan angka pada detik tersebut. Baris terakhir menyatakan sama ada makluman kekal aktif. Contoh ini menggunakan pilihan **Once only**, jadi makluman kini dimatikan. Dengan pilihan Trigger yang lain, baris terakhir memaparkan "This alert stays on."

Makluman lain mengikut susunan yang sama. Berikut ialah beberapa contoh baris pertama, setiap satunya diikuti dengan baris angka di bawahnya:

-   Garis: "GBPJPY touched 1h Resistance R1" dan "Price 210.16, line at 210.20."
    
-   Penembusan garis: "GBPJPY broke above 1h Resistance R1" dan "The 1h candle closed at 210.32, above the line at 210.20."
    
-   Penunjuk teknikal: "BTCUSD: 1h RSI(14) crossed above 70" dan "RSI(14) was 71.4 when the 1h candle closed at 105240.50."
    
-   Perubahan ramalan: "GBPJPY: 1h forecast turned bearish" dan "Before: bullish above 209.80. Now: bearish below 209.40."
    

Makluman dengan beberapa syarat menyatakan bilangan syarat yang dipenuhi. Kemudian ia memaparkan satu baris bagi setiap syarat yang dipenuhi:

```
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.
```

Dengan lebih banyak syarat, baris pertama memaparkan, sebagai contoh, "all 3 conditions met" atau "2 of 3 conditions met". Apabila hanya satu syarat dipenuhi, contohnya dengan penghubung **or**, baris pertama menamakan syarat tersebut diikuti dengan angkanya.

## Cara menulis mesej

1.  Buka editor makluman dan pergi ke tab **Options**.
    
2.  Klik baris **Message**. Ia memaparkan Auto selagi masih kosong. Sebuah medan teks akan dibuka di bawahnya.
    
3.  Taip mesej anda. Medan ini boleh memuatkan sehingga 400 aksara.
    
4.  Untuk menambah nilai masa nyata, buka **Available variables** di bawah medan tersebut. Salin pemboleh ubah dengan tepat bersama kurungan kurawal bergandanya.
    

![Baris Message dibuka pada tab Options, dengan medan kosong, baris keterangan di bawahnya dan bahagian Available variables.](https://m.forecastcity.com/t/tnt_forecastcity/media/b4/b480142e20ce43cec05e3313cedc9941ceea0b334c3b3dda3ae8680099c0f69b.png)

Medan Message dibuka dan masih kosong, jadi makluman menghantar mesej automatiknya.

1.  **Automatic message**: medan kosong. Taip nota anda sendiri di sini, atau biarkan kosong.
    
2.  Baris di bawah medan: "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**: nilai masa nyata yang boleh anda tambahkan ke dalam mesej anda.
    

Ayat anda menjadi baris pertama, dan teks automatik diletakkan di bawahnya. Bagi contoh ini, mesej berikut:

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

akan diterima seperti ini:

```
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.
```

Harga dan syarat sudah pun dinyatakan dalam baris di bawah ayat anda. Gunakan mesej anda untuk perkara yang tidak dinyatakan oleh baris tersebut, seperti pelan dagangan anda.

Mesej yang anda taip juga menjadi nama makluman dalam senarai Alerts. Tanpa mesej sendiri, senarai tersebut memaparkan nama yang dibina daripada syarat makluman. Bagi paras harga, namanya ringkas seperti "EURUSD crossing up 1.09". Bagi garis atau beberapa syarat, ia memaparkan ayat seperti yang ditulis oleh editor, contohnya "GBPJPY: 1h Price touches 1h Resistance R1". Apabila anda menukar syarat, nama ini turut berubah. Apabila anda membuka makluman itu semula, medan **Message** masih kosong. Makluman yang telah anda simpan sebelum ini tanpa mesej turut memaparkan namanya dalam bentuk ini.

## Paparan pada setiap saluran

Setiap saluran menerima mesej yang sama, disusun mengikut kesesuaian saluran tersebut:

<table><thead><tr><th>Saluran</th><th>Apa yang dipaparkan</th></tr></thead><tbody><tr><td>Notifikasi dalam aplikasi</td><td>Baris pertama dalam huruf tebal, dengan angka di bawahnya.</td></tr><tr><td><strong>Notify my devices</strong></td><td>Baris pertama sebagai tajuk, dengan baris lain di bawahnya.</td></tr><tr><td><strong>Send to MetaTrader</strong></td><td>Baris pertama sebagai tajuk, dengan baris lain di bawahnya. Platform MetaTrader memaparkan masanya sendiri di sebelah mesej.</td></tr><tr><td><strong>Telegram</strong></td><td>Mesej, masa mengikut zon masa anda sendiri dan pautan ke carta.</td></tr><tr><td><strong>Send email</strong></td><td>Mesej, bersama tarikh dan masa mengikut zon masa anda sendiri.</td></tr><tr><td><strong>Webhook URL</strong></td><td>Discord dan Slack menerima mesej dengan masa dalam UTC. Dengan <strong>Raw JSON</strong>, perisian anda menerima pemboleh ubah di bawah.</td></tr></tbody></table>

Telegram menulis masa seperti ini: "24 Sep, 11:02 London time". Jika zon masa itu salah, pilih zon masa anda di bawah **Timezone** pada halaman **Your profile**. Apabila ForecastCity tidak mengetahui zon masa anda, masa dipaparkan dalam UTC.

Pautan dalam mesej Telegram, e-mel, notifikasi telefon atau tetingkap timbul MetaTrader akan membuka carta simbol tersebut bersama panel Alerts. Bagi kebanyakan makluman 4CM-AI, ia membuka carta bersama **Alert observation** bagi cetusan tersebut.

## Cara menambah nilai masa nyata dengan pemboleh ubah

Pemboleh ubah akan digantikan dengan nilainya apabila makluman dicetuskan. Berikut ialah pemboleh ubah dalam **Available variables**:

<table><thead><tr><th>Pemboleh ubah</th><th>Apa yang ditulis</th><th>Contoh</th></tr></thead><tbody><tr><td><code>{{symbol}}</code></td><td>Simbol</td><td>EURUSD</td></tr><tr><td><code>{{price}}</code> dan <code>{{close}}</code></td><td>Harga semasa makluman dicetuskan</td><td>1.0901</td></tr><tr><td><code>{{condition_text}}</code></td><td>Perkara yang berlaku, tanpa simbol</td><td>Price crossed above 1.09</td></tr><tr><td><code>{{condition}}</code></td><td>Syarat sebagai kod pendek</td><td>CROSSING_UP 1.09</td></tr><tr><td><code>{{timeframe}}</code></td><td>Jangka masa makluman</td><td>5m</td></tr><tr><td><code>{{time_iso}}</code></td><td>Tarikh dan masa, dalam UTC</td><td>2026-09-24 10:02 UTC</td></tr><tr><td><code>{{time}}</code></td><td>Masa yang sama dalam kiraan saat, untuk perisian</td><td>1790244120</td></tr><tr><td><code>{{time_now}}</code></td><td>Detik mesej dihantar, sebagai nombor</td><td>1790244121</td></tr><tr><td><code>{{exchange}}</code></td><td>Sumber suapan harga</td><td>TwelveData</td></tr><tr><td><code>{{status}}</code></td><td>Sama ada makluman kekal aktif</td><td>This alert stays on.</td></tr><tr><td><code>{{alert_url}}</code></td><td>Pautan ke carta simbol tersebut bersama makluman anda</td><td>alamat web</td></tr><tr><td><code>{{name}}</code></td><td>Mesej anda dengan setiap pemboleh ubah digantikan dengan nilainya, atau nama yang dipaparkan dalam senarai Alerts</td><td>EURUSD crossing up 1.09</td></tr></tbody></table>

Bagi garis, `{{condition_text}}` memaparkan teks seperti "Price touched 1h Resistance R1". Dengan beberapa syarat, ia menggabungkan syarat yang dipenuhi dengan perkataan and. Selepas makluman **Once only** dicetuskan, `{{status}}` memaparkan "This alert is now off. It was set to fire once." Bagi makluman dengan beberapa syarat, garis atau penunjuk teknikal, `{{condition}}` memaparkan `TREE`. Pemboleh ubah ini ialah kod untuk perisian.

Bagi makluman 4CM-AI, `{{forecast_summary}}` meringkaskan perubahan ramalan dan `{{forecast_symbol}}` menamakan simbol ramalan tersebut. `{{forecast_cycle}}` ialah pembilang yang meningkat setiap kali makluman mula memantau semula. Mesej yang mengandungi `{{forecast_summary}}` tidak mempunyai baris automatik di bawahnya kerana ringkasan tersebut sudah pun menerangkan perkara yang berlaku.

`{{price}}` dan `{{close}}` kekal kosong bagi kebanyakan makluman 4CM-AI kerana makluman tersebut tidak mempunyai satu harga tunggal. `{{time_iso}}` menggunakan UTC, jadi ia mungkin berbeza daripada jam pada skrin anda. Pemboleh ubah yang tidak wujud akan kekal tepat seperti yang anda taip: ejaan yang salah seperti `{{prices}}` akan diterima sebagai `{{prices}}`.

## Cara menghantar makluman ke webhook

Webhook menghantar setiap makluman ke alamat web, iaitu titik akhir (endpoint) tempat perisian anda sendiri, saluran Discord atau saluran Slack menerimanya. Pelan langganan anda mestilah menyertakan fungsi webhook.

1.  Pada tab Options, di bawah Notifications, tandakan kotak semak **Webhook URL**. Medan alamat, pilihan Format dan medan badan akan muncul.
    
2.  Tampal alamat yang digunakan oleh penerima anda. Ia mestilah bermula dengan `http://` atau `https://`.
    
3.  Tetapkan **Format** kepada **Raw JSON** dan biarkan medan badan kosong.
    
4.  Tekan butang **Create**, atau **Save** bagi makluman yang anda sunting.
    

![Baris Webhook URL ditandakan, dengan alamat web, pemilih format pada Raw JSON dan medan badan yang kosong.](https://m.forecastcity.com/t/tnt_forecastcity/media/9e/9e711afc65b24ebfe70a8e091cc4006b5f9d7d57d50d61b67e5ee920f8ab4877.png)

Webhook URL ditandakan, dengan alamat web dan Format ditetapkan kepada Raw JSON. Medan badan yang kosong menghantar data lalai.

1.  Alamat tempat penerima anda mendengar permintaan. Gunakan port piawai, iaitu port 80 atau port 443.
    
2.  **Format**: Raw JSON untuk perisian anda sendiri, atau Discord atau Slack untuk perkhidmatan tersebut.
    

Apabila medan badan dibiarkan kosong, penerima anda mendapat objek JSON yang mengandungi setiap pemboleh ubah daripada jadual di atas, berserta `alertId` dan `triggerId`. Kedua-dua medan ini mengenal pasti makluman berkenaan dan cetusan khusus ini. Semak satu penghantaran sebenar terlebih dahulu sebelum anda membina sebarang sistem yang bergantung pada medan-medannya.

Di bawah medan tersebut, editor memaparkan alamat pelayan tempat permintaan kami dihantar. Tambahkan alamat ini ke dalam senarai izin (allowlist) anda jika penerima anda hanya menerima sambungan daripada alamat yang dikenali.

### Keperluan alamat webhook

-   Alamat awam pada port piawai: port 80 untuk http, port 443 untuk https. Mesej ke port lain, ke localhost atau ke alamat rangkaian peribadi tidak akan dihantar.
    
-   Tiada nama pengguna atau kata laluan di dalam alamat tersebut.
    
-   Jawapan dalam masa 3 saat daripada alamat itu sendiri. Lencongan (redirect) ke alamat lain dikira sebagai kegagalan.
    

Editor hanya menyemak bahawa alamat bermula dengan `http://` atau `https://`. Keperluan lain disemak apabila mesej dihantar keluar, jadi uji alamat anda dengan makluman sebenar. Bagi makluman harga dan teknikal, jika penerima anda mengalami ralat sementara, penghantaran mesej akan dicuba semula sehingga dua kali lagi. Mesej makluman 4CM-AI tidak dihantar semula selepas tamat masa (timeout) atau ralat pelayan, kerana penerima anda mungkin sudah pun mengambil tindakan ke atasnya.

## Cara menulis badan webhook anda sendiri

Medan badan menerima templat dengan pemboleh ubah yang sama seperti mesej. Ia boleh memuatkan sehingga 2000 aksara. Medan ini membenarkan anda menaip lebih panjang, tetapi badan yang melebihi had akan ditolak apabila anda menyimpan.

Bagi **Raw JSON**, penerima yang menjangkakan objek ringkas boleh menerima badan seperti ini:

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

Pemboleh ubah diisi sebagai teks biasa. Nilai yang mengandungi tanda petikan atau pemisah baris boleh merosakkan struktur JSON anda. Badan yang bukan JSON sah akan dihantar sebagai teks biasa.

Bagi saluran Discord, tetapkan **Format** kepada **Discord** dan gunakan alamat webhook saluran tersebut. Kemudian tulis satu baris ringkas dalam medan badan, contohnya:

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

Bagi Slack, pilih **Slack** dan tulis dengan cara yang sama. ForecastCity membungkus teks anda dalam format yang dijangkakan oleh setiap perkhidmatan. Jika medan badan dibiarkan kosong, kedua-duanya menerima mesej makluman seperti yang ditunjukkan di atas, dengan masa dalam UTC pada baris terakhirnya.

## Cara menyemak hasil penghantaran

1.  Tunggu sehingga makluman dicetuskan, kemudian buka tab **Log** pada panel Alerts.
    
2.  Bandingkan data yang diterima oleh penerima anda dengan catatan Log: perkara yang berlaku, simbol dan masanya.
    

Tab Log menunjukkan bahawa makluman telah dicetuskan. Ia tidak menunjukkan sama ada penerima anda berjaya menerima mesej tersebut, jadi semak juga log pada penerima anda sendiri. Jika anda melihat kurungan kurawal seperti `{{prices}}`, nama pemboleh ubah telah salah dieja. Jika penerima anda menolak badan mesej, semak semula format JSON anda.

## Perkara penting untuk diketahui

-   Mesej makluman dihantar ke setiap saluran yang anda tandakan. Badan webhook pula dihantar hanya ke webhook.
    
-   Discord memaparkan sehingga 1900 aksara dan Slack sehingga 3000 aksara. Teks yang lebih panjang akan dipotong.
    

## Panduan berkaitan

-   [Cara memilih tempat makluman anda diterima](<https://app.forecastcity.com/ms/help/alerts/notification-delivery>)
    
-   [Cara mengetahui sebab makluman tidak diterima](<https://app.forecastcity.com/ms/help/alerts/trigger-log-and-troubleshooting>)
    
-   [Cara mencipta makluman harga pertama anda](<https://app.forecastcity.com/ms/help/alerts/first-price-alert>)
