---
title: Notifikasi Direct - Kunci API Pribadi untuk Peringatan Instan
sidebarTitle: Direct
description: Kirim notifikasi langsung dengan kunci API pribadi - tanpa menyiapkan saluran. Buat kunci Direct lalu picu peringatan instan berisi judul, isi, dan tautan.
---

# Notifikasi Direct

Notifikasi Direct memungkinkan Anda mengirim peringatan pribadi lewat satu URL webhook sederhana — tanpa menyiapkan saluran, tanpa templat, tanpa pelanggan. Cukup buat kunci, panggil URL-nya, dan notifikasi langsung masuk ke perangkat Anda.

## Apa Itu Direct?

Saluran sangat cocok untuk notifikasi terstruktur berbasis templat yang bisa dibagikan ke orang lain. Namun kadang Anda hanya butuh notifikasi pribadi yang cepat — build selesai, skrip rampung, sensor terpicu. Direct dirancang persis untuk itu.

Dengan Direct, Anda mendapat kunci API pribadi yang terhubung ke sebuah URL webhook unik. Saat Anda memanggil URL itu dengan judul dan isi, notifikasi dikirim langsung kepada Anda. Tidak perlu konfigurasi saluran.

### Kapan Memakai Direct dan Kapan Memakai Saluran

| | Direct | Saluran |
|---|---|---|
| **Penyiapan** | Buat kunci, pakai URL-nya | Buat saluran, atur templatnya |
| **Penerima** | Hanya Anda | Siapa pun yang berlangganan |
| **Templat** | Tidak ada — judul/isi ditentukan tiap permintaan | Templat yang bisa diatur dengan variabel |
| **Kondisi** | Tidak ada | Mendukung pengiriman bersyarat |
| **Paling cocok untuk** | Skrip pribadi, peringatan cepat, otomatisasi | Peringatan bersama, alur kerja terstruktur |

## Memulai

### 1. Buat Kunci Direct

Di aplikasi Echobell, ketuk **Direct** di bagian atas daftar saluran Anda. Lalu ketuk **Create** untuk membuat kunci Direct baru. Beri nama yang deskriptif (misalnya, "Build Server", "Home Lab", "Trading Bot").

### 2. Salin URL Webhook

Setiap kunci Direct punya URL webhook unik dengan format berikut:

```
https://hook.echobell.one/d/{your-key-token}
```

Anda bisa menemukan dan menyalin URL ini dari tampilan detail kunci Direct di aplikasi. Token-nya disembunyikan secara bawaan demi keamanan — ketuk untuk menampilkannya.

### 3. Kirim Notifikasi

Panggil URL webhook itu dengan body JSON yang berisi `title` dan `body`:

```http
POST https://hook.echobell.one/d/YOUR_KEY_TOKEN
Content-Type: application/json

{
  "title": "Build Complete",
  "body": "Project X built successfully in 3m 42s"
}
```

Selesai — Anda akan langsung menerima notifikasinya.

## Membuat Permintaan

### Permintaan POST (Disarankan)

Kirim body JSON berisi konten notifikasi Anda:

```http
POST https://hook.echobell.one/d/YOUR_KEY_TOKEN
Content-Type: application/json

{
  "title": "Deployment Status",
  "body": "v2.1.0 deployed to production",
  "externalLink": "https://dashboard.example.com/deploys/latest"
}
```

### Permintaan GET

Anda juga bisa mengirim parameter lewat query string:

```http
GET https://hook.echobell.one/d/YOUR_KEY_TOKEN?title=Alert&body=CPU+at+95%25
```

### POST Only

Setiap kunci Direct punya pengaturan **POST Only** sendiri di aplikasi Echobell. Pengaturan ini nonaktif secara bawaan.

Saat aktif, hanya `POST` yang bisa memicu kunci tersebut. Permintaan `GET` ke URL webhook-nya akan ditolak dengan `405 Method Not Allowed`, dan tidak ada notifikasi yang dikirim:

```json
{
  "success": false,
  "notificationTriggered": false,
  "message": "This trigger only accepts POST requests; GET triggering is disabled in its settings."
}
```

Permintaan `HEAD` tidak terpengaruh — permintaan itu selalu dijawab `200` dan tidak pernah memicu notifikasi, baik POST Only aktif maupun tidak.

Pengaturan ini berlaku per kunci, jadi Anda bisa menyimpan satu kunci yang ramah `GET` untuk perintah shell satu baris, dan satu kunci POST-only untuk URL yang ditempel ke obrolan atau halaman wiki.

