AI Class

Membangun IVR Cerdas Berbasis AI dengan n8n: Twilio/Asterisk, STT, TTS, dan Routing Pintar

· 7 menit baca

Membangun IVR Cerdas Berbasis AI dengan n8n: Twilio/Asterisk, STT, TTS, dan Routing Pintar

IVR (Interactive Voice Response) klasik identik dengan menu angka yang membingungkan, waktu tunggu lama, dan pengalaman yang kaku. Kabar baiknya, dengan n8n dan AI, Anda dapat membangun voicebot yang memahami ucapan, merespons secara natural, mengakses basis pengetahuan, serta melakukan routing cerdas ke agen—semuanya dengan biaya efisien dan fleksibilitas tinggi.

Artikel ini adalah panduan lengkap untuk membuat IVR cerdas menggunakan n8n + AI yang terintegrasi dengan Twilio atau Asterisk/FreePBX, memanfaatkan STT (Speech-to-Text), TTS (Text-to-Speech), dan LLM untuk klasifikasi intent, RAG (Retrieval-Augmented Generation) untuk jawaban mandiri, hingga eskalasi ke manusia. Cocok untuk tim CX, IT, dan bisnis yang ingin meningkatkan kepuasan pelanggan sekaligus menekan biaya.

Mengapa IVR Cerdas?

  • Natural language: Pelanggan berbicara natural, sistem memahami dan menindaklanjuti.
  • Self-service: Jawab pertanyaan umum dari knowledge base (RAG) tanpa manusia.
  • Routing pintar: Deteksi intent dan prioritas; arahkan ke agen/queue yang tepat.
  • Data-driven: Simpan transkrip, intent, sentimen, dan waktu tunggu untuk analitik.
  • Skalabel: n8n dapat berjalan queue mode dan di-scale horizontal.

Arsitektur Referensi

Komponen utama:

  1. Telephony: Twilio (Voice URL + TwiML), atau Asterisk/FreePBX (ARI/AGI).
  2. n8n: Orkestrasi alur, logika bisnis, integrasi LLM, vector DB, CRM, ticketing.
  3. STT: Twilio <Gather input="speech">, Google STT, Azure STT, atau OpenAI Whisper (server sendiri).
  4. TTS: Twilio <Say> (built-in), Azure TTS, ElevenLabs—dengan <Play> untuk file audio.
  5. AI/NLU: LLM (OpenAI, Azure OpenAI, Claude, model lokal) untuk klasifikasi intent, ekstraksi entitas, dan generasi jawaban.
  6. RAG: Vector DB (Pinecone, Qdrant, Weaviate) + embedding untuk jawaban kontekstual.
  7. Data: Data lake/warehouse (BigQuery, Postgres) untuk analitik; opsional Langfuse untuk telemetri LLM.

Alur ringkas: Panggilan → webhook ke n8n → <Gather> untuk ucapan → n8n terima transkrip → LLM klasifikasi intent → (opsional) RAG → hasil → <Say>/<Play> → <Dial>/<Enqueue> bila perlu → log dan metrik.

Desain Alur Percakapan

  1. Greeting & consent: Sapa pengguna, sebutkan rekaman/transkripsi untuk peningkatan layanan.
  2. Language & intent detect: Deteksi bahasa otomatis; klasifikasi intent (mis. status pesanan, reset password, penagihan, komplain).
  3. Self-service: Jawab dengan RAG untuk FAQ atau jalankan automasi (cek status order via API, kirim OTP, buat tiket).
  4. Routing ke agen: Jika perlu manusia, arahkan ke queue/extension sesuai prioritas dan jadwal.
  5. Sentimen & prioritas: Naikkan prioritas bila sentimen negatif/emosi tinggi.
  6. Logging: Simpan transkrip, intent, skor, durasi, outcome; kirim ke BI atau observability.

Implementasi dengan n8n + Twilio (Contoh Praktis)

Skema paling sederhana memakai Twilio Voice dengan webhook ke n8n. Twilio mengharapkan respons TwiML (XML). Di n8n, gunakan Webhook Trigger + HTTP Response untuk mengembalikan TwiML.

1) Endpoint Awal: Greeting & Speech Gather

Di Twilio Console, set Voice URL nomor Anda ke URL Webhook Trigger n8n (method POST). Respons awal dari n8n:

