Xử lý LINE Unsend mà không làm tin nhắn đã xóa xuất hiện lại
Khi người dùng LINE thu hồi tin nhắn, hãy loại bỏ nội dung khỏi giao diện hỗ trợ và ngừng sử dụng ở các hệ thống phía sau. Hướng dẫn webhook chính thức của LINE khuyến nghị ngừng hiển thị và xóa nội dung đã lưu. Với UnifyPort, xử lý sự kiện chuẩn hóa message.deleted bằng dấu đánh dấu xóa được lưu bền vững cùng tác vụ dọn dữ liệu có thể thử lại. Chỉ xóa một dòng trong hộp thư là chưa đủ: sự kiện đến muộn có thể tạo lại tin nhắn, còn tìm kiếm hoặc ngữ cảnh AI vẫn giữ bản sao.
Điểm chính
- Nhận thông báo thu hồi khác với gọi API để yêu cầu thu hồi tin nhắn.
- Chống lặp bằng ID sự kiện, nhưng tìm tin nhắn đích bằng
data.message.idtrong phạm vi tài khoản phù hợp. - Giữ dấu xóa tối thiểu để sự kiện nhận hoặc sửa đến muộn không khôi phục nội dung.
- Theo dõi việc dọn từng hệ thống riêng biệt; xác nhận webhook không chứng minh mọi bản sao đã bị xóa.
LINE Unsend có ý nghĩa gì với dữ liệu đã lưu?
Hướng dẫn nhận tin nhắn của LINE nêu rằng khi người dùng thu hồi tin nhắn, máy chủ nhận một sự kiện unsend. LINE khuyến nghị tôn trọng ý định đó để tin nhắn không tiếp tục được xem hoặc sử dụng, bao gồm gỡ khỏi màn hình quản trị và xóa khỏi nơi lưu trữ.
Đây là khuyến nghị chính thức. Dấu xóa, transactional outbox và kiểm thử bên dưới là đề xuất kiến trúc ứng dụng, không phải tính năng LINE hay kết luận pháp lý về thời hạn lưu dữ liệu.
Sửa tin nhắn là thay nội dung; thu hồi là ngừng sử dụng nội dung. Nếu cũng xử lý chỉnh sửa, hãy giữ luồng đồng bộ LINE message.updated nhưng kiểm tra dấu xóa trước khi ghi văn bản mới. Lịch sử phiên bản không được trở thành bản sao ẩn mà nhân viên hay tác vụ truy xuất vẫn đọc được.
Dùng đúng hợp đồng sự kiện
Bộ nhận LINE Messaging API chính thức và bộ nhận UnifyPort có hợp đồng payload và xác thực khác nhau. Không đưa payload gốc của LINE vào handler sự kiện chuẩn hóa nếu chưa có lớp chuyển đổi riêng.
Tài liệu sự kiện chuẩn UnifyPort định nghĩa message.deleted là tin nhắn đã bị xóa hoặc thu hồi. Trong đối tượng message, chỉ data.message.id được bảo đảm; văn bản và media bị loại bỏ. Ma trận sự kiện theo nền tảng liệt kê ánh xạ này cho LINE, Telegram và WhatsApp, nhưng không bảo đảm mọi tài khoản hay môi trường đều phát mọi sự kiện được ánh xạ. Không suy rộng hỗ trợ đó sang Zalo chỉ vì dùng chung hộp thư.
Ví dụ sau dùng các trường có trong tài liệu và mã định danh giả định, không phải một lần gửi được ghi nhận thực tế:
{
"id": "evt_6d91a2c8",
"type": "message.deleted",
"provider": "line",
"account_id": "acc_8c21d0",
"occurred_at": "2026-09-23T08:15:00Z",
"data": {
"conversation": { "id": "c8f2a4d91e", "type": "group" },
"message": { "id": "551842037194" },
"event": { "kind": "message_deleted" }
}
}
id cấp cao nhất nhận diện sự kiện; data.message.id nhận diện tin nhắn đã bị loại bỏ. Đừng dùng ID sự kiện để tra tin nhắn hoặc hiểu việc thiếu text là thao tác sửa thành chuỗi rỗng.
Chặn khôi phục trước khi dọn bản sao
Thêm message.deleted vào subscribed_events, cùng các sự kiện nhận và sửa mà ứng dụng cần. Bật signing_secret. Theo hợp đồng gửi webhook, xác minh HMAC-SHA256 trên timestamp, dấu chấm và byte nguyên gốc của request body; đồng thời kiểm tra độ mới của timestamp trước khi nhận việc. Bài hướng dẫn chống phát lại giải thích vì sao xác minh chữ ký và chống lặp bền vững là hai biện pháp riêng.
Sau khi xác thực và kiểm tra payload:
- Xác định đích trong đúng workspace, nền tảng và tài khoản nhắn tin. Dùng ID cuộc trò chuyện và tin nhắn khi có. Nếu thiếu ngữ cảnh cuộc trò chuyện, chỉ dùng ánh xạ sẵn có, không mơ hồ trong phạm vi tài khoản; không đoán giữa các cuộc trò chuyện. Cách ly mục chưa xác định để rà soát.
- Trong một transaction, ghi thông tin chống lặp sự kiện, tạo hoặc giữ dấu xóa tối thiểu, loại bỏ nội dung đang dùng và đưa tác vụ dọn vào hàng đợi. Tuần tự hóa chuyển trạng thái này với các thao tác nhận hoặc sửa cùng đích.
- Chỉ trả 2xx sau khi nhận bền vững. Worker thử lại việc dọn hệ thống phía sau độc lập.
- Mọi nơi ghi dữ liệu nhận hoặc sửa đều phải kiểm tra dấu xóa. Sự kiện đến muộn không được ghi lại nội dung hay khởi tạo tác vụ AI mới.
Đây là quy tắc trạng thái đề xuất cho ứng dụng, không phải trường API:
| Trạng thái đang lưu | Sự kiện đến | Xử lý |
|---|---|---|
| Chưa có bản gốc | Xóa | Lưu dấu không chứa nội dung, không chờ bản gốc |
| Có nội dung đang dùng | Xóa | Ngừng hiển thị và tạo tác vụ dọn |
| Có dấu xóa | Nhận hoặc sửa | Không khôi phục nội dung |
| Có dấu xóa | Xóa lặp lại | Giữ trạng thái, tiếp tục phần dọn chưa xong |
Đừng chỉ dựa vào thứ tự đến hay nguyên tắc timestamp mới nhất thắng. UnifyPort không bảo đảm thứ tự gửi. Dấu xóa là quy tắc chủ động của ứng dụng để việc xóa tiếp tục có hiệu lực với cùng một tin nhắn.
Theo dõi bản sao, không chỉ dòng trong hộp thư
Duy trì ánh xạ nội bộ từ tin nhắn nguồn đến các đối tượng phát sinh. Đây là những nơi cần kiểm kê, không phải khả năng UnifyPort tự thực hiện:
| Bản sao hoặc tác vụ | Hành động đề xuất |
|---|---|
| Nội dung và bản xem trước trong hộp thư | Loại bỏ nội dung, vô hiệu hóa cache |
| Tệp đính kèm đã tải | Xóa bản sao và ảnh thu nhỏ do hệ thống quản lý |
| Chỉ mục tìm kiếm và vector | Xóa mục, chặn truy xuất trong lúc chờ hoàn tất |
| Ngữ cảnh AI, bản tóm tắt, phản hồi chờ gửi | Loại nguồn, vô hiệu hóa tóm tắt bị ảnh hưởng, hủy hoặc rà soát tác vụ phụ thuộc |
| Bản chuyển tiếp sang CRM hoặc chat nhóm | Xóa hoặc che nội dung khi hỗ trợ; theo dõi bản chưa xử lý được |
| Log sự kiện thô, dead-letter queue, bản sao lưu | Áp dụng chính sách truy cập và lưu giữ, chặn khôi phục vào giao diện hoạt động |
Worker cần kiểm tra lại trạng thái xóa trước khi truy xuất, trước khi công bố văn bản sinh ra và khi xây lại chỉ mục. Nếu có thể, phối hợp bước công bố với cùng cơ chế bảo vệ theo tin nhắn. Công việc đã giao cho hệ thống bên ngoài có thể không thu lại được; hãy ghi rõ giới hạn thay vì hứa xóa hoàn toàn.
Dấu tối thiểu có thể chỉ giữ mã định danh theo phạm vi và trạng thái dọn, không giữ văn bản đã thu hồi. Chọn thời hạn giữ theo nhu cầu phát lại, khôi phục và quyền riêng tư. Xóa dấu khi sự kiện cũ vẫn có thể chạy lại sẽ mở lại nguy cơ nội dung xuất hiện.
Kiểm thử nghiệm thu và giới hạn
Dùng tin nhắn thử có kiểm soát, không dùng dữ liệu khách hàng. Đây là các kiểm thử được đề xuất, không phải kết quả đã thực hiện:
- Xóa đến trước bản gốc: sự kiện nhận đến sau vẫn không khôi phục nội dung.
- Xóa trong lúc sửa hoặc lập chỉ mục: nội dung không được công bố lại.
- Gửi lại cùng sự kiện xóa: không lặp tác động, nhưng việc dọn chưa hoàn tất vẫn được thử lại.
- Xóa ở hệ thống phía sau thất bại: hộp thư vẫn ẩn nội dung và thể hiện rõ trạng thái đang chờ dọn.
- Khôi phục bản sao lưu: áp dụng dấu xóa trước khi mở tìm kiếm hoặc hộp thư.
UnifyPort cung cấp giao diện không chính thức và luồng sự kiện chuẩn hóa, không tự xóa dữ liệu trong CRM hay hệ thống AI. Không có REST API đọc lịch sử tin nhắn hoặc bảo đảm phát lại sự kiện bỏ lỡ. Không nhận sự kiện xóa không chứng minh rằng chưa có thu hồi. Nếu sản phẩm cần hợp đồng gốc của LINE Official Account, nên chọn đường tích hợp chính thức.
Câu hỏi thường gặp
message.deleted có phải yêu cầu thu hồi tin nhắn của người khác?
Không. Nó báo cáo thao tác xóa hoặc thu hồi đã quan sát được. Dọn bản sao do bạn lưu khác với chủ động yêu cầu hành động từ nền tảng.
Có lấy lại văn bản gốc từ payload xóa được không?
Không. Tài liệu bảo đảm ID đích, không bảo đảm văn bản hay media bị loại bỏ. Đừng thiết kế xử lý thu hồi thành tính năng khôi phục nội dung.
HTTP 200 có nghĩa mọi bản sao đã bị xóa?
Không. Nó xác nhận việc gửi. Ứng dụng phải theo dõi hoàn tất và lỗi dọn riêng.
Bước tiếp theo và nguồn
Xem ma trận sự kiện webhook, rồi thêm kiểm thử “xóa trước bản gốc” trước khi bật xử lý AI phía sau.
Nguồn được kiểm tra ngày 2026-09-23:
Biến tích hợp nhắn tin thành một pipeline sản phẩm ổn định.
Bắt đầu bằng cách gửi qua một API, rồi đưa mọi tin nhắn inbound trở lại hệ thống kinh doanh bằng sự kiện chuẩn.