Bot WA AI untuk Education

Panduan bot AI WhatsApp untuk pendidikan. Tutor, quiz, enrollment, parent communication. Tutorial lengkap!

Bot WA AI untuk Education
Bot WA AI untuk Education

Education + AI Bot = Learning assistant 24/7!

Bot AI untuk pendidikan bisa jadi tutor personal, quiz master, admin enrollment, dan communication bridge antara sekolah dan orang tua.


Use Cases Education

📚 USE CASES:

SEKOLAH/UNIVERSITAS:
- Info pendaftaran
- Jadwal kelas
- Pengumuman
- Komunikasi ortu-guru

BIMBEL/KURSUS:
- Enrollment
- Jadwal les
- Progress report
- Payment reminder

ONLINE COURSE:
- Course info
- Quiz & assessment
- Certificate
- Support

TUTOR PERSONAL:
- Homework help
- Concept explanation
- Practice questions
- Study planning

System Prompt Education

javascript

const EDUCATION_PROMPT = `Kamu adalah Edu, AI assistant untuk [LEMBAGA PENDIDIKAN].

PERAN:
- Membantu siswa belajar dan memahami materi
- Menjawab pertanyaan akademik
- Memberikan latihan soal
- Info administrasi sekolah

MATA PELAJARAN:
- Matematika (SD-SMA)
- IPA/Sains
- Bahasa Indonesia
- Bahasa Inggris
- IPS

GAYA MENGAJAR:
- Sabar dan encouraging
- Jelaskan step-by-step
- Gunakan analogi sederhana
- Berikan contoh konkret
- Praise effort, not just results

ATURAN:
1. Jangan langsung kasih jawaban PR
2. Guide siswa untuk menemukan jawaban sendiri
3. Breakdown masalah jadi langkah kecil
4. Jika salah, jelaskan dimana salahnya dengan baik
5. Sesuaikan level penjelasan dengan usia siswa

FORMAT PENJELASAN:
1. Pahami dulu pertanyaan siswa
2. Tanya level/kelas jika perlu
3. Jelaskan konsep dasar
4. Berikan contoh
5. Beri latihan untuk konfirmasi pemahaman

CONTOH YANG BAIK:
"Coba kita breakdown dulu ya! 
Langkah 1: [penjelasan]
Sekarang coba kamu kerjakan langkah 1, hasilnya berapa?"

HINDARI:
"Jawabannya adalah 42." (tanpa penjelasan)`;

AI Tutor Implementation

javascript

async function handleTutoringSession(userId, message, context) {
    const studentProfile = await getStudentProfile(userId);
    
    const tutorPrompt = `${EDUCATION_PROMPT}

PROFIL SISWA:
- Nama: ${studentProfile.name}
- Kelas: ${studentProfile.grade}
- Mata pelajaran favorit: ${studentProfile.favorites}
- Area yang perlu ditingkatkan: ${studentProfile.weakAreas}

SESI SEBELUMNYA:
${context.previousTopics?.join(', ') || 'Sesi pertama'}`;

    const response = await openai.chat.completions.create({
        model: 'gpt-4o',
        messages: [
            { role: 'system', content: tutorPrompt },
            ...context.conversationHistory,
            { role: 'user', content: message }
        ]
    });
    
    const aiResponse = response.choices[0].message.content;
    
    // Track learning progress
    await trackLearningActivity(userId, {
        topic: detectTopic(message),
        interaction: message,
        response: aiResponse,
        timestamp: new Date()
    });
    
    return aiResponse;
}

// Detect topic from message
function detectTopic(message) {
    const topics = {
        matematika: ['hitung', 'angka', 'rumus', 'persamaan', 'geometri', 'aljabar'],
        fisika: ['gaya', 'gerak', 'energi', 'listrik', 'newton'],
        kimia: ['unsur', 'senyawa', 'reaksi', 'atom', 'molekul'],
        biologi: ['sel', 'organ', 'makhluk hidup', 'fotosintesis'],
        bahasa: ['grammar', 'vocab', 'tenses', 'kalimat']
    };
    
    const lowerMessage = message.toLowerCase();
    
    for (const [topic, keywords] of Object.entries(topics)) {
        if (keywords.some(k => lowerMessage.includes(k))) {
            return topic;
        }
    }
    
    return 'umum';
}

