← Tất cả bài viết
Hướng dẫn

Cách chuyển khỏi LINE Mark as Read API cũ trước cuối tháng 10/2026

Để chuyển khỏi LINE Mark as read API (old), hãy lấy markAsReadToken từ sự kiện tin nhắn trong webhook Messaging API rồi gửi token đó tới POST https://api.line.me/v2/bot/chat/markAsRead. Endpoint mới không cần hồ sơ đăng ký riêng và có thể dùng cùng Official Account Chat. Cuối tháng 10/2026, LINE chỉ dừng nhận đơn đăng ký mới cho API cũ; LINE chưa thông báo tắt các tích hợp đang hoạt động vào ngày đó.

Điểm chính

  • Ngày 18/5/2026, LINE thông báo sẽ đóng đăng ký mới cho tính năng doanh nghiệp cũ vào cuối tháng 10; tài khoản đã được duyệt vẫn có thể tiếp tục sử dụng.
  • Endpoint mới nhận markAsReadToken dạng opaque từ sự kiện tin nhắn webhook, không phải giá trị tự tạo từ user ID hay message.id.
  • POST /v2/bot/chat/markAsRead đánh dấu tin nhắn được chỉ định và mọi tin nhắn trước đó là đã đọc, vì vậy thứ tự xử lý và thời điểm xác nhận đều quan trọng.
  • Endpoint mới dùng được với Official Account Chat. API cũ thì không, nên đây là thay đổi quy trình hỗ trợ chứ không chỉ đổi URL.
  • UnifyPort có thể cung cấp luồng inbound riêng cho tài khoản LINE thông thường, nhưng không có message-read API và không tạo markAsReadToken chính thức của LINE.

Điều gì thay đổi khi chuyển LINE Mark as Read API

Thông báo ngày 18/5 của LINE không phải thông báo ngừng dịch vụ vào tháng 10. LINE sẽ dừng nhận đăng ký mới cho Mark as read API (old) vào cuối tháng 10/2026, cho phép tài khoản đã được phê duyệt tiếp tục dùng và đang cân nhắc ngừng tính năng cũ trong tương lai. Với triển khai mới, LINE khuyến nghị quy trình Messaging API Mark messages as read.

Hai contract khác nhau, vì vậy chỉ thay endpoint là chưa đủ:

Phạm viMark as read API (old)Messaging API markAsRead
Quyền truy cậpTùy chọn doanh nghiệp cần đăng kýKhông cần đăng ký riêng
ChatKhông dùng cùng Official Account ChatCần bật Chat để đánh dấu thủ công
Đầu vàoContract cũ theo người dùngmarkAsReadToken từ sự kiện tin nhắn webhook
Hiệu lựcHiển thị trạng thái cho tin nhắn của một người dùngĐánh dấu tin nhắn của token và các tin trước đó
Dự án mớiKhông nên chọnLINE khuyến nghị

Nếu Chat đang tắt trong LINE Official Account Manager, tin nhắn người dùng sẽ tự động được đánh dấu đã đọc. Khi đó, thêm API call không giải quyết nhu cầu nào. Endpoint mới dành cho đội ngũ vẫn bật Chat nhưng muốn backend quyết định thời điểm hiển thị trạng thái.

Cách chuyển sang POST /v2/bot/chat/markAsRead

1. Định nghĩa “đã đọc” trong quy trình hỗ trợ

Chọn business event xứng đáng hiển thị trạng thái cho người dùng: tin nhắn được nhận vào queue, nhân viên thực sự mở nó, hay bộ xử lý tự động đã nhận trách nhiệm. Webhook được giao không đồng nghĩa con người đã đọc. Một call có thể xác nhận nhiều tin nhắn chờ, vì vậy cần ghi rõ quy tắc trước khi sửa code.

Lập danh sách mọi caller API cũ, retry job, Official Account và môi trường; đồng thời ghi lại trạng thái Chat. Tài liệu API cũ cho biết tính năng cũ tắt cơ chế tự động đánh dấu và không thể dùng cùng Chat. Cấu hình tài khoản vì thế là một phần của trạng thái migration.

2. Lưu read token như một giá trị opaque

Khi người dùng gửi tin cho LINE Official Account, sự kiện tin nhắn Messaging API có thể chứa message.markAsReadToken. LINE cho biết read token không hết hạn, nhưng reference cũng ghi trường này không phải lúc nào cũng có. Nếu thiếu, hãy ghi log và giữ hội thoại ở trạng thái chưa đọc; không suy ra token từ message.id.

Liên kết token với webhook event ID, message ID, người phụ trách hội thoại, thời gian nhận và trạng thái xử lý. Không đưa token vào analytics label hoặc log phía client. Nó không phải channel access token nhưng vẫn là giá trị thực hiện hành động trong contract webhook của LINE.

3. Gọi endpoint Messaging API

Dùng token mới nhất tương ứng với vị trí quy trình thực sự đã xử lý:

curl -X POST "https://api.line.me/v2/bot/chat/markAsRead" \
  -H "Authorization: Bearer ${LINE_CHANNEL_ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"markAsReadToken":"30yhdy232..."}'

Reference chính thức mô tả response 200 với JSON rỗng khi thành công, 400 khi read token không hợp lệ và rate limit 2.000 request mỗi giây. Call thành công đánh dấu tất cả tin nhắn trước và bao gồm tin được chỉ định, không chỉ một record trong database của bạn.

