Hướng dẫn: Tạo chatbot xin nghỉ phép bằng node AI Agent của n8n (từng bước, có ví dụ)
Tháng trước mình làm cho phòng nhân sự công ty một chatbot xin nghỉ phép bằng n8n. Nhân viên chỉ cần nhắn kiểu "mai em xin nghỉ ốm 1 ngày", bot sẽ hỏi thêm thông tin còn thiếu, kiểm tra số ngày phép còn lại, ghi đơn vào Google Sheet và gửi email báo quản lý. Bài này hướng dẫn lại từng bước để mọi người làm theo được, kể cả khi chưa từng dùng n8n. KẾT QUẢ CUỐI CÙNG TRÔNG NHƯ THẾ NÀO Nhân viên: Mai em xin nghỉ phép nhé Bot: Bạn cho mình xin mã nhân viên để kiểm tra số ngày phép còn lại nhé. Nhân viên: NV015 Bot: Bạn Nguyễn Văn A còn 7 ngày phép năm. Bạn nghỉ cả ngày 16/10 hay chỉ nửa ngày? Lý do nghỉ là gì? Nhân viên: Cả ngày, việc gia đình Bot: Mình tóm tắt lại: nghỉ phép năm 1 ngày (16/10), lý do việc gia đình. Bạn xác nhận gửi đơn nhé? Nhân viên: Ok Bot: Đã ghi đơn và gửi email cho quản lý của bạn. Bạn sẽ nhận phản hồi trong ngày. TỔNG QUAN WORKFLOW Workflow chỉ có 1 luồng chính, gồm: 1. Chat Trigger: nhận tin nhắn từ khung chat. 2. AI Agent: "bộ não", quyết định hỏi gì và khi nào gọi công cụ. Gắn vào AI Agent có 3 loại node con: 3. Chat Model: model ngôn ngữ (OpenAI, Anthropic, Gemini... tuỳ bạn có tài khoản nào). 4. Simple Memory: giúp bot nhớ những gì nhân viên đã nói trong cuộc trò chuyện. 5. Các Tool: công cụ mà agent được phép dùng: - Google Sheets Tool "tracuungayphep": đọc số ngày phép còn lại - Google Sheets Tool "ghidonnghi": ghi đơn mới - Gmail Tool "guiemailquanly": báo cho quản lý CHUẨN BỊ - n8n (bản cloud hoặc tự cài đều được, nên dùng bản mới). - API key của một nhà cung cấp LLM. - Một file Google Sheet gồm 2 trang: Trang "NhanVien" với các cột: manv | hoten | email | emailquanly | phepconlai Trang "DonNghi" với các cột: thoigiantao | manv | hoten | loainghi | tungay | denngay | songay | lydo | trangthai - Kết nối (credential) Google Sheets và Gmail trong n8n. BƯỚC 1: THÊM CHAT TRIGGER - Tạo workflow mới, thêm node "Chat Trigger" (hiện trong danh sách với tên "When chat message received"). - Bật "Make Chat Publicly Available" nếu muốn gửi link cho nhân viên dùng. Chọn chế độ "Hosted Chat" để n8n tạo sẵn trang chat, hoặc "Embedded Chat" nếu muốn nhúng vào website nội bộ. - Ở phần "Initial Message(s)" ghi lời chào, ví dụ: "Chào bạn 👋 Mình là trợ lý nghỉ phép. Bạn muốn xin nghỉ ngày nào?" - Nên bật xác thực (Authentication) nếu bot dùng cho nội bộ, tránh người ngoài vào gửi đơn. BƯỚC 2: THÊM NODE AI AGENT - Nối node "AI Agent" ngay sau Chat Trigger. - Phần nguồn prompt để mặc định: lấy tin nhắn từ Chat Trigger đã kết nối. - Mở "Options" "System Message". Đây là phần quan trọng nhất, quyết định bot cư xử thế nào. Mẫu của mình: --- Bạn là trợ lý xin nghỉ phép của phòng Nhân sự công ty ABC. Hôm nay là {{ $now.format('dd/MM/yyyy') }} ({{ $now.setLocale('vi').format('cccc') }}). Nhiệm vụ: giúp nhân viên tạo đơn xin nghỉ. Trả lời ngắn gọn, thân thiện, bằng tiếng Việt. Quy trình bắt buộc: 1. Hỏi mã nhân viên nếu chưa có, sau đó dùng công cụ tracuungayphep để lấy họ tên và số ngày phép còn lại. 2. Thu thập đủ: loại nghỉ (phép năm / nghỉ…