Interactive Quiz

javascript

async function startQuiz(userId, subject, level) {
    const questions = await generateQuizQuestions(subject, level, 5);
    
    // Store quiz session
    await db.quizSessions.insertOne({
        oderId
oderId
userId,
        subject,
        level,
        questions,
        currentQuestion: 0,
        answers: [],
        score: 0,
        startedAt: new Date()
    });
    
    return formatQuizQuestion(questions[0], 1, questions.length);
}

async function generateQuizQuestions(subject, level, count) {
    const prompt = `Generate ${count} multiple choice questions for ${subject}, level ${level}.

Format JSON:
[
  {
    "question": "pertanyaan",
    "options": ["A. opsi1", "B. opsi2", "C. opsi3", "D. opsi4"],
    "correct": "A",
    "explanation": "penjelasan jawaban"
  }
]

Buat soal yang sesuai kurikulum Indonesia untuk level ${level}.`;

    const response = await openai.chat.completions.create({
        model: 'gpt-4o',
        messages: [{ role: 'user', content: prompt }],
        response_format: { type: 'json_object' }
    });
    
    return JSON.parse(response.choices[0].message.content);
}

function formatQuizQuestion(question, number, total) {
    return `📝 QUIZ - Soal ${number}/${total}

${question.question}

${question.options.join('\n')}

Ketik huruf jawabanmu (A/B/C/D)!`;
}

async function handleQuizAnswer(userId, answer) {
    const session = await db.quizSessions.findOne({
        oderId
oderId
userId,
        completedAt: { $exists: false }
    });
    
    if (!session) {
        return 'Tidak ada quiz aktif. Ketik QUIZ untuk mulai!';
    }
    
    const currentQ = session.questions[session.currentQuestion];
    const isCorrect = answer.toUpperCase() === currentQ.correct;
    
    // Record answer
    session.answers.push({
        question: session.currentQuestion,
        answer: answer.toUpperCase(),
        correct: isCorrect
    });
    
    if (isCorrect) {
        session.score++;
    }
    
    let response = isCorrect 
        ? `✅ BENAR! Hebat!\n\n`
        : `❌ Kurang tepat. Jawaban yang benar: ${currentQ.correct}\n\n`;
    
    response += `💡 Penjelasan:\n${currentQ.explanation}\n\n`;
    
    // Check if quiz completed
    if (session.currentQuestion + 1 >= session.questions.length) {
        // Quiz completed
        session.completedAt = new Date();
        await db.quizSessions.updateOne(
            { _id: session._id },
            { $set: session }
        );
        
        const percentage = (session.score / session.questions.length * 100).toFixed(0);
        
        response += `━━━━━━━━━━━━━━━━━━━━
🎉 QUIZ SELESAI!

📊 Skor: ${session.score}/${session.questions.length} (${percentage}%)
${getScoreEmoji(percentage)}

${getScoreFeedback(percentage)}

Mau quiz lagi? Ketik QUIZ [mata pelajaran]!`;
        
    } else {
        // Next question
        session.currentQuestion++;
        await db.quizSessions.updateOne(
            { _id: session._id },
            { $set: session }
        );
        
        const nextQ = session.questions[session.currentQuestion];
        response += `━━━━━━━━━━━━━━━━━━━━\n\n`;
        response += formatQuizQuestion(
            nextQ, 
            session.currentQuestion + 1, 
            session.questions.length
        );
    }
    
    return response;
}

function getScoreEmoji(percentage) {
    if (percentage >= 90) return '🏆 EXCELLENT!';
    if (percentage >= 70) return '⭐ GREAT JOB!';
    if (percentage >= 50) return '👍 GOOD EFFORT!';
    return '💪 KEEP PRACTICING!';
}