4. Giữ đúng thứ tự hội thoại và giới hạn retry

Xử lý xác nhận theo từng hội thoại. Nếu tin B mới hơn tin A, xác nhận B cũng bao phủ A. Các worker toàn cục tranh token trong cùng hội thoại có thể làm UI hiển thị đã đọc trước khi tác vụ nội bộ kết thúc.

Lưu trạng thái “chuẩn bị xác nhận” trước khi gọi LINE, rồi lưu response sau call. Xem 400 là lỗi contract hoặc dữ liệu cần điều tra. Với timeout hay server error, áp dụng hướng dẫn retry chung hiện tại của LINE và giới hạn số lần thử. Log phải trả lời được token nào đã dùng và business event nào kích hoạt nó.

5. Acceptance test theo tài khoản

Dùng Official Account không phải production hoặc hội thoại test có kiểm soát. Khi Chat đang bật, xác minh:

  1. tin nhắn người dùng tạo webhook có markAsReadToken;
  2. trạng thái chưa xuất hiện trước checkpoint đã chọn;
  3. endpoint trả 200 tại checkpoint;
  4. tin hiện tại và các tin trước đó hiển thị đã đọc;
  5. token thiếu hoặc sai không vô tình xác nhận tin nhắn mới hơn;
  6. Official Account Chat vẫn hoạt động sau migration.

Chỉ bỏ caller cũ sau khi đường mới và luồng nhân viên dùng Chat đều đạt. Tháng 10 là hạn đăng ký mới, không phải lý do để người dùng hiện tại chuyển gấp mà chưa test.

UnifyPort phù hợp ở đâu

Quy trình markAsReadToken chính thức thuộc LINE Official Accounts và Messaging API. Hãy dùng nó khi client LINE của người dùng cần hiển thị trạng thái đã đọc chính thức.

UnifyPort xử lý nhu cầu khác: tài khoản LINE thông thường đã kết nối có thể gửi hội thoại inbound được hỗ trợ tới backend dưới dạng sự kiện chuẩn hóa message.received, dùng cùng envelope với WhatsApp, Telegram, TikTok, Zalo và X. Khi webhook endpoint có signing_secret, delivery được xác minh HMAC-SHA256 bằng X-Device-TimestampX-Device-Signature.

Sự kiện này không chứa markAsReadToken chính thức của LINE. Tài liệu UnifyPort hiện tại cũng nêu rõ không có message-read API. Worker trạng thái Official Account và worker inbound UnifyPort nên là hai capability độc lập.

Để hiểu lựa chọn, hãy đọc cách nhận tin nhắn LINE không cần Official Accountvì sao LINE analytics polling không phải inbound router. Với đội ngũ Việt Nam đang vận hành thêm Zalo hoặc WhatsApp, sự tách biệt này cũng giúp không trộn trạng thái riêng của LINE vào queue đa kênh.

Giới hạn và đánh đổi

Hãy dùng Messaging API chính thức khi cần danh tính Official Account, Chat, read receipt chính thức, rich menu, audience tool hoặc chức năng native khác của LINE. Endpoint markAsRead mới là con đường chính thức cho nhu cầu đã đọc.

Giao diện không chính thức không thể cấp tính năng Official Account, thay đổi chính sách đăng ký LINE hoặc đánh dấu hội thoại Official Account là đã đọc. Backend nhận được tin cũng không chứng minh con người đã xem. Nếu chỉ cần queue inbound đa kênh, hãy đánh giá riêng; nếu giao diện LINE phải hiện “đã đọc”, endpoint chính thức vẫn phải nằm trong kiến trúc.

FAQ

LINE Mark as read API (old) có tắt vào tháng 10/2026 không?

Không có thông báo như vậy. LINE sẽ dừng nhận đăng ký mới vào cuối tháng 10, còn tài khoản đã được duyệt có thể tiếp tục sử dụng. LINE đang cân nhắc ngừng trong tương lai và khuyến nghị migration.

Endpoint LINE markAsRead mới có cần đăng ký không?

Không. POST /v2/bot/chat/markAsRead dùng channel access token và markAsReadToken nhận từ sự kiện tin nhắn webhook Messaging API.

markAsRead có dùng được với LINE Official Account Chat không?

Có. Chat phải bật để đánh dấu thủ công qua Messaging API. Nếu Chat tắt, tin nhắn inbound của người dùng tự động được đánh dấu đã đọc.

markAsReadToken có hết hạn không?

LINE hiện cho biết read token không hết hạn. Dù vậy, chỉ lưu theo chính sách vận hành và retention, đồng thời dùng token đúng với checkpoint cần xác nhận.

UnifyPort có thể đánh dấu tin LINE Official Account là đã đọc không?

Không. UnifyPort có thể chuyển tin inbound được hỗ trợ cho tài khoản LINE đã kết nối, nhưng không có message-read API và không cung cấp markAsReadToken chính thức của Messaging API.

Bước tiếp theo

Đối chiếu caller cũ với hướng dẫn Mark messages as read chính thức và chạy sáu bước acceptance test trên Official Account có kiểm soát. Nếu nhu cầu riêng là inbound routing cho tài khoản thông thường, hãy xem hướng dẫn xác thực LINE của UnifyPort trước khi thiết kế luồng thứ hai.

Nguồn

Các nguồn chính thức của LINE được kiểm tra ngày 25/7/2026: