Cara Balas WA Otomatis dengan Menu Pilihan

Tutorial buat auto reply WhatsApp dengan menu interaktif. Numbered menu, button reply, easy navigation. Panduan lengkap!

Cara Balas WA Otomatis
Cara Balas WA Otomatis

Menu pilihan = Customer tidak bingung!

Dengan menu yang jelas, customer tinggal pilih angka atau opsi. Bot langsung respond sesuai pilihan. Lebih efisien!


Jenis Menu Auto Reply

1️⃣ NUMBERED MENU
   Customer reply dengan angka (1, 2, 3)
   
2️⃣ KEYWORD MENU
   Customer reply dengan kata (HARGA, ORDER)
   
3️⃣ BUTTON MENU (WA Business API)
   Customer tap tombol langsung
   
4️⃣ LIST MENU (WA Business API)
   Dropdown list dengan opsi

Template Menu Numbered

🏠 SELAMAT DATANG!

Hai! Terima kasih sudah menghubungi [TOKO].

Silakan pilih menu:

1️⃣ Lihat Katalog Produk
2️⃣ Cek Harga
3️⃣ Cara Order
4️⃣ Cek Status Pesanan
5️⃣ Promo & Diskon
6️⃣ Hubungi Admin
0️⃣ Kembali ke Menu Utama

Balas dengan ANGKA pilihanmu! 😊
📦 KATALOG PRODUK

Pilih kategori:

1️⃣ Fashion Pria
2️⃣ Fashion Wanita
3️⃣ Aksesoris
4️⃣ Sepatu
5️⃣ New Arrival
6️⃣ Best Seller

0️⃣ Kembali ke Menu Utama

Balas dengan angka!
💰 CEK HARGA

Pilih cara cek:

1️⃣ Lihat Price List
2️⃣ Cek Harga Produk Tertentu
3️⃣ Harga Grosir/Reseller
4️⃣ Kalkulator Ongkir

0️⃣ Kembali ke Menu Utama

Implementasi Numbered Menu

javascript

// State management untuk track posisi menu
const userMenuState = new Map();

const menus = {
    main: {
        text: `🏠 MENU UTAMA

1️⃣ Katalog Produk
2️⃣ Cek Harga
3️⃣ Cara Order
4️⃣ Status Pesanan
5️⃣ Hubungi Admin
0️⃣ Keluar

Balas dengan angka!`,
        options: {
            '1': 'katalog',
            '2': 'harga',
            '3': 'order',
            '4': 'status',
            '5': 'admin',
            '0': 'exit'
        }
    },
    katalog: {
        text: `📦 KATALOG

1️⃣ Fashion Pria
2️⃣ Fashion Wanita
3️⃣ Aksesoris
0️⃣ Kembali

Pilih kategori!`,
        options: {
            '1': 'katalog_pria',
            '2': 'katalog_wanita',
            '3': 'katalog_aksesoris',
            '0': 'main'
        }
    }
    // ... more menus
};

async function handleMenuNavigation(from, input) {
    const currentState = userMenuState.get(from) || 'main';
    const currentMenu = menus[currentState];
    
    // Check if input is valid option
    const nextState = currentMenu.options[input];
    
    if (nextState) {
        // Handle special actions
        if (nextState === 'admin') {
            return { type: 'escalate', message: 'Menghubungkan ke admin...' };
        }
        if (nextState === 'exit') {
            userMenuState.delete(from);
            return { type: 'exit', message: 'Terima kasih! Chat kapan saja ya 😊' };
        }
        
        // Navigate to next menu
        userMenuState.set(from, nextState);
        return { type: 'menu', message: menus[nextState].text };
    } else {
        // Invalid input
        return { 
            type: 'error', 
            message: 'Pilihan tidak valid. Silakan pilih angka yang tersedia.'
        };
    }
}

Template Menu Keyword

🏠 SELAMAT DATANG!

Silakan ketik keyword:

📦 KATALOG - Lihat produk
💰 HARGA - Cek harga
🛒 ORDER - Cara pesan
📍 TRACK - Lacak pesanan
💬 ADMIN - Chat admin

Atau langsung tanya apa saja! 😊

Advantage Keyword Menu:

✅ Lebih natural
✅ Customer bisa langsung ketik
✅ Tidak perlu hafal nomor
✅ Bisa combine dengan free text

Button Menu (WA Business API)

Send Buttons:

javascript

// Interactive buttons (max 3 buttons)
async function sendButtonMenu(to) {
    await client.sendMessage(to, {
        text: 'Hai! Ada yang bisa dibantu?',
        buttons: [
            { id: 'btn_katalog', body: '📦 Katalog' },
            { id: 'btn_harga', body: '💰 Harga' },
            { id: 'btn_admin', body: '💬 Admin' }
        ]
    });
}

// Handle button response
client.on('message', async (msg) => {
    if (msg.type === 'button_response') {
        const buttonId = msg.selectedButtonId;
        
        switch (buttonId) {
            case 'btn_katalog':
                await sendKatalog(msg.from);
                break;
            case 'btn_harga':
                await sendPriceList(msg.from);
                break;
            case 'btn_admin':
                await escalateToAdmin(msg.from);
                break;
        }
    }
});

List Menu:

javascript

// Interactive list (more options)
async function sendListMenu(to) {
    await client.sendMessage(to, {
        text: 'Pilih kategori produk:',
        buttonText: 'Lihat Kategori',
        sections: [
            {
                title: 'Fashion',
                rows: [
                    { id: 'cat_pria', title: 'Fashion Pria', description: '45 produk' },
                    { id: 'cat_wanita', title: 'Fashion Wanita', description: '62 produk' }
                ]
            },
            {
                title: 'Aksesoris',
                rows: [
                    { id: 'cat_sepatu', title: 'Sepatu', description: '38 produk' },
                    { id: 'cat_tas', title: 'Tas', description: '25 produk' }
                ]
            }
        ]
    });
}

Multi-Level Menu Flow

MAIN MENU
    │
    ├── 1. Katalog
    │       ├── 1.1 Fashion Pria
    │       │       ├── 1.1.1 Kaos
    │       │       ├── 1.1.2 Kemeja
    │       │       └── 1.1.3 Celana
    │       ├── 1.2 Fashion Wanita
    │       └── 1.3 Aksesoris
    │
    ├── 2. Harga
    │       ├── 2.1 Price List
    │       └── 2.2 Kalkulator
    │
    ├── 3. Order
    │       ├── 3.1 Cara Order
    │       └── 3.2 Payment Info
    │
    └── 0. Kembali/Keluar

Best Practices Menu

1. Keep It Simple

❌ TERLALU BANYAK:
12 pilihan di satu menu = Overwhelming

✅ IDEAL:
5-7 pilihan max per level
Group related items

2. Clear Navigation

SELALU SEDIAKAN:
- 0 = Kembali ke menu sebelumnya
- Cara ke menu utama
- Exit option

Customer tidak boleh "stuck"

3. Confirm Selection

User pilih: 1

Bot: "Kamu pilih: Katalog Produk

[Tampilkan sub-menu katalog]

Ketik 0 untuk kembali ke menu utama."

Konfirmasi supaya tidak salah navigasi.

4. Handle Invalid Input

User: "abc"

Bot: "Hmm, pilihan tidak valid.

Silakan pilih angka 1-5 atau ketik 0 untuk kembali.

[Tampilkan menu lagi]"

Jangan diam, kasih guidance!

Timeout & Reset

javascript

// Reset menu state setelah 30 menit inactive
const MENU_TIMEOUT = 30 * 60 * 1000;

function checkMenuTimeout(from) {
    const lastActive = userLastActive.get(from);
    
    if (lastActive && Date.now() - lastActive > MENU_TIMEOUT) {
        userMenuState.delete(from);
        return true; // Timeout, reset ke main
    }
    
    userLastActive.set(from, Date.now());
    return false;
}

FAQ

Berapa level menu yang ideal?

Max 3 level. Lebih dalam = customer frustasi. Kalau butuh lebih, pertimbangkan search/filter.

Numbered atau keyword?

Numbered lebih simple untuk user awam. Keyword lebih flexible. Bisa kombinasi keduanya!

Bagaimana jika user ketik bebas?

Handle dengan fallback: coba parse intent, jika tidak bisa → tampilkan menu lagi atau hubungkan ke admin.


Kesimpulan

Menu = Guide customer journey!

Tanpa MenuDengan Menu
Customer bingungJelas mau apa
Free text parsing hardStructured input
Banyak typoAngka/button simple

Structure your conversation!

Setup Menu Bot →


Artikel Terkait