School Admin Features

javascript

// Enrollment inquiry
async function handleEnrollmentInquiry(message) {
    return `📚 PENDAFTARAN SISWA BARU

Tahun Ajaran 2026/2027

📋 Persyaratan:
- Fotocopy Akta Kelahiran
- Fotocopy KK
- Pas foto 3x4 (4 lembar)
- Rapor terakhir
- SKHUN/Ijazah (jika ada)

📅 Jadwal Pendaftaran:
- Gelombang 1: 1-31 Maret 2026
- Gelombang 2: 1-30 April 2026
- Gelombang 3: 1-31 Mei 2026

💰 Biaya Pendaftaran: Rp 500.000

📍 Daftar langsung di sekolah atau
   klik link: [LINK PENDAFTARAN]

Ada pertanyaan lain tentang pendaftaran?`;
}

// Schedule inquiry
async function getClassSchedule(userId, day) {
    const student = await getStudentByPhone(userId);
    
    if (!student) {
        return 'Maaf, nomor ini belum terdaftar sebagai siswa. Hubungi admin sekolah untuk info lebih lanjut.';
    }
    
    const schedule = await db.schedules.findOne({
        classId: student.classId,
        day: day
    });
    
    let response = `📅 JADWAL ${day.toUpperCase()}\n`;
    response += `Kelas: ${student.className}\n\n`;
    
    schedule.lessons.forEach((lesson, i) => {
        response += `${lesson.time} - ${lesson.subject}\n`;
        response += `👨‍🏫 ${lesson.teacher}\n\n`;
    });
    
    return response;
}

// Parent notification
async function sendParentNotification(studentId, type, data) {
    const student = await db.students.findOne({ id: studentId });
    const parent = await db.parents.findOne({ oderId
oderId
userId: student.parentId });
    
    const templates = {
        absence: `⚠️ PEMBERITAHUAN KEHADIRAN

Yth. Orang Tua/Wali ${student.name},

Kami informasikan bahwa ${student.name} tidak hadir di sekolah hari ini (${formatDate(new Date())}).

Mohon konfirmasi alasan ketidakhadiran.
Reply: SAKIT / IZIN / [alasan lain]

Terima kasih.
${school.name}`,

        grade: `📊 LAPORAN NILAI

Yth. Orang Tua/Wali ${student.name},

Berikut nilai ${data.subject} ${student.name}:

📝 ${data.examType}: ${data.score}
📈 Rata-rata kelas: ${data.classAverage}
🏆 Ranking: ${data.rank}

${data.score >= 75 ? '✅ Nilai di atas KKM' : '⚠️ Perlu perhatian lebih'}

Guru: ${data.teacher}`,

        event: `📢 PENGUMUMAN SEKOLAH

Yth. Orang Tua/Wali,

${data.title}

📅 Tanggal: ${data.date}
⏰ Waktu: ${data.time}
📍 Tempat: ${data.location}

${data.description}

Mohon konfirmasi kehadiran.
Reply: HADIR / TIDAK HADIR

Terima kasih.`
    };
    
    await sendWhatsApp(parent.phone, templates[type]);
}

Homework Help (Guided)

javascript

async function handleHomeworkHelp(userId, message) {
    const guidedPrompt = `Kamu adalah tutor yang membantu siswa mengerjakan PR.

ATURAN PENTING:
1. JANGAN langsung berikan jawaban
2. Guide siswa step-by-step
3. Tanya pemahaman mereka dulu
4. Berikan hints, bukan jawaban
5. Biarkan mereka menemukan sendiri

CONTOH DIALOG:
Siswa: "Kak, 2x + 5 = 13, x nya berapa?"

SALAH ❌: "x = 4"

BENAR ✅: "Oke, kita selesaikan bareng ya!
Langkah 1: Pindahkan angka 5 ke kanan
2x = 13 - 5
2x = ?

Coba hitung dulu, 13 - 5 berapa?"

Setelah siswa jawab benar, baru lanjut ke langkah berikutnya.`;

    const response = await openai.chat.completions.create({
        model: 'gpt-4o',
        messages: [
            { role: 'system', content: guidedPrompt },
            { role: 'user', content: message }
        ]
    });
    
    return response.choices[0].message.content;
}

