1. 쉽고 빠른 FAQ 챗봇 만들기 PHP MariaDB 조합 완벽 가이드
2. 챗봇만들기 : 화면 설계
3. 챗봇만들기 : 백앤드 설계
4. 챗봇만들기 : 테스트
복잡한 FAQ는 이제 그만! PHP MariaDB로 나만의 스마트 챗봇 만들기
안녕하세요! 웹 개발에 관심 있는 분들이라면 한 번쯤 자주 묻는 질문(FAQ) 페이지 관리의 어려움을 느껴보셨을 거예요. 내용이 늘어날수록 페이지는 길어지고, 원하는 정보를 찾기 힘들어지는 불편함이 있었죠.
저도 이런 고민 끝에 요즘 대세인 챗봇을 활용해 FAQ를 관리하면 어떨까? 하는 아이디어를 떠올렸습니다. 사용자가 직접 질문을 입력하면 챗봇이 바로 답을 찾아주는 방식이라면 훨씬 편리할 테니까요!
처음에는 간단한 규칙 기반 챗봇부터 시작해서, 나중에는 좀 더 똑똑하게 질문을 이해하고 답변하는 챗봇으로 발전시킬 계획을 세웠습니다.
왜 챗봇으로 FAQ를 만드나요?
기존 FAQ 페이지는 모든 내용을 사용자가 직접 스크롤하며 찾아야 하는 불편함이 있어요. 하지만 챗봇은 사용자가 궁금한 점을 직접 입력하면, 그에 맞는 답변을 바로 보여주죠. 이런 방식은 사용자 경험을 훨씬 좋게 만들고, 필요한 정보를 빠르게 제공할 수 있다는 장점이 있습니다.
특히 저처럼 자주 업데이트되는 질문들을 관리해야 할 때, 챗봇은 정말 유용합니다. 따로 복잡한 페이지를 수정할 필요 없이 챗봇의 '지식'만 업데이트하면 되니, 관리도 훨씬 쉬워지겠죠?
저의 챗봇 개발 환경은 이랬어요!
이번 챗봇을 개발하면서 다음과 같은 환경을 사용했습니다.
이 조합은 웹 개발에서 많이 쓰이는 안정적이고 강력한 환경이라, 저처럼 처음 챗봇을 만드는 분들께도 추천드리고 싶어요.
챗봇 개발, 이렇게 진행했어요!
챗봇을 만드는 과정은 크게 몇 단계로 나눌 수 있었어요.
1. 첫 단추, 화면 설계!
가장 먼저 챗봇이 어떻게 보일지 디자인했습니다. Bootstrap 5를 활용해서 메시지 입력창, 전송 버튼, 그리고 챗봇과 제가 주고받는 대화가 표시될 공간을 만들었죠. 예쁘고 직관적인 인터페이스를 만드는 게 중요하다고 생각했어요.
2. 사용자 입력 전송!
사용자가 메시지를 입력하고 전송 버튼을 누르면, 그 내용이 백엔드로 잘 전달되어야겠죠? 자바스크립트(JavaScript)의 AJAX 기능을 활용해서 제가 입력한 메시지를 PHP 백엔드로 비동기적으로 전송하도록 구현했습니다. 페이지 전체를 새로고침 하지 않고도 실시간으로 대화가 가능해진 거죠.
3. 백엔드와 데이터베이스의 만남!
가장 중요한 부분 중 하나가 바로 백엔드(PHP)에서 사용자의 메시지를 받아 데이터베이스(MariaDB)와 연동하는 과정이었습니다.
PHP는 사용자 메시지를 받으면, MariaDB에 미리 저장해둔 챗봇 응답 데이터베이스를 검색했어요. 이때, 제가 입력한 메시지에 해당하는 키워드가 데이터베이스에 있는지 확인하고, 있다면 그에 맞는 답변을 불러오도록 코드를 작성했습니다.
예를 들어, 제가 "안녕"이라고 입력하면 PHP는 DB에서 "안녕"이라는 키워드를 찾아 "안녕하세요! 무엇을 도와드릴까요?"라는 답변을 다시 제 화면으로 보내주는 식이죠. 만약 데이터베이스에 없는 질문이라면, "죄송합니다. 아직 답변을 알 수 없습니다."와 같은 기본 응답을 보내도록 처리했습니다.
4. 데이터베이스 설계와 샘플 데이터 추가!
챗봇이 똑똑하게 답변하려면 당연히 '지식'이 필요하겠죠? 그래서 MariaDB에 chatbot_responses라는 테이블을 만들고, keyword와 response_text 컬럼을 설계했어요.
CREATE TABLE `chatbot_responses` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `keyword` VARCHAR(255) NOT NULL, `response_text` TEXT NOT NULL, -- ... 다른 컬럼 (created_at, updated_at) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
그리고 여기에 "안녕", "시간", "도움" 같은 키워드와 그에 해당하는 답변들을 샘플 데이터로 직접 입력했습니다. "시간" 같은 키워드는 [CURRENT_TIME] 같은 특별한 표시를 넣어 PHP에서 현재 시간을 동적으로 넣어주도록 처리했죠.
5. 가장 큰 난관, 언어셋 문제와 피드백!
개발 과정 중에 가장 애를 먹었던 부분은 바로 언어셋(인코딩) 문제였습니다. MariaDB에 한글 데이터를 삽입할 때 Incorrect string value라는 오류가 발생하기도 했고, PHP에서 DB 데이터를 불러와 비교할 때 한글이 제대로 인식되지 않는 경우도 있었어요.
하지만 다행히 데이터베이스, 테이블, 그리고 컬럼의 문자셋을 utf8mb4로 통일하고, PHP에서 DB 연결 시 $conn->set_charset("utf8mb4");를 명시적으로 설정해주는 것으로 문제를 해결할 수 있었습니다. 특히 mb_stripos 함수를 사용하여 대소문자 구분 없이 한글 키워드를 검색하도록 한 것도 큰 도움이 되었죠.
이런 문제들을 하나하나 해결하면서 챗봇이 제가 원하는 대로 작동하는 것을 보니 정말 뿌듯했습니다! 처음에는 잘 안돼서 답답했지만, 문제 해결 과정 자체가 큰 배움이 되었어요.
마치며
처음에는 작은 아이디어에서 시작했지만, 직접 챗봇을 개발하면서 웹 서비스의 기본적인 동작 원리와 데이터베이스 연동의 중요성을 다시 한번 깨달을 수 있었습니다. 아직은 간단한 규칙 기반 챗봇이지만, 앞으로 더 많은 데이터를 쌓고 기능을 추가해서 더욱 스마트한 챗봇으로 발전시켜 나갈 생각이에요.
여러분도 혹시 복잡한 FAQ 관리나 간단한 자동 응답 시스템이 필요하다면, 저처럼 직접 챗봇 개발에 도전해보시는 건 어떨까요? 이번 경험이 여러분께 도움이 되기를 바랍니다!
궁금한 점이 있다면 언제든지 댓글로 남겨주세요. 다음에는 더 유익한 개발 이야기로 찾아오겠습니다!