se-hari.com se-hari.com

Tangani notulen yang gagal

Tidak semua kegagalan sama. Yang gagal karena kredit habis cukup diulang setelah top up; yang gagal karena rekaman tanpa audio tidak akan pernah…

2 menit baca Diperbarui 15 Agustus 2026 Lihat sebagai Markdown

Tidak semua kegagalan sama. Yang gagal karena kredit habis cukup diulang setelah top up; yang gagal karena rekaman tanpa audio tidak akan pernah berhasil. Workflow ini membedakannya dan memperlakukan keduanya dengan benar.

#Kapan resep ini masuk akal

Resep ini tidak menghasilkan apa pun yang terlihat sampai ada yang gagal — dan justru itu nilainya. Tanpa penanganan kegagalan, notulen yang gagal akan diam saja: tidak ada notifikasi, tidak ada pengulangan, dan tidak ada yang tahu sampai seseorang mencari ringkasan yang ternyata tidak pernah ada.

#Yang dihasilkan

Notulen yang bisa diulang dicoba otomatis; yang tidak bisa dilaporkan ke manusia.

#Yang Anda butuhkan

  • n8n self-hosted dengan community node n8n-nodes-sehari terpasang
  • notulen:write
  • webhooks:write

Kalau belum memasang node-nya, ikuti panduan n8n lebih dulu — pemasangannya satu langkah dari menu Settings.

#Alur workflow

  1. Se-Hari Trigger (Se-Hari: seHariTrigger)
  2. Bisa Diulang? (if)
  3. Tunggu 10 Menit (wait)
  4. Coba Lagi (Se-Hari: seHari)
  5. Laporkan ke Slack (noOp)

#Cara memakainya

  1. Salin JSON di bawah
  2. Di n8n: Workflows → Import from Clipboard, lalu tempel
  3. Pilih kredensial Se-Hari API pada setiap node Se-Hari
  4. Sesuaikan node tujuan (lihat catatan di bawah)
  5. Aktifkan workflow

Kalau workflow ini memakai node trigger, endpoint webhook-nya didaftarkan otomatis saat diaktifkan dan dihapus saat dinonaktifkan. Tidak ada URL yang perlu disalin manual.

#Yang perlu disesuaikan

Percabangan didasarkan pada field retryable di payload note.failed. Field itu ada justru supaya Anda tidak perlu memelihara daftar kode kegagalan sendiri — daftar yang pasti tertinggal begitu ada kode baru.

#Sebelum dijalankan di produksi

Impor dulu ke workflow terpisah dan jalankan sekali secara manual. n8n menyimpan hasil setiap node pada eksekusi terakhir, jadi Anda bisa melihat bentuk data yang sebenarnya keluar dari node Se-Hari sebelum menulis ekspresi apa pun di node berikutnya. Menebak bentuk data lalu memperbaikinya lewat percobaan berulang jauh lebih lambat, dan pada resep yang memakai kredit, percobaan berulang itu ada harganya.

Perhatikan juga penagihan kredit resep ini. Operasi yang membuat meeting memotong kredit saat itu juga, sedangkan operasi notulen menagih setelah pemrosesan selesai sesuai durasi asli rekaman. Kalau workflow Anda membaca saldo tepat setelah mengantre notulen, angkanya belum berubah — itu bukan bug. Pasang batas kredit harian pada API key yang dipakai workflow ini supaya kesalahan sekali tidak berubah menjadi tagihan besar.

#Kalau tidak berjalan seperti seharusnya

Batasi jumlah pengulangan. Tanpa penghitung, notulen yang gagal berulang karena alasan sementara akan berputar tanpa henti antara gagal dan dicoba lagi. Cara termudah: baca field attempts pada notulen dan berhenti setelah ambang tertentu.

Untuk masalah yang lebih umum, tab Webhooks di dashboard developer memuat riwayat pengiriman lengkap dengan kode respons dari instance n8n Anda — tempat pertama yang harus dilihat ketika trigger tidak pernah berjalan.

#Variasi yang sering diminta

  • Kirim laporan kegagalan permanen ke channel terpisah dari pengulangan otomatis, supaya yang butuh perhatian manusia tidak tenggelam.
  • Tambahkan penghitung percobaan dan berhenti setelah tiga kali, meski payload menyatakan masih bisa diulang.
  • Untuk kegagalan karena kredit, picu resep peringatan kredit menipis alih-alih sekadar mengulang.

#Workflow JSON

json
{
  "name": "Tangani Notulen Gagal",
  "nodes": [
    {
      "parameters": {
        "content": "## Tangani Notulen Gagal\n\nTidak semua kegagalan sama:\n\n- `retryable: true` — misalnya kredit habis. Cukup top up lalu ulangi.\n- `retryable: false` — misalnya rekaman tanpa audio. Diulang berapa kali pun tidak akan berhasil.\n\nMembedakannya adalah alasan utama workflow ini ada. Cabang atas mengulang otomatis; cabang bawah memberi tahu manusia.",
        "width": 460,
        "height": 260
      },
      "id": "note-1",
      "name": "Catatan",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -40,
        -40
      ]
    },
    {
      "parameters": {
        "events": [
          "note.failed"
        ]
      },
      "id": "trg-notefailed",
      "name": "Se-Hari Trigger",
      "type": "n8n-nodes-sehari.seHariTrigger",
      "typeVersion": 1,
      "position": [
        0,
        300
      ],
      "credentials": {
        "seHariApi": {
          "id": "__SEHARI_CRED__",
          "name": "Se-Hari API"
        }
      },
      "webhookId": "__AUTO__"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "version": 2
          },
          "conditions": [
            {
              "id": "c1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.retryable }}"
            }
          ],
          "combinator": "and"
        }
      },
      "id": "if-BisaDiulang",
      "name": "Bisa Diulang?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        220,
        300
      ]
    },
    {
      "parameters": {
        "amount": 600,
        "unit": "seconds"
      },
      "id": "wait-Tunggu10Menit",
      "name": "Tunggu 10 Menit",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        440,
        300
      ],
      "webhookId": "__AUTO__"
    },
    {
      "parameters": {
        "resource": "notulen",
        "operation": "retry",
        "noteId": "={{ $json.note.id }}"
      },
      "id": "sh-CobaLagi",
      "name": "Coba Lagi",
      "type": "n8n-nodes-sehari.seHari",
      "typeVersion": 1,
      "position": [
        660,
        300
      ],
      "credentials": {
        "seHariApi": {
          "id": "__SEHARI_CRED__",
          "name": "Se-Hari API"
        }
      }
    },
    {
      "parameters": {},
      "id": "dst-LaporkankeSlack",
      "name": "Laporkan ke Slack",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        880,
        300
      ],
      "notes": "Ganti dengan Slack. Pesan: Notulen {{ $json.note.title }} gagal permanen — {{ $json.note.failure_code }}",
      "notesInFlow": true
    }
  ],
  "connections": {
    "Se-Hari Trigger": {
      "main": [
        [
          {
            "node": "Bisa Diulang?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bisa Diulang?": {
      "main": [
        [
          {
            "node": "Tunggu 10 Menit",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Laporkan ke Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tunggu 10 Menit": {
      "main": [
        [
          {
            "node": "Coba Lagi",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": [
    {
      "name": "Se-Hari"
    }
  ]
}

#Resep lain

Siap mencoba?

Buat API key gratis di dashboard — tidak ada biaya berlangganan, kredit terpakai hanya saat Anda benar-benar memproses rekaman atau membuat meeting.

Buat API Key