Conversation Example

👤: Kak, aku ga ngerti pecahan

🤖: Hai! Pecahan ya? Oke, aku bantu! 😊

Kamu kelas berapa? Dan bagian pecahan 
yang mana yang belum ngerti?

1️⃣ Apa itu pecahan
2️⃣ Penjumlahan pecahan
3️⃣ Pengurangan pecahan
4️⃣ Perkalian pecahan
5️⃣ Pembagian pecahan

Ketik angkanya atau ceritakan langsung!

---

👤: Penjumlahan, kelas 5

🤖: Oke, penjumlahan pecahan kelas 5! 📚

Sebelum kita mulai, aku mau tanya dulu:

Kalau ada pecahan 1/2 dan 1/2
Dijumlahkan jadi berapa?

🍕 Bayangkan pizza dipotong 2.
   Kamu dapat 1 potong, temanmu 1 potong.
   Totalnya berapa bagian?

Coba jawab dulu ya!

---

👤: 2/2?

🤖: BENAR! Hebat! 🎉

1/2 + 1/2 = 2/2 = 1 (satu utuh!)

Nah, itu karena PENYEBUTNYA SAMA (2).
Kalau penyebut sama, tinggal tambah 
pembilangnya aja!

Sekarang yang lebih challenging:

1/2 + 1/4 = ?

🍕 Pizza dipotong 2 vs dipotong 4
   Penyebutnya BEDA!
   
Menurut kamu, gimana caranya?

Hint: Kita perlu samakan penyebutnya dulu!

---

👤: Hmm gatau kak

🤖: Gapapa, aku jelaskan step by step ya! 💪

LANGKAH 1: Samakan penyebut
- 1/2 → penyebutnya 2
- 1/4 → penyebutnya 4

Kita cari angka yang bisa dibagi 2 DAN 4.
Itu namanya KPK!

KPK dari 2 dan 4 = 4 ✅

LANGKAH 2: Ubah pecahan
- 1/2 = ?/4

Kalau penyebut dikali 2 (dari 2 jadi 4),
pembilang juga dikali 2!

1 × 2 = 2
Jadi 1/2 = 2/4

LANGKAH 3: Sekarang tinggal tambah!
2/4 + 1/4 = ?

Coba hitung, berapa hasilnya? 😊

---

👤: 3/4!

🤖: PERFECT! 🎉🎉🎉

1/2 + 1/4 = 2/4 + 1/4 = 3/4 ✅

Kamu sudah paham konsepnya!

📝 RINGKASAN:
1. Samakan penyebut (cari KPK)
2. Ubah pembilang sesuai
3. Jumlahkan pembilangnya
4. Penyebut tetap

Mau latihan soal lagi? Ketik LATIHAN!
Atau ada yang mau ditanya lagi? 📚

Best Practices

DO ✅

- Guide, don't give answers
- Encourage & praise effort
- Adapt to student level
- Use examples & analogies
- Track learning progress
- Communicate with parents

DON'T ❌

- Give direct answers
- Discourage questions
- One-size-fits-all
- Abstract explanations only
- No progress tracking
- Ignore parent communication

FAQ

Bot bisa gantikan guru?

Tidak. Bot adalah supplement, bukan replacement. Guru tetap essential.

Sampai level apa bisa bantu?

SD-SMA dengan baik. Untuk universitas, tergantung kompleksitas.


Kesimpulan

Education Bot = Learning companion 24/7!

Without BotWith AI Bot
Limited hours24/7 help
Wait for teacherInstant guidance
One pacePersonalized

Build Education Bot →


Artikel Terkait