본문 바로가기
AI

챗봇 만들기 실전 가이드1

by 에버리치60 2025. 11. 8.

챗봇 만들기 실전 가이드

🛠️ 챗봇 만들기 실전 가이드

초보자도 따라할 수 있는 단계별 챗봇 제작 과정

🎯 프로젝트: 카페 주문 챗봇 만들기

실제로 작동하는 나만의 챗봇을 처음부터 끝까지 만들어봅시다!

1준비하기

🎯 우리가 만들 챗봇 소개

프로젝트명: "카페봇(CafeBot)" - 카페 음료 주문을 도와주는 챗봇

주요 기능:

  • 인사하기 및 메뉴 안내
  • 음료 추천하기
  • 주문 받기
  • 주문 확인 및 완료

🖥️ 필요한 것들

  1. 텍스트 에디터: 메모장 또는 VS Code
  2. 웹 브라우저: Chrome, Firefox, Edge 등
  3. 폴더: 바탕화면에 "내챗봇" 폴더 생성
완전 초보자라면? VS Code를 설치하지 않아도 됩니다. 윈도우 메모장으로도 충분히 만들 수 있어요!

2HTML 기본 틀 만들기

📝 첫 번째 코드 작성

메모장이나 VS Code를 열고 다음 코드를 입력하세요.

<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>카페봇 - 주문 도우미</title> </head> <body> <h1>☕ 카페봇에 오신 것을 환영합니다!</h1> </body> </html>
첫 테스트: 파일을 "index.html"로 저장하고 더블클릭해서 브라우저로 열어보세요!
저장 방법: 파일 → 다른 이름으로 저장 → 파일 형식: "모든 파일" → 파일명: "index.html"

3CSS로 채팅 창 디자인하기

🎨 예쁜 채팅 인터페이스 만들기

이제 index.html 파일의 내용을 다음과 같이 수정하세요.

