> For the complete documentation index, see [llms.txt](https://docs.dibales.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dibales.ai/n8n/instagram-nodes.md).

# Instagram Nodes

Dua node ini menghubungkan N8N langsung ke akun Instagram yang sudah terhubung di dibales.ai. **Instagram Trigger** menangkap event masuk sebagai pemicu workflow, sementara **Instagram** (action node) mengirim pesan dan mengelola komentar.

***

**Pastikan kamu sudah:**

* Menginstall package `@pake-ai/n8n-nodes-dibales-ai` di instance N8N kamu
* Membuat credential **dibales.ai account** di N8N menggunakan API Key dari dashboard dibales.ai
* Menghubungkan akun Instagram ke dashboard dibales.ai [Integrasi Akun Instagram](/instagram/integrasi-akun-instagram.md)

***

## Node 1: Instagram Trigger

<figure><img src="https://2065917909-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKUsDba2MmOSrIeqmsc9J%2Fuploads%2FiRokm8v5KMpePcY1hMnG%2Fimage.png?alt=media&amp;token=e00dcfac-c62b-4d0b-a389-75c4d45394bf" alt=""><figcaption></figcaption></figure>

Memulai workflow setiap kali ada event masuk dari akun Instagram yang terhubung.

#### Parameter

| Parameter          | Keterangan                                                                                                                                                                                              |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Webhook URLs**   | URL endpoint yang didaftarkan ke dashboard dibales.ai. Tersedia dua mode: **Test URL** untuk pengujian saat workflow belum aktif, dan **Production URL** untuk workflow yang sudah aktif dan dipublish. |
| **Webhook Secret** | String rahasia yang disalin dari halaman Webhooks di dashboard dibales.ai. Digunakan untuk memverifikasi bahwa kiriman event benar-benar dari sistem dibales.ai.                                        |

#### Setup

1. **Tambahkan node Instagram Trigger ke workflow kamu** Cari `dibales.ai - Instagram` di panel node N8N, pilih sebagai trigger.
2. **Salin Webhook URL** Buka node, expand bagian **Webhook URLs**, klik tab **Test URL & Production URL**, lalu *copy* URL-nya.
3. **Buka dashboard dibales.ai,** pilih agent yang ingin dihubungkan → halaman [**Webhooks**](https://cs.pake.ai/agent/integrations/webhooks) → klik **Tambah Webhook**.
4. **Paste** url webhook dari N8N untuk **Test URL**, dan ulangi dengan klik Tambah Webhook untuk **Production URL**

<figure><img src="https://2065917909-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKUsDba2MmOSrIeqmsc9J%2Fuploads%2FZBsuuLnBfiPbDfxdJukj%2Fimage.png?alt=media&amp;token=874cbfac-fd0a-454c-b5ca-675e62af00c6" alt=""><figcaption></figcaption></figure>

**OPTIONAL**

1. **Salin Webhook Secret** Setelah webhook dibuat, salin nilai **Secret** yang tampil di dashboard.

<figure><img src="https://2065917909-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKUsDba2MmOSrIeqmsc9J%2Fuploads%2FCWKOXxQ2v6jTJihAHdoS%2Fimage.png?alt=media&amp;token=8005b5a9-6150-429e-9d15-c59a324f67a1" alt=""><figcaption></figcaption></figure>

2. **Paste Secret ke node** Kembali ke N8N, buka node Instagram Trigger, paste secret ke field **Webhook Secret**, lalu simpan workflow.

<figure><img src="https://2065917909-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKUsDba2MmOSrIeqmsc9J%2Fuploads%2FugtD7JckZ4FcoCUvdYVR%2Fimage.png?alt=media&amp;token=3addd26f-c325-450a-850c-c5d3fc86086b" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Bagian ini berfungsi untuk mengamankan URL webhook agar tidak bisa diakses tanpa secret key tersebut
{% endhint %}

{% hint style="warning" %}
Pastikan secret key sesuai dengan webhook url yang digunakan
{% endhint %}

✅ **Selesai!** Workflow akan aktif menerima event dari Instagram. Setiap event yang masuk akan muncul sebagai satu execution di tab **Executions**.

***

#### Output Ports

Node ini memiliki **11 output port**. Setiap port aktif untuk tipe event yang berbeda, sehingga kamu bisa membuat routing langsung dari satu trigger ke flow yang berbeda.

| Port                        | Event                                                            | Keterangan                                                                          |
| --------------------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| **0. Message Received**     | DM baru masuk dari kontak                                        | Teks, gambar, video, audio, file, atau share konten yang dikirim ke akun kamu       |
| **1. Message Echo**         | Pesan yang dikirim dari akun kamu sendiri                        | Berguna untuk logging atau monitoring pesan keluar                                  |
| **2. Reaction**             | Kontak menambahkan atau menghapus reaksi emoji pada pesan        | Field `raw.reaction.action` berisi `react` atau `unreact`                           |
| **3. Postback**             | Kontak menekan tombol pada button template atau generic template | Field `raw.postback.payload` berisi payload tombol yang ditekan                     |
| **4. Quick Reply**          | Kontak menekan opsi quick reply yang kamu kirim                  | Field `raw.message.quick_reply.payload` berisi payload opsi yang dipilih            |
| **5. Read Receipt**         | Pesan yang kamu kirim sudah dibaca oleh kontak                   |                                                                                     |
| **6. Story Reply**          | Kontak membalas story kamu via DM                                | Field `raw.message.reply_to.story.id` berisi ID story yang dibalas                  |
| **7. Story Mention**        | Kontak mention akun kamu di story-nya                            | URL story tersedia di `raw.message.attachments[0].payload.url`                      |
| **8. Comment Created**      | Komentar baru di post atau reel kamu                             | Termasuk reply komentar — cek `raw.parent_id` untuk bedakan komentar utama vs reply |
| **9. Live Comment Created** | Komentar baru di IG Live kamu                                    |                                                                                     |
| **10. Other**               | Event lain yang tidak masuk kategori di atas                     | Bisa dipakai untuk debugging atau menangkap event baru                              |

> 💡 Sambungkan hanya port yang kamu butuhkan. Port yang tidak terhubung tidak akan mempengaruhi performa workflow.

#### Struktur Data Trigger

Payload Instagram menggunakan key `raw`. Gunakan ekspresi berikut untuk mengakses field dari event di node selanjutnya:

**Field tersedia di semua event:**

| Field           | Ekspresi N8N              |
| --------------- | ------------------------- |
| Tipe event      | `{{ $json.event_type }}`  |
| Timestamp event | `{{ $json.occurred_at }}` |

**Untuk event DM (`Message Received` dan `Message Echo`):**

| Field          | Ekspresi N8N                   |
| -------------- | ------------------------------ |
| ID pengirim    | `{{ $json.raw.sender.id }}`    |
| ID penerima    | `{{ $json.raw.recipient.id }}` |
| Isi teks       | `{{ $json.raw.message.text }}` |
| ID pesan (mid) | `{{ $json.raw.message.mid }}`  |

**Untuk event komentar (`Comment Created`):**

| Field                          | Ekspresi N8N                    |
| ------------------------------ | ------------------------------- |
| ID komentar                    | `{{ $json.raw.id }}`            |
| Username komentator            | `{{ $json.raw.from.username }}` |
| Isi komentar                   | `{{ $json.raw.text }}`          |
| ID media (post/reel)           | `{{ $json.raw.media.id }}`      |
| ID komentar induk (jika reply) | `{{ $json.raw.parent_id }}`     |

> 💡 Untuk balas DM masuk, gunakan `{{ $json.raw.sender.id }}` sebagai **Recipient Platform ID** di node Instagram Send.

***

## Node 2: Instagram

Action node untuk mengirim pesan dan mengelola komentar melalui akun Instagram di dibales.ai.

### Credential

Di field **Credential**, pilih credential dengan tipe **dibales.ai account**. Jika belum ada, buat credential baru dan isi dengan API Key yang tersedia di dashboard dibales.ai.

***

### Resource: Message

**Operation: Send**

Kirim pesan ke kontak via DM Instagram.

**Parameter utama yang selalu ada:**

| Parameter                 | Keterangan                                                                          |
| ------------------------- | ----------------------------------------------------------------------------------- |
| **Recipient Platform ID** | ID Instagram pengguna tujuan. Ambil dari trigger event: `{{ $json.raw.sender.id }}` |
| **Type**                  | Pilih tipe pesan yang akan dikirim (lihat daftar di bawah).                         |

***

**Type: Text**

| Parameter         | Keterangan                                                                                                                                                                                                                   |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Text**          | Isi teks pesan.                                                                                                                                                                                                              |
| **Quick Replies** | (Opsional) Tambahkan opsi pilihan cepat yang muncul di bawah pesan. Klik **Add Quick Reply**, isi **Title** (label tombol) dan **Payload** (string yang dikirim balik saat opsi dipilih). Maksimal 13 quick reply per pesan. |

***

**Type: Button Template**

| Parameter   | Keterangan                                                                                                                                           |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Text**    | Teks utama pesan yang tampil di atas tombol.                                                                                                         |
| **Buttons** | Daftar tombol. Klik **Add Button**, isi **Title** (label tombol) dan **Payload** (string yang dikirim balik saat tombol ditekan). Maksimal 3 tombol. |

***

**Type: Image / Video / Audio / File**

| Parameter | Keterangan                                                                           |
| --------- | ------------------------------------------------------------------------------------ |
| **URL**   | URL publik dari file media yang akan dikirim. File harus bisa diakses secara publik. |

***

**Type: Generic Template (Carousel)**

Kirim pesan dalam format kartu yang bisa digeser (carousel). Setiap kartu bisa berisi gambar, judul, subjudul, dan tombol.

| Parameter     | Keterangan                                                                                |
| ------------- | ----------------------------------------------------------------------------------------- |
| **Elements**  | Daftar kartu. Klik **Add Element** untuk menambah kartu baru.                             |
| **Image URL** | URL gambar untuk kartu (per element).                                                     |
| **Title**     | Judul kartu (per element).                                                                |
| **Subtitle**  | (Opsional) Teks deskripsi di bawah judul (per element).                                   |
| **Buttons**   | (Opsional) Tombol di bawah kartu. Isi **Title** dan **Payload** per tombol (per element). |

***

**Operation: React**

Tambahkan reaksi emoji ke pesan yang sudah terkirim.

| Parameter                 | Keterangan                                                                                                   |
| ------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Platform Message ID**   | ID pesan di Instagram yang akan diberi reaksi. Ambil dari output send node sebelumnya: `platform_message_id` |
| **Recipient Platform ID** | ID kontak penerima                                                                                           |
| **Reaction**              | Pilih emoji reaksi dari dropdown                                                                             |

***

### Resource: Comment

Operasi untuk mengelola komentar di post dan reel Instagram.

| Operation  | Fungsi                                      | Parameter Utama                                             |
| ---------- | ------------------------------------------- | ----------------------------------------------------------- |
| **Reply**  | Balas komentar di post/reel                 | `Comment ID`: ID komentar yang dibalas, `Text`: isi balasan |
| **Hide**   | Sembunyikan komentar                        | `Comment ID`: ID komentar yang akan disembunyikan           |
| **Unhide** | Tampilkan kembali komentar yang tersembunyi | `Comment ID`: ID komentar yang akan ditampilkan             |
| **Delete** | Hapus komentar                              | `Comment ID`: ID komentar yang akan dihapus                 |

> 💡 `Comment ID` bisa diambil langsung dari output port **Comment Created**: `{{ $json.raw.id }}`

***

#### Output Data

Semua operation di **Resource: Message > Send** mengembalikan output dengan struktur yang konsisten:

| Field                 | Tipe              | Keterangan                                                    |
| --------------------- | ----------------- | ------------------------------------------------------------- |
| `message_id`          | String            | ID pesan di sistem dibales.ai                                 |
| `platform_message_id` | String            | ID pesan asli di Instagram. Gunakan ini untuk operation React |
| `sent_at`             | String (ISO 8601) | Timestamp saat pesan terkirim                                 |

Akses field ini di node berikutnya dengan ekspresi: `{{ $json.message_id }}`, `{{ $json.platform_message_id }}`, dst.