<Response>
  <Gather input="speech" language="id-ID" action="https://your-n8n.tld/webhook/ivr-intent" method="POST" speechTimeout="auto" hints="status pesanan,reset password,penagihan,berbicara dengan agen">
    <Say language="id-ID">Halo, Anda terhubung ke layanan pelanggan. Ceritakan kebutuhan Anda, misalnya status pesanan atau berbicara dengan agen.</Say>
  </Gather>
  <Say language="id-ID">Maaf, kami tidak mendengar apapun. Silakan coba lagi.</Say>
  <Redirect method="POST">https://your-n8n.tld/webhook/ivr-start</Redirect>
</Response>

Anda dapat menghasilkan TwiML ini dengan node Function atau langsung di node HTTP Response (set Content-Type ke application/xml).

2) Terima Transkrip dari Twilio

Twilio mem-POST hasil <Gather> ke action URL. Body mengandung SpeechResult (transkrip) dan Confidence. Di n8n, baca variabel ini dari node Webhook → Set node.

3) Klasifikasi Intent dengan LLM

Gunakan node OpenAI/Azure OpenAI/LLM pilihan Anda untuk mengklasifikasikan intent secara deterministik. Contoh prompt:

Anda adalah classifier intent untuk IVR Bahasa Indonesia. Balas HANYA JSON:
{
  "language": "id|en|...",
  "intent": "status_pesanan|reset_password|penagihan|komplain|bicara_agen|lainnya",
  "entities": {"order_id": "string|null"},
  "confidence": 0-1,
  "handoff": true|false
}
Teks: "{{$json.SpeechResult}}"

Set temperature rendah (≤0.2) dan max tokens minimal. Validasi output JSON dengan node IF atau Code untuk fallback aman.

4) RAG untuk Jawaban Self‑Service (Opsional)

Untuk intent seperti FAQ atau kebijakan, lakukan retrieval ke vector DB. Alur sederhana:

  1. Node Embedding (OpenAI/Azure/Local) → query.
  2. HTTP Request ke Pinecone/Qdrant untuk top‑k dokumen.
  3. Prompt LLM: rangkum jawaban berdasarkan sumber teratas + instruksi ringkas untuk suara.

Batasi panjang jawaban (≤180 karakter) agar nyaman didengar.

5) TTS & Respons ke Penelpon

Opsi cepat: gunakan <Say> Twilio:

<Response>
  <Say language="id-ID">Status pesanan Anda aktif dan akan dikirim hari ini. Apakah ada yang lain?</Say>
  <Redirect method="POST">https://your-n8n.tld/webhook/ivr-start</Redirect>
</Response>

Untuk suara yang lebih natural, hasilkan file audio via Azure/ElevenLabs di n8n, simpan di storage (S3/GCS), lalu balas TwiML:

<Response>
  <Play>https://cdn.yourdomain.tld/audio/ivr-reply-12345.mp3</Play>
</Response>

6) Routing ke Agen/Queue

Jika handoff=true atau confidence rendah, dial ke agen/queue:

<Response>
  <Say language="id-ID">Mohon tunggu, kami menghubungkan Anda ke agen kami.</Say>
  <Dial timeout="20" record="record-from-answer">+622112345678</Dial>
</Response>

Di ekosistem Twilio, Anda juga bisa memakai <Enqueue>/<Queue> untuk antrean; di Asterisk gunakan Queue dengan strategy yang sesuai.

7) Logging, Analitik, dan Observabilitas

  • Simpan transkrip, intent, confidence, durasi, outcome ke Postgres/BigQuery.
  • Kirim event ke alat telemetri LLM (mis. Langfuse) untuk jejak prompt, versi, dan skor evaluasi.
  • Bangun dashboard di Metabase/Looker Studio untuk SLA, FCR (First Contact Resolution), AHT.

Contoh Struktur Workflow n8n

  1. Webhook (ivr-start): Balas TwiML <Gather> untuk speech.
  2. Webhook (ivr-intent): Terima SpeechResult, normalisasi teks.
  3. LLM Classifier: Kembalikan JSON intent + entitas.
  4. Switch: Cabangkan ke status_pesanan | reset_password | penagihan | bicara_agen | lainnya.
  5. HTTP Request/API: Panggil sistem internal (ERP/CRM) bila perlu.
  6. RAG Path (opsional): Embedding → Vector DB → LLM answer.
  7. Format TwiML: Function/Code node membangun XML aman.
  8. HTTP Response: application/xml ke Twilio.
  9. Logging: Simpan data percakapan.

Implementasi dengan Asterisk/FreePBX (Ringkas)