<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>카페봇</title> <style> body { font-family: '맑은 고딕', sans-serif; background: linear-gradient(135deg, #fce7f3 0%, #e0f2fe 100%); margin: 0; padding: 20px; min-height: 100vh; } .chat-container { max-width: 500px; margin: 0 auto; background: white; border-radius: 20px; padding: 20px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); } h2 { text-align: center; color: #be185d; } .chat-messages { height: 400px; overflow-y: auto; padding: 20px; background: #fef9f3; border-radius: 15px; margin-bottom: 20px; } .chat-input { display: flex; gap: 10px; } input { flex: 1; padding: 12px; border: 2px solid #fecdd3; border-radius: 10px; font-size: 1em; } input:focus { outline: none; border-color: #f472b6; } button { padding: 12px 25px; background: linear-gradient(135deg, #f9a8d4, #f472b6); color: white; border: none; border-radius: 10px; cursor: pointer; font-weight: bold; } button:hover { transform: translateY(-2px); } </style> </head> <body> <div class="chat-container"> <h2>☕ 카페봇</h2> <div class="chat-messages" id="chatMessages"></div> <div class="chat-input"> <input type="text" id="userInput" placeholder="메시지를 입력하세요..."> <button onclick="sendMessage()">전송</button> </div> </div> </body> </html>
두 번째 테스트: 파일을 저장하고 브라우저에서 새로고침(F5)하세요. 예쁜 채팅 창이 나타납니다!

4JavaScript로 챗봇 두뇌 만들기

🧠 챗봇이 생각하고 대답하게 만들기

</body> 태그 바로 위에 다음 코드를 추가하세요.

<script> // 1단계: 메뉴 데이터 정의 const menu = { '아메리카노': 4000, '카페라떼': 4500, '카푸치노': 4500, '녹차라떼': 5000 }; // 2단계: 주문 정보 저장 변수 let currentOrder = null; // 3단계: 페이지 로드시 인사 window.onload = function() { addBotMessage("안녕하세요! 카페봇입니다. 무엇을 도와드릴까요?"); addBotMessage("'메뉴'를 입력하시면 메뉴를 보여드립니다!"); }; // 4단계: 메시지 전송 함수 function sendMessage() { const input = document.getElementById('userInput'); const message = input.value.trim(); if (message === '') return; addUserMessage(message); input.value = ''; setTimeout(() => { processMessage(message); }, 500); } // 5단계: 메시지 처리 - 챗봇의 두뇌! function processMessage(message) { const msg = message.toLowerCase(); if (msg.includes('안녕') || msg.includes('hi')) { addBotMessage("안녕하세요! 주문 도와드릴게요 😊"); } else if (msg.includes('메뉴')) { let menuText = "📋 저희 메뉴입니다:\n\n"; for (let item in menu) { menuText += `${item}: ${menu[item]}원\n`; } menuText += "\n어떤 음료를 주문하시겠어요?"; addBotMessage(menuText); } else if (menu[message]) { currentOrder = {item: message, price: menu[message]}; addBotMessage(`${message} 주문하셨습니다. ${menu[message]}원입니다.`); addBotMessage("'주문 확인'을 입력하시면 주문이 완료됩니다!"); } else if (msg.includes('확인') || msg.includes('완료')) { if (currentOrder) { addBotMessage(`✅ 주문이 완료되었습니다!`); addBotMessage(`${currentOrder.item} - ${currentOrder.price}원`); addBotMessage("곧 준비해드리겠습니다. 감사합니다! 😊"); currentOrder = null; } else { addBotMessage("아직 주문하신 음료가 없어요!"); } } else { addBotMessage("잘 이해하지 못했어요. '메뉴'를 입력하시면 메뉴를 보여드립니다!"); } } // 6단계: 사용자 메시지 표시 function addUserMessage(message) { const div = document.createElement('div'); div.style.textAlign = 'right'; div.style.margin = '10px 0'; div.innerHTML = `<span style="display: inline-block; background: linear-gradient(135deg, #f9a8d4, #f472b6); color: white; padding: 10px 15px; border-radius: 18px 18px 5px 18px; max-width: 70%;">${message}</span>`; document.getElementById('chatMessages').appendChild(div); document.getElementById('chatMessages').scrollTop = 999999; } // 7단계: 봇 메시지 표시 function addBotMessage(message) { const div = document.createElement('div'); div.style.margin = '10px 0'; div.innerHTML = `<span style="display: inline-block; background: white; color: #1e293b; padding: 10px 15px; border-radius: 18px 18px 18px 5px; max-width: 70%; border: 2px solid #fecdd3;">${message.replace(/\n/g, '<br>')}</span>`; document.getElementById('chatMessages').appendChild(div); document.getElementById('chatMessages').scrollTop = 999999; } // 8단계: Enter 키로 전송 document.getElementById('userInput').addEventListener('keypress', function(e) { if (e.key === 'Enter') sendMessage(); } ); </script> </body> </html>
세 번째 테스트: 파일을 저장하고 브라우저를 새로고침하세요. 이제 챗봇과 대화할 수 있습니다!
테스트 방법:
1. "메뉴" 입력 → 메뉴 목록 표시
2. "아메리카노" 입력 → 주문 접수
3. "주문 확인" 입력 → 주문 완료!

5추가 기능 넣기

💪 챗봇을 더 똑똑하게 만들기

processMessage 함수에서 else 부분 바로 위에 다음 코드들을 추가하세요.

🎯 추천 기능

else if (msg.includes('추천')) { const recommendations = [ "오늘같은 날엔 시원한 아메리카노가 좋을 것 같아요!", "부드러운 카페라떼는 어떠세요?", "녹차라떼로 건강하게 시작해보세요!" ]; const random = Math.floor(Math.random() * recommendations.length); addBotMessage(recommendations[random]); }

🎯 영업시간 안내

else if (msg.includes('시간') || msg.includes('영업')) { addBotMessage("저희 카페는 매일 오전 9시부터 오후 10시까지 영업합니다! 🕐"); }
완성! 이제 "추천", "영업시간" 같은 다양한 질문에도 답할 수 있어요!

6완성 코드 전체 보기

📄 최종 완성된 전체 코드

처음부터 끝까지 완성된 코드입니다. 복사해서 사용하세요!

<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>카페봇</title> <style> body { font-family: '맑은 고딕', sans-serif; background: linear-gradient(135deg, #fce7f3 0%, #e0f2fe 100%); margin: 0; padding: 20px; min-height: 100vh; } .chat-container { max-width: 500px; margin: 0 auto; background: white; border-radius: 20px; padding: 20px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); } h2 { text-align: center; color: #be185d; } .chat-messages { height: 400px; overflow-y: auto; padding: 20px; background: #fef9f3; border-radius: 15px; margin-bottom: 20px; } .chat-input { display: flex; gap: 10px; } input { flex: 1; padding: 12px; border: 2px solid #fecdd3; border-radius: 10px; font-size: 1em; } input:focus { outline: none; border-color: #f472b6; } button { padding: 12px 25px; background: linear-gradient(135deg, #f9a8d4, #f472b6); color: white; border: none; border-radius: 10px; cursor: pointer; font-weight: bold; } button:hover { transform: translateY(-2px); } </style> </head> <body> <div class="chat-container"> <h2>☕ 카페봇</h2> <div class="chat-messages" id="chatMessages"></div> <div class="chat-input"> <input type="text" id="userInput" placeholder="메시지를 입력하세요..."> <button onclick="sendMessage()">전송</button> </div> </div> <script> const menu = { '아메리카노': 4000, '카페라떼': 4500, '카푸치노': 4500, '녹차라떼': 5000 }; let currentOrder = null; window.onload = function() { addBotMessage("안녕하세요! 카페봇입니다. 무엇을 도와드릴까요?"); addBotMessage("'메뉴'를 입력하시면 메뉴를 보여드립니다!"); }; function sendMessage() { const input = document.getElementById('userInput'); const message = input.value.trim(); if (message === '') return; addUserMessage(message); input.value = ''; setTimeout(() => processMessage(message), 500); } function processMessage(message) { const msg = message.toLowerCase(); if (msg.includes('안녕') || msg.includes('hi')) { addBotMessage("안녕하세요! 주문 도와드릴게요 😊"); } else if (msg.includes('메뉴')) { let menuText = "📋 저희 메뉴입니다:\n\n"; for (let item in menu) { menuText += `${item}: ${menu[item]}원\n`; } menuText += "\n어떤 음료를 주문하시겠어요?"; addBotMessage(menuText); } else if (menu[message]) { currentOrder = {item: message, price: menu[message]}; addBotMessage(`${message} 주문하셨습니다. ${menu[message]}원입니다.`); addBotMessage("'주문 확인'을 입력하시면 주문이 완료됩니다!"); } else if (msg.includes('확인') || msg.includes('완료')) { if (currentOrder) { addBotMessage(`✅ 주문이 완료되었습니다!`); addBotMessage(`${currentOrder.item} - ${currentOrder.price}원`); addBotMessage("곧 준비해드리겠습니다. 감사합니다! 😊"); currentOrder = null; } else { addBotMessage("아직 주문하신 음료가 없어요!"); } } else if (msg.includes('추천')) { const recommendations = [ "오늘같은 날엔 시원한 아메리카노가 좋을 것 같아요!", "부드러운 카페라떼는 어떠세요?", "녹차라떼로 건강하게 시작해보세요!" ]; const random = Math.floor(Math.random() * recommendations.length); addBotMessage(recommendations[random]); } else if (msg.includes('시간') || msg.includes('영업')) { addBotMessage("저희 카페는 매일 오전 9시부터 오후 10시까지 영업합니다! 🕐"); } else { addBotMessage("잘 이해하지 못했어요. '메뉴'를 입력하시면 메뉴를 보여드립니다!"); } } function addUserMessage(message) { const div = document.createElement('div'); div.style.textAlign = 'right'; div.style.margin = '10px 0'; div.innerHTML = `<span style="display: inline-block; background: linear-gradient(135deg, #f9a8d4, #f472b6); color: white; padding: 10px 15px; border-radius: 18px 18px 5px 18px; max-width: 70%;">${message}</span>`; document.getElementById('chatMessages').appendChild(div); document.getElementById('chatMessages').scrollTop = 999999; } function addBotMessage(message) { const div = document.createElement('div'); div.style.margin = '10px 0'; div.innerHTML = `<span style="display: inline-block; background: white; color: #1e293b; padding: 10px 15px; border-radius: 18px 18px 18px 5px; max-width: 70%; border: 2px solid #fecdd3;">${message.replace(/\n/g, '<br>')}</span>`; document.getElementById('chatMessages').appendChild(div); document.getElementById('chatMessages').scrollTop = 999999; } document.getElementById('userInput').addEventListener('keypress', function(e) { if (e.key === 'Enter') sendMessage(); } ); </script> </body> </html>

7테스트하기

✅ 테스트 체크리스트

다음 항목들을 하나씩 테스트해보세요!

  1. ✅ 페이지 열면 자동으로 인사 메시지가 나타나나요?
  2. ✅ "메뉴" 입력하면 메뉴가 표시되나요?
  3. ✅ "아메리카노" 입력하면 주문이 접수되나요?
  4. ✅ "주문 확인" 입력하면 주문이 완료되나요?
  5. ✅ "추천" 입력하면 추천 메시지가 나오나요?
  6. ✅ "영업시간" 입력하면 시간 안내가 나오나요?
  7. ✅ Enter 키로도 메시지 전송이 되나요?
모든 항목이 작동하면 성공! 🎉

8문제 해결

🔧 자주 발생하는 문제

❌ 문제 1: 챗봇이 응답하지 않아요

해결 방법:

  1. F12 키를 눌러서 개발자 도구를 엽니다
  2. Console 탭을 클릭합니다
  3. 빨간색 에러 메시지가 있는지 확인합니다
  4. 코드에 오타가 없는지 다시 확인합니다

❌ 문제 2: 한글이 깨져요

해결 방법:

  1. 파일을 UTF-8 인코딩으로 저장했는지 확인
  2. <meta charset="UTF-8"> 태그가 있는지 확인

❌ 문제 3: 디자인이 이상해요

해결 방법:

  1. CSS 코드가 <style> 태그 안에 있는지 확인
  2. 브라우저 캐시를 삭제하고 새로고침 (Ctrl + F5)
디버깅 팁: console.log()를 사용해서 변수 값을 확인해보세요!
예: console.log("메시지:", message);

9더 발전시키기

🚀 추가 기능 아이디어

⭐ 초급 과제

  • 메뉴 추가: 디저트나 다른 음료 추가하기
  • 이모지 추가: 메뉴 이름 앞에 ☕ 🥛 등 이모지 넣기
  • 색상 변경: 좋아하는 색으로 디자인 바꾸기

⭐⭐ 중급 과제

  • 취소 기능: "취소" 입력하면 주문 취소
  • 수량 선택: "아메리카노 2개" 같은 기능
  • 총액 계산: 여러 개 주문하고 합계 표시

⭐⭐⭐ 고급 과제

  • 시간 표시: 메시지마다 시간 표시
  • 사용자 이름: 이름을 입력받아서 "○○님" 호칭
  • 주문 내역: 모든 주문을 기록하고 보여주기

10다음 단계 학습

📚 계속 배우기

🎓 다음에 배울 것들:

  • 1단계: JavaScript 심화 (배열, 객체, 함수)
  • 2단계: 서버 통신 (API, AJAX)
  • 3단계: 데이터베이스 (Firebase)
  • 4단계: AI 연동 (ChatGPT API)

📖 추천 학습 자료:

  • 생활코딩: 무료 웹 개발 기초 강의
  • MDN Web Docs: developer.mozilla.org
  • 노마드코더: 실전 프로젝트 강의
학습 팁: 매일 30분씩 꾸준히 연습하는 것이 가장 효과적입니다!

🎉 축하합니다!

첫 번째 챗봇 제작 완료!

이제 여러분은 챗봇을 만들 수 있는 개발자입니다! 🚀

📌 배운 내용 요약

  • ✅ HTML로 구조 만들기
  • ✅ CSS로 예쁘게 꾸미기
  • ✅ JavaScript로 기능 구현하기
  • ✅ 사용자 입력 처리하기
  • ✅ 조건문으로 대화 만들기

계속 연습하고 개선하면서 더 멋진 챗봇을 만들어보세요! 💪