π Day 2 β Integrasi ElevenLabs + n8n: Dua Pendekatan Voice Agent β
Minggu 2 Β· Hari 2 β Yellow Day (Integration) Topik: Dua pola integrasi (n8n orchestrates vs ElevenLabs orchestrates), terminologi HTTP/webhook, membangun kedua pendekatan, deploy ke production
π Daftar Isi β
- Dua Pola Integrasi
- Terminologi HTTP & Webhook
- Node Generik: HTTP Request & Webhook
- Pendekatan 1: n8n Orchestrates
- Pendekatan 2: ElevenLabs Orchestrates
- Deploy ke Production
- Rangkuman & Poin Penting
π Dua Pola Integrasi β
Ada dua cara fundamental untuk mengintegrasikan ElevenLabs dengan n8n. Pemahaman kedua pola ini sangat penting karena masing-masing memiliki kelebihan dan kekurangan yang jelas.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β Pendekatan 1: n8n Orchestrates Pendekatan 2: 11Labs β
β βββββββββββββββββββββββββββββ Orchestrates β
β βββββββββββββββββ β
β βββββββββββ ββββββββββββββββ β
β β Audio β β 11Labs β β
β β Input β β Voice Agent β β
β ββββββ¬βββββ ββββββββ¬ββββββββ β
β β β β
β ββββββΌβββββ ββββββββΌββββββββ β
β β 11Labs β βββ API call β Webhook β β
β β STT API β (SpeechβText) β Tool Call β β
β ββββββ¬βββββ ββββββββ¬ββββββββ β
β β β β
β ββββββΌβββββ ββββββββΌββββββββ β
β β n8n β β n8n β β
β β AI Agentβ β Business β β
β ββββββ¬βββββ β Logic β β
β β ββββββββ¬ββββββββ β
β ββββββΌβββββ ββββββββΌββββββββ β
β β 11Labs β βββ API call β Response β β
β β TTS API β (TextβSpeech) β β 11Labs β β
β ββββββ¬βββββ ββββββββ¬ββββββββ β
β β β β
β ββββββΌβββββ ββββββββΌββββββββ β
β β Audio β β 11Labs β β
β β Output β β Speaks β β
β βββββββββββ ββββββββββββββββ β
β β
β β οΈ Latency tinggi β
Latency rendah β
β β
Semua di satu canvas β
Best of both worlds β
β β
Vendor-switchable β
Real-time voice β
β β
DIREKOMENDASIKAN β
β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββPerbandingan Detail β
| Aspek | n8n Orchestrates | ElevenLabs Orchestrates (β ) |
|---|---|---|
| Siapa bos-nya? | n8n mengontrol seluruh alur | ElevenLabs mengelola voice flow |
| Latency | Tinggi (linear: STTβAgentβTTS) | Rendah (real-time conversion) |
| Kompleksitas | Sederhana, satu canvas | Sedikit lebih kompleks |
| Fidelitas suara | Standard API call | Fitur penuh 11Labs (filler, etc) |
| Vendor lock-in | Rendah (mudah ganti API) | Lebih terikat ke 11Labs |
| Fitur telepon | Tidak tersedia | Bisa hubungkan ke Twilio |
| Rekomendasi | Untuk bagian dari workflow besar | Untuk voice agent dedicated |
π― Rekomendasi: Pendekatan 2 (ElevenLabs Orchestrates) adalah pilihan terbaik karena latency rendah sangat krusial dalam voice agent. ElevenLabs secara otomatis melakukan konversi speech real-time tanpa proses linear.
π‘ Terminologi HTTP & Webhook β
Sebelum membangun integrasi, penting memahami terminologi dasar komunikasi antar platform.
Istilah Kunci β
| Istilah | Definisi | Contoh Penggunaan |
|---|---|---|
| API Call | Membuat web request menggunakan HTTP ke sebuah URL | n8n memanggil ElevenLabs API |
| Endpoint | URL yang dituju saat melakukan API call | https://api.elevenlabs.io/v1/... |
| Webhook | URL yang kamu sediakan agar pihak lain bisa memanggil-mu | n8n menyediakan URL untuk dipanggil 11Labs |
| HTTP GET | Jenis request untuk mengambil data (response: JSON) | Mengambil daftar produk |
| HTTP POST | Jenis request untuk mengirim data, dengan body berisi JSON | Mengirim pertanyaan ke n8n |
| Body | Bagian dari HTTP POST yang berisi data JSON yang dikirim | {"question": "Berapa harga..."} |
| Method/Verb | Jenis HTTP request (GET, POST, PUT, DELETE, dll.) | Dipilih dari dropdown di webhook/tool |
Cara Menggunakan dalam Kalimat β
"Saya memanggil API (calling an API) dengan membuat HTTP request
ke sebuah endpoint (URL)."
"Saya sudah menyiapkan webhook β silakan buat HTTP request
ke sana untuk memberi tahu saya tentang sebuah event."
"Saya menggunakan HTTP POST untuk mengirim pertanyaan dalam body
berupa JSON ke webhook n8n."π§ Node Generik: HTTP Request & Webhook β
Selain node-node spesifik (Slack node, Telegram node, dll.), n8n memiliki node generik untuk berintegrasi dengan platform apapun.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Node Integrasi di n8n β
ββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ€
β Spesifik β Generik β
ββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββ€
β Slack Node β HTTP Request Node β
β Telegram Node β β Panggil URL endpoint apapun β
β Google Sheets β β Output = response JSON β
β Supabase Node β β
β ElevenLabs Node β Webhook Node β
β dll. β β Terima panggilan dari luar β
β β β Test URL + Production URL β
β β β Respond segera / via node lain β
ββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββπ‘ Kapan menggunakan node generik? Saat platform target belum memiliki node spesifik di n8n, atau saat kamu ingin interaksi yang lebih fleksibel.
π¨ Pendekatan 1: n8n Orchestrates β
Setup ElevenLabs API Key β
- Masuk ke ElevenLabs β Developers β API Keys
- Buat key baru dengan monthly limit 500 credits
- Berikan akses ke semua service (read access)
- Simpan key dengan aman
Workflow n8n β
ββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββ
β Webhook βββββΆβ 11Labs βββββΆβ AI Agent βββββΆβ 11Labs βββββΆβ Respond β
β (POST) β β STT β β (Gemini) β β TTS β β Webhook β
β β β AudioβTextβ β β β TextβAudioβ β (binary) β
ββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββLangkah-langkah Build β
- Webhook Node β Menerima audio via HTTP POST
- ElevenLabs Speech-to-Text β Konversi audio menjadi teks
- Install node ElevenLabs (community node)
- Hubungkan credential (API key)
- AI Agent (Gemini 3 Flash) β Proses teks, hasilkan jawaban
- Set input:
{{ $json.text }}(dari STT output) - Konfigurasi: "Define below" (bukan connected chat trigger)
- Set input:
- ElevenLabs Text-to-Speech β Konversi jawaban menjadi audio
- Voice: Miss Walker atau Jason
- Text:
{{ $json.output }}(expression dari agent output)
- Respond to Webhook β Kirim file audio kembali ke pemanggil
Halaman Test: voice.html β
File HTML sederhana (dibuat ChatGPT) untuk menguji webhook:
- Masukkan URL webhook n8n
- Tekan "Start Recording" β bicara β "Stop" β "Send to n8n"
- Audio dikirim via POST, respons dimainkan otomatis
Troubleshooting Build β
| Masalah | Penyebab | Solusi |
|---|---|---|
| "Cannot read properties of undefined" | Node cari field data, tapi audio masuk sebagai audio | Ubah field input menjadi audio |
| "Connected chat trigger node" | AI Agent masih expect chat input | Ubah ke "Define below", gunakan {{ $json.text }} |
β Pendekatan 2: ElevenLabs Orchestrates (Direkomendasikan) β
Arsitektur β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ElevenLabs β
β ββββββββββββββββ β
β β Voice Agent βββββ Bicara dengan pengguna β
β β (Russell) β β
β β β ββββββββββββββββββββββββββββββ β
β β Tool: ββββββΆβ Webhook POST ke n8n β β
β β "Equity β β Body: { question: "..." } β β
β β Portfolio βββββββ Response: JSON jawaban β β
β β Question" β ββββββββββββββββββββββββββββββ β
β ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββΌββββββββββββ
β n8n β
β βββββββββββββ β
β β Webhook β β
β β (POST) β β
β βββββββ¬ββββββ β
β βββββββΌββββββ β
β β AI Agent β β
β β (Gemini) β β
β β + Google β β
β β Sheets β β
β β Tool β β
β βββββββ¬ββββββ β
β βββββββΌββββββ β
β β Respond β β
β β Webhook β β
β βββββββββββββ β
βββββββββββββββββββββββKonfigurasi di ElevenLabs β
- Buat Agent Baru β "Blank Agent" β nama: "n8n Agent"
- System Prompt: "You are a helpful assistant"
- Voice: Russell (outgoing, excited)
- Buat Tool Webhook:
| Parameter | Nilai |
|---|---|
| Nama | equity_portfolio_question_tool (tanpa spasi!) |
| Deskripsi | "Use this tool to ask any question about the user's equity portfolio to a specialist assistant" |
| Method | POST |
| URL | URL webhook dari n8n (test/production) |
| Timeout | 60 detik |
| Pre-tool speech | Force (agar agent bicara sebelum tool dieksekusi) |
- Body Parameters:
| Field | Type | Identifier | Required | Filled By | Deskripsi |
|---|---|---|---|---|---|
| question | String | question | Ya | LLM | Pertanyaan tentang equity portfolio user |
Konfigurasi di n8n β
- Webhook (POST) β terima panggilan dari ElevenLabs
- AI Agent (Gemini 3 Flash):
- Input:
{{ $json.body.question }}(pertanyaan dari body POST) - Tool: Google Sheets (baca portfolio saham)
- Tanpa memory (setiap panggilan independen)
- Input:
- Respond to Webhook β kirim JSON jawaban kembali ke ElevenLabs
Perbedaan Kunci pada AI Agent β
Pendekatan 1 (n8n orchestrates):
Input = {{ $json.text }} β dari transcription
Pendekatan 2 (11Labs orchestrates):
Input = {{ $json.body.question }} β dari webhook POST bodyMengapa Tanpa Memory? β
Pada pendekatan 2, n8n dipanggil sebagai "backend tool" β setiap panggilan independen. Memory ada di sisi ElevenLabs yang mengelola percakapan secara keseluruhan.
π Deploy ke Production β
Langkah Deploy β
Di n8n:
- Salin Production URL dari Webhook node
- Klik Publish (workflow aktif di production)
Di ElevenLabs:
- Update URL tool: ganti Test URL β Production URL
- Klik Save (jangan lupa!)
- Klik Publish β agent live
- Copy Shareable Link β buka di browser baru
Test vs Production β
| Aspek | Test Mode | Production Mode |
|---|---|---|
| URL | Test URL | Production URL |
| Eksekusi | Satu kali per "Execute Workflow" | Terus-menerus, otomatis |
| Multi-question | Tidak bisa (satu webhook call) | Bisa (berulang kali) |
| Kapan pakai | Saat development & debugging | Saat agent siap digunakan |
Hasil Testing Production β
Agent berhasil menjawab pertanyaan berturut-turut tentang portfolio saham:
- "How many shares of SPY do I have?" β "You currently have 2 shares of SPY"
- "What other stocks do I have?" β "BND, iShares Core Allocation ETF, iShares Core Aggressive Allocation ETF"
π Rangkuman β
Poin-Poin Utama β
| # | Konsep | Deskripsi |
|---|---|---|
| 1 | Dua pola integrasi | n8n orchestrates vs ElevenLabs orchestrates |
| 2 | Latency = faktor kunci | 11Labs orchestration menghasilkan latency jauh lebih rendah |
| 3 | Webhook tool di 11Labs | LLM mengisi body JSON β POST ke n8n webhook |
| 4 | Generic nodes di n8n | HTTP Request Node + Webhook Node untuk integrasi apapun |
| 5 | voice.html | Halaman test sederhana untuk menguji audio webhook |
| 6 | Gemini sebagai chat model | Gemini 3 Flash digunakan sebagai alternatif OpenAI |
| 7 | Test β Production deploy | Ubah URL webhook, publish kedua platform |
Teknologi Yang Digunakan Hari Ini β
βββββββββββββββ¬βββββββββββββββββββββββββββββββββ
β Platform β Peran β
βββββββββββββββΌβββββββββββββββββββββββββββββββββ€
β ElevenLabs β Voice agent + STT/TTS API β
β n8n β Business logic & orchestration β
β Gemini β Chat model (AI Agent) β
β Google Sheetsβ Data tool (equity portfolio) β
β voice.html β Test page untuk audio webhook β
βββββββββββββββ΄βββββββββββββββββββββββββββββββββπ Pencapaian β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
Memahami dua pola integrasi 11Labs + n8n β
β β
Membangun Pendekatan 1 (n8n orchestrates) β
β β
Membangun Pendekatan 2 (11Labs orchestrates) β
β
β β
Menggunakan generic Webhook + Respond to Webhook β
β β
Konfigurasi webhook tool di ElevenLabs β
β β
Deploy kedua platform ke production β
β β
β π Progress Kursus: 47% ββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββSelanjutnya: Memahami RAG (Retrieval-Augmented Generation) β teknik paling populer untuk memberikan LLM pengetahuan domain spesifik.