### Kolom Permintaan

Semua nama kolom **tidak membedakan huruf besar-kecil** — `title`, `Title`, dan `TITLE` diperlakukan sama, baik dikirim lewat body JSON maupun query string.

| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| `title` | string | Tidak | Judul notifikasi. Bila dikosongkan, standarnya "Direct Notification". |
| `body` | string | Tidak | Teks isi notifikasi. |
| `externalLink` | string | Tidak | Tautan yang bisa diklik pada catatan notifikasi. |
| `notificationType` | string | Tidak | Tingkat urgensi notifikasi. Menerima `active`, `time-sensitive`, atau `calling`. Standarnya `active`. Lihat [Jenis Notifikasi](#jenis-notifikasi). |

### Jenis Notifikasi

Anda bisa mengatur tingkat urgensi notifikasi Direct memakai kolom `notificationType`:

| Tipe | Deskripsi |
|---|---|
| `active` | Notifikasi standar, dikirim seperti biasa. Ini adalah nilai bawaan. |
| `time-sensitive` | Notifikasi berprioritas tinggi yang bisa menembus mode Fokus. |
| `calling` | Peringatan mirip panggilan untuk situasi kritis. **Memerlukan langganan premium yang aktif.** Tanpa premium, akan turun menjadi `time-sensitive`. |

Contoh dengan jenis notifikasi:

```http
POST https://hook.echobell.one/d/YOUR_KEY_TOKEN
Content-Type: application/json

{
  "title": "Server Down",
  "body": "Production server is unresponsive",
  "notificationType": "calling"
}
```

## Format Respons

Permintaan yang berhasil mengembalikan:

```json
{
  "success": true,
  "message": "Notification triggered successfully."
}
```

Jika kuncinya tidak valid atau tidak ditemukan (perhatikan bahwa ini tetap mengembalikan HTTP `200`):

```json
{
  "success": false,
  "message": "Direct key not found."
}
```

## Mengelola Kunci Direct

### Beberapa Kunci Sekaligus

Anda bisa membuat beberapa kunci Direct untuk keperluan berbeda:

- **"CI Server"** — untuk notifikasi build dan deployment
- **"Home Automation"** — untuk peringatan sensor IoT
- **"Cron Jobs"** — untuk hasil tugas terjadwal
- **"Trading Bot"** — untuk peringatan pasar

Setiap kunci punya URL webhook-nya sendiri yang independen. Catatan notifikasi otomatis dikaitkan dengan kunci yang memicunya, sehingga Anda mudah mengenali layanan mana yang mengirim tiap notifikasi.

### Reset Token

Jika URL webhook sebuah kunci bocor, Anda bisa mereset token-nya dari tampilan detail kunci tersebut. Langkah ini membuat URL baru dan langsung membatalkan URL lama. Perbarui skrip atau layanan apa pun yang masih memakai URL lama.

### Menghapus Kunci

Menghapus kunci Direct akan membatalkan URL webhook-nya secara permanen. Semua permintaan ke URL lama akan gagal.

## Kasus Penggunaan Umum

### Skrip Shell

```bash
# Beri notifikasi saat tugas yang lama berjalan selesai
./run-migration.sh && \
curl -X POST https://hook.echobell.one/d/YOUR_KEY_TOKEN \
  -H "Content-Type: application/json" \
  -d '{"title": "Migration Complete", "body": "Database migration finished successfully"}'
```

### Cron Job

```bash
# Di crontab: beri notifikasi saat backup selesai
0 2 * * * /usr/local/bin/backup.sh && curl -s -X POST https://hook.echobell.one/d/YOUR_KEY_TOKEN -H "Content-Type: application/json" -d '{"title": "Backup Done", "body": "Nightly backup completed"}'
```

### Python

```python
import requests

requests.post(
    "https://hook.echobell.one/d/YOUR_KEY_TOKEN",
    json={
        "title": "Training Complete",
        "body": f"Model accuracy: {accuracy:.2%}",
        "externalLink": "https://wandb.ai/runs/abc123"
    }
)
```

### Node.js

```javascript
await fetch("https://hook.echobell.one/d/YOUR_KEY_TOKEN", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    title: "Deploy Complete",
    body: `Version ${version} deployed to production`,
  }),
});
```

### GitHub Actions

```yaml
- name: Notify via Echobell Direct
  if: always()
  env:
    ECHOBELL_DIRECT_URL: ${{ secrets.ECHOBELL_DIRECT_URL }}
  run: |
    curl -X POST "$ECHOBELL_DIRECT_URL" \
      -H "Content-Type: application/json" \
      -d '{"title": "Build ${{ job.status }}", "body": "${{ github.repository }} @ ${{ github.sha }}"}'
```

## Praktik Terbaik

### Keamanan

- **Perlakukan URL kunci Direct sebagai rahasia** — siapa pun yang punya URL itu bisa mengirimi Anda notifikasi
- **Gunakan variabel lingkungan** untuk menyimpan token kunci di skrip dan CI/CD
- **Reset token** segera jika Anda menduga sebuah kunci telah bocor
- **Buat kunci terpisah** untuk layanan yang berbeda agar bisa dicabut satu per satu

### Penataan

- **Beri nama kunci secara deskriptif** — Anda akan berterima kasih pada diri sendiri saat mengelola banyak kunci
- **Pakai satu kunci per layanan** — memudahkan mengenali sumber notifikasi dan mencabut aksesnya
- **Hapus kunci yang tidak dipakai** — perkecil permukaan serangan Anda

### Penanganan Kesalahan

Saat mengintegrasikan Direct ke dalam skrip Anda, ambil keputusan berdasarkan kolom JSON `success`, bukan berdasarkan status HTTP:

- **200 OK**: Permintaannya diterima. Periksa body JSON-nya: `success: true` berarti notifikasi terpicu; `success: false` berarti tidak. Kunci Direct yang tidak dikenal atau sudah direset mengembalikan HTTP `200` dengan `{ "success": false, "message": "Direct key not found." }` — **bukan** `404`.
- **400 Bad Request**: Panjang token kuncinya salah. Perbaiki URL-nya.
- **405 Method Not Allowed**: Kunci tersebut mengaktifkan [POST Only](#post-only) sementara permintaannya bukan `POST`. Ubah pemanggilnya menjadi `POST`, atau matikan pengaturan itu.

Echobell tidak membatasi laju panggilan Direct, jadi tidak ada respons `429`.

## Privasi dan Keamanan

### Apa yang Disimpan

- **Di Server Kami**:
  - Metadata kunci Direct (nama, token ter-hash, pemilik)
  - Payload permintaan diproses sementara dan disimpan untuk keperluan pengiriman

- **Di Perangkat Anda**:
  - Isi notifikasi (judul, isi)
  - Riwayat pemicu dan cap waktu
  - Tautan eksternal

### Apa yang Tidak Disimpan

- Kami tidak menyimpan payload permintaan secara permanen setelah pengiriman
- Kami tidak menganalisis isi notifikasi
- Kami tidak membagikan data Anda ke pihak ketiga

## Pemecahan Masalah

### Tidak Menerima Notifikasi

1. **Periksa URL webhook-nya** — salin langsung dari aplikasi, cek apakah ada spasi berlebih
2. **Pastikan kuncinya masih ada** — mungkin kunci itu sudah dihapus atau token-nya direset
3. **Pastikan izin notifikasi aktif** — aplikasi Echobell memerlukan izin notifikasi di perangkat Anda
4. **Uji dengan curl** — untuk memastikan masalahnya bukan pada klien HTTP Anda:
   ```bash
   curl -X POST https://hook.echobell.one/d/YOUR_KEY_TOKEN \
     -H "Content-Type: application/json" \
     -d '{"title": "Test", "body": "Hello from Direct"}'
   ```

### Kesalahan Permintaan

- **Kesalahan parsing JSON**: Pastikan header `Content-Type: application/json` sudah disetel dan body-nya berupa JSON yang valid
- **Kunci tidak ditemukan**: Body dengan `"success": false` dan pesan `"Direct key not found."` berarti token-nya sudah direset atau kuncinya dihapus (status HTTP-nya tetap `200`)

### Masih Bermasalah?

- Kunjungi [Pusat Dukungan](/docs/support) kami untuk bantuan lebih lanjut
- Hubungi kami di echobell@weelone.com dengan menyertakan:
  - Deskripsi masalahnya
  - Contoh permintaan (dengan token disamarkan)
  - Perilaku yang diharapkan dan yang sebenarnya terjadi

## Langkah Berikutnya

- **[Integrasi Webhook](/docs/webhook)** — Untuk notifikasi bersama berbasis templat dengan saluran
- **[Sintaks Templat](/docs/template)** — Pelajari templat notifikasi saluran
- **[Pemicu Email](/docs/email-trigger)** — Picu notifikasi lewat email
- **[Jelajahi Integrasi](/docs/features)** — Hubungkan dengan perkakas yang sudah Anda pakai
