Trong một bài đăng gần đây , chúng tôi đã xem xét cách thêm trò chuyện vào luồng trực tiếp của Amazon Interactive Video Service (Amazon IVS). Phòng trò chuyện là một phần quan trọng trong việc tạo ra trải nghiệm phát trực tuyến tương tác, nhưng thật không may, chúng đi kèm với khả năng không thể tránh khỏi là một số người dùng có thể đăng các thông báo không nhạy cảm hoặc gây khó chịu. Trong bài đăng này, tôi sẽ chỉ cho bạn một cách rất đơn giản nhưng hiệu quả để kiểm duyệt các phòng trò chuyện Amazon IVS của bạn để giữ cho mọi thứ vui vẻ và thân thiện.
Có hai cách để giải quyết vấn đề kiểm duyệt trò chuyện: thủ công và tự động. Phương pháp thủ công mà chúng tôi sẽ đề cập trong một bài đăng trong tương lai, yêu cầu người kiểm duyệt (người phát sóng hoặc người dùng được chỉ định khác) 'gắn cờ' tin nhắn trò chuyện để xóa thông qua một trong các tài liệu SDK trò chuyện của Amazon IVS . Gắn cờ một tin nhắn sẽ gửi một sự kiện đến tất cả các máy khách WebSocket được kết nối có thể được sử dụng để cập nhật hoặc xóa tin nhắn vi phạm. Phương pháp tự động mà chúng tôi sẽ đề cập trong bài đăng này cho phép chúng tôi sử dụng chức năng AWS Lambda để thực hiện thay thế trên tin nhắn trò chuyện hoặc từ chối gửi dựa trên nhu cầu kinh doanh của ứng dụng.
Có cả ưu và nhược điểm đối với cả kiểm duyệt thủ công và tự động. Một điều "ủng hộ" đối với việc kiểm duyệt thủ công là vì nó yêu cầu sự can thiệp của con người, nên bạn ít có khả năng gặp phải "dương tính giả" có thể xảy ra với việc kiểm duyệt tự động. Một mặt tích cực khác của việc can thiệp thủ công là con người nói chung tốt hơn máy móc trong việc xác định các thông điệp cần được kiểm duyệt. Tuy nhiên, một "khuyết điểm" của việc kiểm duyệt thủ công là các tin nhắn chỉ có thể bị xóa sau khi chúng đã được đăng lên một phòng trò chuyện. Và như người ta vẫn nói, "bạn không thể bỏ kem đánh răng trở lại trong ống". Nói cách khác, người dùng của bạn đã xem các tin nhắn có khả năng xúc phạm - bạn không thể làm cho họ "bỏ xem" một tin nhắn mà họ có thể đã xem.
Mặt khác, kiểm duyệt tự động cung cấp cho chúng tôi khả năng từ chối (hoặc kiểm duyệt) các tin nhắn có hại trước khi chúng được đăng lên phòng trò chuyện. Tuy nhiên, như đã đề cập ở trên, rất khó để các tin nhắn trò chuyện được kiểm duyệt đúng cách bởi một máy có độ chính xác cao. Bạn đã bao giờ vào phòng trò chuyện hoặc đăng nhận xét cho một bài đăng trên blog hoàn toàn vô hại và nó bị từ chối hoặc kiểm duyệt không chính xác chưa? Có thể rất khó chịu đối với người dùng trò chuyện gửi tin nhắn nói rằng "Người này sẽ là một tài sản thực sự cho nhóm của chúng tôi" chỉ để thấy "Người này sẽ là một ***et thực sự cho nhóm của chúng tôi" được đăng lên phòng trò chuyện ( hoặc đơn giản là bị từ chối)!
Như đã nói, cách tiếp cận tốt nhất để kiểm duyệt trò chuyện là một quyết định cá nhân cho ứng dụng của bạn dựa trên đối tượng dự định và nhu cầu kinh doanh của bạn. Tôi nghi ngờ rằng nhiều ứng dụng yêu cầu kiểm duyệt cuối cùng sẽ sử dụng kết hợp kiểm duyệt thủ công và tự động.
Bây giờ, chúng ta đã nói về cả hai phương pháp khả thi, hãy cùng tìm hiểu cách bạn có thể sử dụng hàm AWS Lambda để thực hiện kiểm duyệt tự động cho phòng trò chuyện Amazon IVS của mình.
Khi tạo (hoặc cập nhật) phòng trò chuyện Amazon IVS thông qua bảng điều khiển Amazon IVS, AWS CLI hoặc một trong các SDK Amazon IVS, chúng tôi có thể chỉ định một chức năng AWS Lambda sẽ đóng vai trò là trình xử lý đánh giá tin nhắn của chúng tôi. Trong bài đăng này, chúng tôi sẽ tập trung vào việc sử dụng bảng điều khiển Amazon IVS, nhưng bạn có thể tham khảo tài liệu thích hợp nếu muốn sử dụng phương pháp khác. Để thêm một trình xử lý, hãy cuộn xuống phần* Trình xử lý đánh giá tin nhắn* trong khi tạo hoặc chỉnh sửa phòng trò chuyện Amazon IVS. Theo mặc định, tùy chọn 'Đã tắt' sẽ được chọn.
Hãy thay đổi điều này bằng cách chọn Xử lý bằng AWS Lambda .
Điều này trình bày cho chúng tôi một vài lựa chọn hơn. Tùy chọn đầu tiên, Kết quả dự phòng cho phép chúng tôi chọn cách chúng tôi muốn xử lý các phản hồi, lỗi và thời gian chờ không hợp lệ từ chức năng xử lý của chúng tôi. Một lần nữa, điều này phụ thuộc vào nhu cầu kinh doanh của bạn. Nếu bạn muốn từ chối thư trong trường hợp này, hãy chọn Từ chối . Nếu bạn chọn Cho phép , các tin nhắn có khả năng gây hại có thể được đăng lên phòng trò chuyện của bạn. Đây là nơi một phương pháp kết hợp có thể cung cấp cho bạn một 'kế hoạch dự phòng' để người điều hành vẫn có thể xóa các thư bị người xử lý bỏ lỡ vì bất kỳ lý do gì. Đối với bản trình diễn này, tôi sẽ chọn Cho phép . Tiếp theo, chúng ta sẽ cần chỉ định hàm AWS Lambda sẽ đóng vai trò là trình xử lý của chúng ta. Chúng tôi sẽ tạo một chức năng mới thông qua bảng điều khiển cho bản trình diễn này, vì vậy hãy nhấp vào Tạo chức năng Lambda .
Nhấp vào nút này sẽ đưa chúng ta đến danh sách các chức năng hiện tại của chúng ta. Trên trang này, nhấp vào Tạo hàm .
Trên trang tiếp theo, nhập tên ivs-chat-moderation-function, để mặc định được chọn cho các tùy chọn còn lại, sau đó nhấp vào Create function .
Bây giờ hãy cập nhật mã cho hàm của chúng ta. Tài liệu cho chúng ta biết rằng hàm sẽ nhận một đối tượng sự kiện theo định dạng sau:
{ "Content": "string", "MessageId": "string", "RoomArn": "string", "Attributes": {"string": "string"}, "Sender": { "Attributes": { "string": "string" }, "UserId": "string", "Ip": "string" } }
Để trả về giá trị từ hàm của chúng ta bằng Node, chúng ta phải sử dụng hàm async (xem tài liệu AWS Lambda để biết thêm thông tin). Đối tượng mà chúng ta trả về phải sử dụng định dạng sau:
{ "Content": "string", "ReviewResult": "string", "Attributes": {"string": "string"}, }
Giá trị mà chúng tôi đặt cho DENY
phải là ALLOW
hoặc TỪ CHỐI và sẽ xác định liệu tin nhắn có được gửi đến phòng trò chuyện hay không. Chúng tôi có thể sửa đổi Nội dung thông báo nếu cần, nghĩa là chúng tôi có thể xóa hoặc thay thế nội dung có khả năng gây khó chịu hoặc không nhạy cảm và ALLOW
đăng thông báo đó. Bất kỳ thuộc tính bổ sung nào cũng có thể được chuyển bằng Attributes
. Nếu bạn chọn gửi ReviewResult
của DENY
, bạn có thể chuyển thuộc tính Reason
sẽ được sử dụng để trả về phản hồi 406 Not Acceptable
cho khách hàng bao gồm giá trị được chỉ định là Reason
.
Tham khảo đến
Tài liệu Trình xử lý đánh giá tin nhắn trò chuyện để biết thêm thông tin bao gồm các ràng buộc về độ dài và các giá trị hợp lệ.
Giờ đây, chúng ta có thể sửa đổi mã của hàm để thay thế 'từ xấu' trong nội dung đến bằng dấu hoa thị.
exports.handler = async (event) => { return { ReviewResult: 'ALLOW', Content: event.Content.replace(/bad word/ig, '*** ****'), Attributes: { username: event.Attributes.username } }; };
Hãy quay lại phòng trò chuyện của chúng ta, làm mới danh sách các chức năng, chọn chức năng mới và nhấp vào Lưu thay đổi .
Bây giờ chúng tôi có thể đăng một tin nhắn lên phòng trò chuyện của mình và xem điều gì sẽ xảy ra.
Xuất sắc! Trình xử lý tin nhắn trò chuyện của chúng tôi đã được gọi đúng cách và 'từ xấu' của chúng tôi đã bị xóa trước khi nó được đăng lên phòng trò chuyện.
Trên thực tế, bạn muốn sử dụng một giải pháp phức tạp hơn nhiều để thay thế văn bản có hại hơn là biểu thức chính quy đơn giản mà tôi đang sử dụng ở trên. Tôi đã kiểm tra thư viện @2toad/lời tục tĩu và nhận thấy thư viện này thực hiện rất tốt việc kiểm duyệt và xác định các từ tục tĩu trong thư đến. Vui lòng sử dụng bất kỳ giải pháp nào phù hợp với bạn, nhưng hãy nhớ rằng chức năng của bạn phải trả về phản hồi trong vòng 200 mili giây nếu không nó sẽ hết thời gian chờ, do đó, các lệnh gọi API của bên thứ ba có thể không khả dụng.
Dưới đây là ví dụ về trình xử lý sử dụng thư viện @2toad/profanity
để kiểm duyệt các từ có hại:
exports.censorChat = async (event) => { console.log('censorChat:', JSON.stringify(event, null, 2)); return { ReviewResult: 'ALLOW', Content: profanity.censor(event.Content), Attributes: { username: event.Attributes.username } }; };
Và một ví dụ về việc từ chối một tin nhắn thay vì kiểm duyệt.
exports.rejectInappropriateChat = async (event) => { console.log('rejectInappropriateChat:', JSON.stringify(event, null, 2)); const profane = profanity.exists(event.Content); return { ReviewResult: profane ? 'DENY' : 'ALLOW', Content: profane ? '' : event.Content, Attributes: { username: event.Attributes.username } }; };
Trong bài đăng này, chúng tôi đã tìm hiểu về hai cách tiếp cận khác nhau để kiểm duyệt tin nhắn trò chuyện: thủ công và tự động. Sau đó, chúng tôi đã tạo một hàm AWS Lambda và liên kết nó với phòng trò chuyện Amazon IVS để thực hiện kiểm duyệt trò chuyện tự động. Trong một bài đăng trong tương lai, chúng tôi sẽ xem xét cách bạn có thể sử dụng Amazon IVS Chat SDK để kiểm duyệt tin nhắn trò chuyện theo cách thủ công. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại nhận xét hoặc liên hệ với tôi trên Twitter .