Bila memakai Asterisk, gunakan ARI atau AGI untuk menghubungkan ke n8n:

  • AGI: Kirim audio rekaman ke n8n (HTTP), n8n → STT → intent → kembalikan instruksi (mis. Dial extension), AGI mengeksekusi.
  • ARI + Media: Integrasi streaming untuk STT real-time (lebih kompleks, latensi lebih rendah).

Pro-tip: mulai dari batch (rekam → transkrip), baru nanti optimasi ke streaming jika traffic tinggi.

Best Practice Keamanan & Kepatuhan

  • Consent & PII: Umumkan perekaman; redaksi PII (nama, alamat, nomor kartu) dengan pipeline PII redaction sebelum penyimpanan.
  • Data minimization: Simpan hanya yang perlu (intent, ringkasan), hapus audio mentah sesuai retensi.
  • Enkripsi: TLS end‑to‑end; gunakan penyimpanan terenkripsi untuk audio/transkrip.
  • Rate limiting: Terapkan di n8n (queue mode + Redis) agar stabil saat lonjakan.
  • Fallback aman: Jika LLM gagal parsing, selalu punya jalur Dial ke agen.

Optimasi Latensi & Biaya

  • Region dekat: Pilih region Twilio, STT/TTS, dan LLM sedekat mungkin dengan server n8n.
  • Kurangi hop: Pakai <Say> untuk TTS built-in bila prioritas adalah latensi.
  • Prompt ringkas: Gunakan classifier LLM kecil atau model lokal untuk hemat biaya dan cepat.
  • Caching: Cache jawaban FAQ populer; pre‑generate audio untuk pengumuman tetap.
  • Timeout defensif: Set SLA per langkah (STT/LLM/TTS) dan fallback ke template jawaban.

Pengujian & Evaluasi Kualitas

  • Test set: Kumpulkan 100+ contoh ucapan beraksen/variasi kalimat; ukur intent accuracy.
  • FCR & AHT: Pantau First Contact Resolution, Average Handle Time, dan Transfer Rate.
  • Sentimen: Analisis tren sentimen per topik untuk prioritas perbaikan.
  • Canary: Uji versi prompt/model baru untuk sebagian kecil trafik sebelum rollout penuh.

Snippet: Node Function untuk TwiML di n8n

Contoh sederhana membangun TwiML di node Function:

// Input: items[0].json.replyText
const reply = $json.replyText || 'Baik, kami menerima permintaan Anda.';
const xml = `<Response>\n  <Say language="id-ID">${reply.replace(/&/g,'&amp;').replace(/</g,'&lt;')}</Say>\n</Response>`;
return [{ json: { xml }, headers: { 'Content-Type': 'application/xml' } }];

Kembalikan xml ini via node HTTP Response.

Roadmap Pengembangan

  1. V1: Greeting → STT Twilio → Intent LLM → <Say>/<Dial> → Logging.
  2. V2: RAG untuk FAQ dan status order; TTS premium via Azure/ElevenLabs.
  3. V3: Sentimen real-time, prioritas antrean, callback scheduling otomatis.
  4. V4: Streaming media (Twilio Media Streams), agent AI real-time, multi-bahasa penuh.

FAQ

Apakah saya harus memakai Twilio?

Tidak. Anda dapat memakai Asterisk/FreePBX. Twilio mempercepat implementasi karena sudah menyediakan webhook, STT/TTS, dan TwiML. Asterisk memberi fleksibilitas dan kontrol biaya.

Bisakah tanpa LLM berbayar?

Bisa. Gunakan model lokal (mis. Whisper untuk STT, LLM quantized via Ollama) untuk klasifikasi dasar. Namun, akurasi dan tuning mungkin memerlukan usaha tambahan.

Bagaimana menjaga privasi data?

Umumkan perekaman, lakukan redaksi PII, enkripsi penyimpanan, batasi retensi. Untuk data sensitif, pertimbangkan inference on‑premise.

Apakah bisa multi-bahasa?

Bisa. Deteksi bahasa otomatis, arahkan ke jalur TTS/STT yang sesuai, dan gunakan prompt multi-bahasa. Pastikan voice font mendukung bahasa target.

Penutup

Dengan memadukan n8n dan AI, Anda dapat membangun IVR cerdas yang natural, efisien, dan mudah dipelihara. Mulailah dari alur sederhana, ukur dampak (FCR, AHT, sentimen), lalu iterasikan ke arah RAG, TTS premium, hingga streaming real-time. Transformasi pengalaman pelanggan Anda dimulai dari satu webhook n8n hari ini.

Artikel terkait