Cài đặt chat mặc định
Back to ezychatChat mặc định là chức năng đưa giao diện EzyChat trực tiếp vào các trang web của EzyPlatform. Cơ chế này sử dụng cấu hình toàn hệ thống, không yêu cầu tạo chat profile và không cần khóa nhúng. Sau khi bạn đã cài đặt thành công, sẽ có một bong bóng chat dạng icon hiển thị cố định trên giao diện của mọi trang, người dùng có thể nhấn vào icon, điền một số thông tin và bắt đầu chat.
Cách chat mặc định được tích hợp
Khi web runtime chuẩn bị trả về một trang, EzyChat sử dụng một view decorator để bổ sung tài nguyên và cấu hình chat vào view.
Nếu tùy chọn Hiển thị trên web được bật, decorator sẽ:
- Thêm CSS của EzyChat vào trang.
- Thêm JavaScript chính của EzyChat.
- Thêm thư viện Markdown.
- Thêm socket client nếu chat qua socket được bật.
- Đưa các thiết lập giao diện và hành vi vào value map của trang.
sequenceDiagram
actor User as Người dùng
participant Web as Web runtime
participant Decorator as EzyChat view decorator
participant Setting as Cấu hình EzyChat
participant Page as Trang HTML
User->>Web: Mở một trang
Web->>Decorator: Trang chuẩn bị được render
Decorator->>Setting: Kiểm tra hiển thị chat
alt Đã bật chat
Setting-->>Decorator: Cấu hình chat mặc định
Decorator->>Page: Thêm CSS
Decorator->>Page: Thêm JavaScript
Decorator->>Page: Thêm biến cấu hình
end
Page-->>User: Trang có giao diện chat
Khác với widget theo profile, chat mặc định không tạo iframe và không cần tải trang widget riêng. Giao diện chat được JavaScript dựng trực tiếp trong trang hiện tại.
Bật chat mặc định
Đăng nhập trang quản trị, mở phần cài đặt EzyChat và bật:
Hiển thị trên web: Bật
Đây là công tắc chính. Khi tắt, EzyChat không bổ sung JavaScript, CSS hoặc biến cấu hình chat vào các view của website.
Việc bật tùy chọn này không liên quan đến trạng thái của bất kỳ chat profile nào.
Chọn phương thức giao tiếp
Tùy chọn Chat qua socket trên web xác định phương thức chat mặc định.
Sử dụng socket
Khi bật socket, EzyChat bổ sung socket client vào trang. Tin nhắn và trạng thái đang nhập có thể được truyền theo thời gian thực.
Trước khi bật, cần bảo đảm:
- Socket server đang hoạt động.
- Socket application của EzyChat đã được cài đặt.
- Trình duyệt có thể kết nối tới WebSocket URL.
- Reverse proxy hỗ trợ WebSocket upgrade.
- Danh tính người dùng được gắn với phiên socket.
Sử dụng HTTP
Khi tắt socket, giao diện sử dụng API web để tạo kênh, lấy lịch sử và gửi tin nhắn.
Đây là lựa chọn phù hợp cho lần cài đặt đầu tiên vì chỉ yêu cầu web runtime hoạt động.
Cấu hình thông tin người dùng
Chat mặc định đọc các yêu cầu thông tin từ cấu hình toàn cục:
- Yêu cầu thông tin người dùng trước khi chat.
- Yêu cầu email.
- Yêu cầu số điện thoại.
- Cho phép đính kèm tệp.
Nếu người truy cập chưa đăng nhập, thao tác tạo kênh sẽ bị từ chối với trạng thái chưa xác thực. Giao diện sau đó chuyển sang quy trình yêu cầu thông tin hoặc đăng ký tài khoản.
Một cấu hình khởi đầu phù hợp là:
| Thiết lập | Giá trị gợi ý |
|---|---|
| Yêu cầu thông tin người dùng | Bật |
| Yêu cầu email | Bật |
| Yêu cầu số điện thoại | Tắt |
| Cho phép đính kèm tệp | Tắt cho đến khi media được cấu hình |
Cấu hình giao diện
Giao diện chat mặc định sử dụng trực tiếp các thiết lập toàn cục.
Nút mở chat
Có thể cấu hình:
- Kiểu nút: hình tròn, vuông bo góc hoặc hình vuông.
- Vị trí: bên trái hoặc bên phải.
- Kích thước: nhỏ, trung bình hoặc lớn.
- Màu nền.
- Ảnh launcher.
- Hiệu ứng thu hút chú ý.
Giá trị mặc định của plugin:
Kiểu nút: circle Vị trí: right Kích thước: medium Màu: #ff7675
Nếu URL ảnh launcher được để trống, giao diện sử dụng biểu tượng chat mặc định.
Ảnh nhân viên hỗ trợ
Ảnh này được hiển thị bên cạnh tin nhắn do phía hỗ trợ gửi. Nếu không cấu hình riêng, plugin sử dụng tài nguyên mặc định:
/ezychat/images/supporter.png
JavaScript và CSS
Tài nguyên mặc định là:
/ezychat/js/main.js /ezychat/css/style.css
Chỉ thay các URL này khi cần sử dụng CDN hoặc một bản giao diện đã tùy biến. JavaScript và CSS thay thế phải tương thích với phiên bản plugin hiện tại.
Giới hạn tin nhắn
Cấu hình Độ dài tin nhắn tối đa kiểm soát nội dung người dùng có thể gửi.
Giá trị mặc định:
3000 ký tự
Validation được thực hiện ở server, vì vậy việc thay đổi giới hạn chỉ ở frontend là không đủ.
Cách tạo kênh mặc định
Khi người dùng bắt đầu chat, frontend gọi API tạo hoặc lấy kênh hỗ trợ mà không gửi khóa profile.
sequenceDiagram
actor User as Người dùng
participant UI as Giao diện chat mặc định
participant API as Web API
participant Channel as Dịch vụ kênh
participant Supporter as Nhân viên hỗ trợ chung
User->>UI: Bắt đầu chat
UI->>API: Tạo hoặc lấy kênh hỗ trợ
Note over UI,API: Không gửi embed key
API->>Channel: Tìm kênh gần nhất của người dùng
alt Chưa có kênh
Channel->>Channel: Tạo kênh SUPPORT
Channel->>Channel: Thêm người dùng
Channel->>Supporter: Thêm nhân viên hỗ trợ chung
end
API-->>UI: Thông tin kênh
Do request không có
profile hoặc embedKey:- Không tìm chat profile.
- Không gắn
chatProfileIdvào kênh. - Không thêm thành viên từ chat profile.
- Không áp dụng cấu hình giao diện của profile.
- Không kiểm tra allowed origin của profile.
Kênh vẫn là một kênh hỗ trợ bình thường và sử dụng nhân viên hỗ trợ chung của EzyChat.
Nhân viên hỗ trợ
Chat mặc định sử dụng danh sách quản trị viên có vai trò hỗ trợ chung.
Khi tạo kênh, EzyChat:
- Thêm người dùng vào kênh.
- Lấy danh sách quản trị viên hỗ trợ.
- Thêm các quản trị viên đó vào kênh.
- Kiểm tra lại danh sách này khi xử lý tin nhắn và bổ sung thành viên còn thiếu nếu cần.
Vì vậy, để chat mặc định hoạt động đầy đủ, cần gán vai trò hỗ trợ cho ít nhất một tài khoản quản trị viên.
Không cần thêm thành viên vào chat profile.
Chatbot mặc định
Chat mặc định có thể sử dụng chatbot mà không cần profile.
Khi một kênh không được gắn profile, hệ thống tìm chatbot theo cấu hình chung:
- Đọc chatbot service mặc định.
- Kiểm tra xem có default profile riêng của service hay không.
- Nếu có, sử dụng profile đó làm cấu hình chatbot.
- Nếu không, gọi trực tiếp chatbot service mặc định với cấu hình chung.
Điều này có nghĩa là “không cần chat profile” đối với giao diện và việc tạo kênh. Tuy nhiên, hệ thống vẫn có thể tham chiếu một profile mặc định của chatbot service nếu quản trị viên đã cấu hình nó.
Để chatbot trả lời, vẫn cần:
- Một chatbot service đã được đăng ký.
- Danh tính chatbot đã được khởi tạo.
- Chatbot được thêm vào kênh.
- Chatbot đang được bật cho kênh.
- Người dùng chưa vượt quá hạn mức phản hồi.
Cấu hình chatbot
Các thiết lập toàn cục gồm:
| Thiết lập | Mặc định |
|---|---|
| Số tin nhắn dùng làm ngữ cảnh | 20 |
| Số câu trả lời tối đa mỗi người dùng | 20 |
| Chu kỳ làm mới hạn mức | 30 phút |
| Tắt giới hạn | Đặt hạn mức bằng 0 |
Nếu chưa có chatbot provider, để trống tên chatbot service. Việc cấu hình tên service không tự tạo kết nối đến nhà cung cấp AI.
Cấu hình kênh
Chat mặc định tạo kênh loại
SUPPORT. Mặc định, danh sách loại kênh hỗ trợ còn bao gồm cả kênh OA.Phần cài đặt kênh cũng cho phép cấu hình secret dùng khi băm mật khẩu khóa kênh. Nếu sử dụng chức năng này:
- Chọn một secret dài và ngẫu nhiên.
- Không đưa secret xuống frontend.
- Không thay đổi secret sau khi đã có mật khẩu kênh đang sử dụng.
Cấu hình đề xuất
Để cài đặt chat mặc định lần đầu:
Hiển thị trên web: Bật Chat qua socket: Tắt Yêu cầu thông tin người dùng: Bật Yêu cầu email: Bật Yêu cầu số điện thoại: Tắt Cho phép đính kèm: Tắt Độ dài tin nhắn tối đa: 3000 Kiểu nút: circle Vị trí: right Kích thước: medium Màu: #ff7675 Chatbot service: Để trống
Sau đó:
- Gán vai trò hỗ trợ cho một quản trị viên.
- Mở một trang web được render bởi EzyPlatform.
- Kiểm tra nút chat xuất hiện.
- Đăng nhập hoặc nhập thông tin người dùng.
- Tạo cuộc hội thoại.
- Kiểm tra kênh xuất hiện trong trang quản trị.
- Gửi và nhận tin nhắn qua HTTP.
- Chỉ bật socket, tệp đính kèm hoặc chatbot sau khi luồng cơ bản hoạt động.
Phân biệt với chat profile
Chat profile chỉ cần thiết trong các trường hợp:
- Nhúng widget vào một website khác.
- Cần một khóa nhúng riêng.
- Cần giới hạn allowed origin.
- Cần giao diện riêng cho từng website.
- Cần nhóm nhân viên hỗ trợ riêng.
- Cần chatbot hoặc system message riêng.
- Cần chọn phương thức truyền tải riêng cho từng widget.
flowchart TD
Need["Cần hiển thị chat"]
Need --> Question{"Chat nằm trong web EzyPlatform?"}
Question -->|Có| Default["Dùng chat mặc định<br/>Cấu hình toàn cục"]
Question -->|Không| Profile["Tạo chat profile<br/>Dùng khóa nhúng"]
Default --> NoProfile["Không cần profile"]
Profile --> Embed["Nhúng embed.js hoặc iframe"]