Tin Nhắn

Tin nhắn đại diện cho từng email được gửi hoặc nhận bởi một hộp thư. Gửi email HTML phong phú, theo dõi trạng thái giao, và đọc phản hồi đến.

Tổng Quan

Một tin nhắn là một email duy nhất gắn với một hộp thư. Khi agent của bạn gửi một email, nó tạo ra một tin nhắn gửi đi. Khi có người trả lời hoặc gửi email đến địa chỉ của agent, một tin nhắn đến sẽ được tạo tự động.

Mỗi tin nhắn thuộc về một chuỗi hội thoại — có thể là chuỗi đã tồn tại (cho các phản hồi) hoặc một chuỗi mới được tạo tự động khi bắt đầu cuộc hội thoại mới.

Tin nhắn là bất biến sau khi tạo. Để gửi tin nhắn tiếp theo, tạo một tin nhắn mới trong cùng chuỗi bằng cách truyền threadId.

Gửi Email

POST /inboxes/{inboxId}/messages

Gửi email từ một hộp thư bằng cách post tới endpoint messages của nó. Mảng tosubject là bắt buộc; mọi thứ khác là tùy chọn.

Nội Dung Yêu Cầu

Trường Kiểu Mô tả
to bắt buộc string[] Mảng địa chỉ email người nhận.
subject bắt buộc string Dòng tiêu đề email.
cc string[] Người nhận CC.
bcc string[] Người nhận BCC. Không hiển thị với các người nhận khác.
bodyText string Nội dung văn bản thuần. Dùng làm dự phòng khi có cả bodyHtml.
bodyHtml string Nội dung HTML. Khi có cả bodyTextbodyHtml, email được gửi dưới dạng multipart/alternative.
threadId string Chuỗi hội thoại để trả lời vào. Nếu bỏ qua, một chuỗi mới sẽ được tạo.
attachmentIds string[] ID của các tệp đính kèm đã tải lên trước đó để bao gồm.
javascript
const res = await fetch(
  `https://api.agentsend.io/inboxes/${inboxId}/messages`,
  {
    method: "POST",
    headers: {
      "x-api-key": process.env.AGENTSEND_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      to: ["customer@example.com"],
      subject: "Following up on your request",
      bodyText: "Hi, just checking in on your request.",
      bodyHtml: "<p>Hi, just checking in on your request.</p>",
    }),
  }
);

const message = await res.json();
console.log(message.id);     // msg_abc123
console.log(message.delivery); // "email" or "dry-run"
console.log(message.status); // "queued"

Thuộc Tính Tin Nhắn

Mỗi đối tượng tin nhắn được API trả về có các trường sau.

Thuộc tính Kiểu Mô tả
id string Định danh duy nhất của tin nhắn.
inboxId string Hộp thư mà tin nhắn này thuộc về.
threadId string Chuỗi hội thoại mà tin nhắn này thuộc về.
direction string outbound cho email agent của bạn đã gửi; inbound cho email đã nhận.
fromAddress string Địa chỉ email người gửi.
toAddresses string[] Người nhận chính.
ccAddresses string[] Người nhận CC.
subject string Dòng tiêu đề email.
bodyText string Nội dung văn bản thuần.
bodyHtml string Nội dung HTML.
delivery string Liệu môi trường đã gửi email thật (email) hay chỉ mô phỏng (dry-run).
status string Trạng thái giao hiện tại. Xem Trạng Thái Tin Nhắn bên dưới.
attachments object[] Mảng các đối tượng tệp đính kèm với id, filename, contentType, và size.
messageIdHeader string Giá trị header Message-ID theo RFC 5322, dùng để gom chuỗi trong email client.
createdAt string Dấu thời gian ISO 8601 khi tin nhắn được tạo.

Trạng Thái Tin Nhắn

Tin nhắn gửi đi đi qua một vòng đời giao hàng. Kiểm tra delivery trước để xác nhận môi trường đã gửi email thật hay chỉ mô phỏng, sau đó dùng status hoặc webhooks để theo dõi vòng đời phía nhà cung cấp.

Vòng đời gửi đi

Trạng thái thất bại

Tin nhắn đến

Nếu một tin nhắn đạt đến trạng thái bounced hoặc complained, tránh gửi thêm email đến địa chỉ đó để bảo vệ uy tín người gửi.

Liệt Kê Tin Nhắn

GET /inboxes/{inboxId}/messages

Lấy danh sách có phân trang các tin nhắn của một hộp thư. Lọc theo trạng thái để tìm tin nhắn đến, gửi thất bại, hoặc bất kỳ tập con nào khác.

Tham số truy vấn Kiểu Mô tả
limit number Số lượng tin nhắn trả về. Mặc định 20, tối đa 100.
offset number Số lượng tin nhắn bỏ qua để phân trang. Mặc định 0.
status string Lọc theo trạng thái. Một trong queued, sending, sent, delivered, failed, bounced, complained, received.
javascript
// Lấy 10 tin nhắn đến gần nhất
const res = await fetch(
  `https://api.agentsend.io/inboxes/${inboxId}/messages?status=received&limit=10`,
  { headers: { "x-api-key": process.env.AGENTSEND_API_KEY } }
);

const { data, total } = await res.json();

for (const msg of data) {
  console.log(msg.fromAddress, msg.subject, msg.bodyText);
}
💡

Sử dụng webhooks thay vì polling để được thông báo ngay khi có tin nhắn mới đến. Polling là phương án dự phòng tốt cho các script đơn giản và tác vụ ngắn.

HTML và Văn Bản Thuần

AgentSend hỗ trợ email văn bản thuần, HTML, và multipart. Sử dụng bodyText cho văn bản thuần và bodyHtml cho nội dung HTML.

💡

Luôn bao gồm phiên bản bodyText cùng với bodyHtml. Điều này cải thiện khả năng giao email, khả năng tiếp cận, và khả năng tương thích với email client dạng văn bản thuần.

Xóa Tin Nhắn

DELETE /messages/{id}

Xóa một tin nhắn theo ID. Điều này xóa bản ghi tin nhắn khỏi AgentSend. Nó không thu hồi một email đã được giao khỏi hộp thư người nhận.

javascript
await fetch(`https://api.agentsend.io/messages/${messageId}`, {
  method: "DELETE",
  headers: { "x-api-key": process.env.AGENTSEND_API_KEY },
});

Xóa một tin nhắn là vĩnh viễn. Tin nhắn đến là một phần của chuỗi hội thoại đang hoạt động nên được xóa cẩn thận, vì lịch sử chuỗi sẽ không đầy đủ.