Hỗ trợ khách hàng tự động với n8n, Slack, Linear và AI

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách xây dựng một quy trình hỗ trợ khách hàng đơn giản với n8n, giúp chuyển các thao tác tạo ticket slack hỗ trợ thủ công sang AI. Đến cuối bài viết, bạn sẽ học được cách tiết kiệm thời gian và công sức bằng cách sử dụng các nút AI Nâng cao mạnh mẽ của n8n để tăng cường ChatOps của bạn.

Điều kiện tiên quyết
- Phiên bản n8n được lưu trữ trên đám mây hoặc tự lưu trữ.
Cách dễ nhất để đăng ký tài khoản n8n là sử dụng phiên bản đám mây của n8n. Mẫu workflow trong bài viết này có thể được nhập khẩu mà không cần phải xây dựng lại các bước. - Tài khoản OpenAI và API key.
Để có tài khoản OpenAI, bạn đăng ký tại đây. Sau khi đã có, tạo Credentials OpenAI qua tab credentials. - Ứng dụng Slack và Token truy cập Oauth. Hướng dẫn cài đặt nút Slack có thể tìm thấy tại đây. Bạn cũng cần đặt các phạm vi sau cho token:
- Phiên bản Linear và API Key. Hướng dẫn thiết lập nút Linear có thể tìm thấy tại đây.
channels:history, channels:read, chat:write, groups:history, groups:read, im:history, im:read, mpim:history, mpim:read, reactions:read, reactions:write, search:read, users:read, users:read.email
Bước 1. Tạo một kênh khách hàng trong Slack
Hệ thống hỗ trợ mà chúng ta sẽ xây dựng hoạt động bằng cách sử dụng Slack như giao diện chính để khách hàng gửi yêu cầu hỗ trợ. Khách hàng sẽ đăng bài trực tiếp trong kênh để nhân viên hỗ trợ có thể can thiệp ngay. Mỗi yêu cầu sẽ yêu cầu một ticket để theo dõi và có thể được chuyển lên nhân viên kỹ thuật nếu cần.
Một kênh Slack dành cho hỗ trợ khách hàng có thể phù hợp hơn email vì các yêu cầu khẩn cấp có thể được xác nhận nhanh chóng, nhưng việc chuyển đổi thông tin sang công cụ theo dõi vấn đề có thể gây overhead – tác giả ticket cần nghĩ ra tiêu đề và mô tả ngắn gọn nhưng rõ ràng, xác định và diễn đạt lại các bước tái tạo lỗi nếu người dùng đề cập v.v. Với n8n, chúng ta có thể giải quyết phần này của quy trình bằng AI!
- Tạo một kênh Slack mới hoặc sử dụng kênh hiện có, đảm bảo ứng dụng Slack của bạn đã được cài đặt và có quyền truy cập vào kênh đã chọn. Điều này cho phép n8n tương tác với các tin nhắn trong workflow của chúng ta. Trong hướng dẫn này, chúng ta sẽ gọi kênh của mình là #n8n-tickets.

Bước 2. Thiết lập Trigger theo lịch trình và nút Slack để lấy các tin nhắn mới nhất
Không phải tất cả các tin nhắn trong kênh khách hàng (#n8n-tickets) đều là ticket, do đó chúng ta muốn chọn lọc các tin nhắn nào sẽ được gửi đến Linear. Chúng ta làm điều này bằng cách sử dụng Phản ứng trong Slack để xác định các yêu cầu hợp lệ của khách hàng – cụ thể, mỗi tin nhắn có phản ứng 🎫 (vé) sẽ giúp xác định các tin nhắn cần lấy.
- Để giám sát kênh khách hàng, thiết lập một kích hoạt theo lịch trình cho khoảng thời gian phù hợp với nhóm của bạn – trong ví dụ của chúng ta, sẽ đặt khoảng 5 phút.
- Tiếp theo, thêm một node Slack vào trigger này để thực hiện thao tác tìm kiếm tin nhắn với bộ lọc sau: “in:#n8n-tickets has::ticket:”. Cài đặt sắp xếp theo mới nhất và giới hạn tối đa là 10, tuy nhiên bạn có thể thay đổi tùy theo tần suất các yêu cầu.
Bước 3. Lọc ra các tin nhắn đã có vé vấn đề được gán
Chúng ta sẽ sử dụng Linear.app làm công cụ theo dõi vấn đề trong hướng dẫn này, nhưng quy trình này có thể hoạt động với bất kỳ hệ thống quản lý dự án nào được hỗ trợ bởi n8n như JIRA.
Để tránh trùng lặp các vé, chúng ta sẽ cần một phương pháp để theo dõi tin nhắn nào đã được xử lý trong các cuộc gọi trước đó. Phương pháp được lựa chọn trong hướng dẫn này là ghi ID tin nhắn Slack trong chính vé. Sau đó, chúng ta có thể truy xuất các vé mới nhất từ dự án Linear của mình để tìm mã phù hợp và khi tìm thấy, có thể bỏ qua tin nhắn đó.
- Tạo một node Linear để thực hiện thao tác Get Many cho tài nguyên Issue và đặt giới hạn là 50. Điều này sẽ lấy 50 vé mới nhất.
- Tiếp theo, sử dụng node Aggregate để thu thập tất cả mô tả của các vé – đây chính là nơi lưu trữ các ID Tin nhắn Slack.
- Cuối cùng, dùng một node IF để kiểm tra sự tồn tại của ID Tin nhắn Slack hiện tại trong lô vé hiện tại. Kiểm tra này sẽ xác định xem có cần tạo vé mới hay không.
Bước 4. Tạo mẫu vấn đề mới tự động bằng AI
Bây giờ là phần thú vị! Dựa trên yêu cầu của khách hàng, chúng ta có thể hướng dẫn AI tổng hợp và paraphrase để tạo ra tiêu đề ngắn gọn và mô tả cho vấn đề. Không chỉ vậy, chúng ta còn có thể sử dụng AI để sinh ra các bước gỡ lỗi hoặc giải pháp thử nghiệm nếu câu hỏi mang tính tổng quát hoặc kết nối với hệ thống bên trong để lấy tài liệu phù hợp trong các tình huống phù hợp. Có rất nhiều ý tưởng để thử, nhưng trong hướng dẫn này, chúng ta sẽ giữ nó đơn giản và để AI sinh ra một vấn đề tiêu chuẩn. Ngoài ra, chúng ta cũng sẽ hướng dẫn AI xác định mức độ khẩn cấp của yêu cầu khách hàng và gán nhãn ưu tiên phù hợp cho vấn đề.
- Tạo một Nút Chuỗi LLM Cơ bản với hướng dẫn sau:
- Thông điệp khách hàng: “{{ $(‘Get Values’).item.json.message }}”
Bạn sẽ hoàn thành 4 nhiệm vụ sau:
1. Tạo tiêu đề dành cho yêu cầu hỗ trợ dựa trên vấn đề của người dùng. Nêu rõ nhưng không dùng quá 10 từ.
2. Tóm tắt vấn đề của người dùng bằng cách xác định các kỳ vọng chính và các bước đã thực hiện để đạt đến kết luận.
3. Đưa ra tối đa 3 đề xuất để debug hoặc giải quyết vấn đề của người dùng. bỏ qua các vấn đề trước đó cho nhiệm vụ này.
4. Xác định mức độ khẩn cấp của vấn đề của người dùng và chỉ định mức độ ưu tiên là “thấp”, “trung bình”, “cao” hoặc “khẩn cấp”. Nếu bạn không thể xác định mức độ khẩn cấp, hãy gán “thấp”. Ngoài ra, các yêu cầu cần hành động trong hôm nay hoặc ngày mai nên được ưu tiên là “cao”. - Đảm bảo “Yêu cầu Định dạng Đầu ra Cụ thể” được chọn
- Nhấn nút “Output Parser” và đính kèm một nút con “Structured Output Parser”.
- Trong nút con “Structured Output Parser”, thêm schema sau
{ "type": "object", "properties": { "title": { "type": "string" }, "summary": { "type": "string" }, "ideas": { "type": "array", "items": { "type": "string" } }, "priority": { "type": "string" } } }
Bước 5. Tạo một yêu cầu mới trong Linear
Bây giờ, chúng ta đã có tiêu đề yêu cầu, mô tả và nhãn mức độ ưu tiên được tạo bởi AI cùng với metadata tin nhắn từ Slack, chúng ta có thể kết hợp hai để tạo ra một ticket thực sự trong Linear.
- Thêm một nút Linear thực hiện thao tác tạo cho tài nguyên yêu cầu. Đảm bảo tên hoặc ID Nhóm được đặt phù hợp với dự án bạn muốn ghi lại ticket.
- Trong nút Linear, ánh xạ các đầu ra của nút Chuỗi LLM cùng với các đầu ra của nút Slack đã thiết lập trước đó trong workflow, vào các trường tiêu đề, mô tả và mức độ ưu tiên tương ứng.


Bước 6. Xong!
Bây giờ, khi workflow của chúng ta hoàn tất, chúng ta có thể kích hoạt nó và nó sẽ tiếp tục theo dõi kênh hỗ trợ khách hàng của chúng ta cho đến khi dừng lại. Mỗi khi một yêu cầu hợp lệ của khách hàng xuất hiện trong kênh, chúng ta sẽ thêm phản hồi 🎫(vé) để tạo ra vấn đề của chúng ta trong Linear. Hãy thử nhé!
Tổng Kết
Trong hướng dẫn này, chúng ta đã học cách sử dụng n8n và AI để loại bỏ một số công đoạn thủ công trong các quy trình công việc như tạo ticket yêu cầu cho khách hàng. Chúng ta cũng đã học cách tích hợp với các sản phẩm như Slack và Linear để tạo ra các luồng công việc mạnh mẽ với rất ít công sức. Tham khảo thêm các template khác của N8n Academy tại đây