DEV Community

Cover image for Gửi SMS và WhatsApp Nhanh Hơn với API Sent.dm
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Gửi SMS và WhatsApp Nhanh Hơn với API Sent.dm

Dưới đây là bản dịch tiếng Việt của HTML đã cung cấp:

Dùng thử Apidog ngay hôm nay

TL;DR / Câu trả lời nhanh

API Sent.dm cung cấp một điểm tích hợp duy nhất cho tin nhắn doanh nghiệp qua SMS và WhatsApp. Khi kết hợp Sent với Apidog, bạn có thể lưu trữ thông tin xác thực trong các môi trường, kiểm thử yêu cầu mà không cần tự viết script, xác thực payload webhook và ghi lại toàn bộ quy trình nhắn tin ở một nơi tập trung.

Giới thiệu

Hầu hết các dự án nhắn tin đều chậm lại ở cùng một điểm: API không khó, nhưng các chi tiết triển khai chồng chất rất nhanh. Bạn cần quản lý khóa API, nhận diện người gửi, ID mẫu, bảo mật webhook, quy tắc kênh và kiểm thử thật rõ ràng mà không gửi tin nhắn "mù quáng".

Sent.dm giải quyết vấn đề này bằng cách cung cấp một API nhắn tin thống nhất cho SMS và các kênh như WhatsApp, xử lý logic định tuyến và phân phối qua một giao diện duy nhất. Theo tài liệu công khai của Sent (26/03/2026), nền tảng này hỗ trợ xác minh tài khoản, thiết lập kênh, gửi dựa trên mẫu, quản lý danh bạ, sự kiện webhook và playground thử nghiệm.

💡 Nếu muốn đơn giản hóa thiết lập, Apidog là công cụ cực kỳ mạnh. Bạn có thể nhập tham chiếu API Sent, tạo environment dùng cho x-api-keyx-sender-id, xây dựng kịch bản kiểm thử cho gửi tin và xử lý webhook, đồng thời chia sẻ với cả team. Tải Apidog miễn phí để làm theo hướng dẫn này.

API Sent.dm giải quyết vấn đề gì

Sent.dm được xây dựng cho các team muốn tiếp cận người dùng qua nhiều kênh nhắn tin mà không phải duy trì tích hợp riêng biệt với từng nhà cung cấp. Sent trừu tượng hóa phức tạp này thành một nền tảng duy nhất.

Sent.dm workflow

Theo tài liệu chính thức, bạn sẽ có:

  • Một URL API base cho mọi workflow tin nhắn
  • Xác thực qua header x-api-key
  • Nhận diện người gửi bằng x-sender-id
  • Gửi tin dựa trên mẫu (template)
  • Quản lý danh bạ và đối tượng
  • Webhook cho event phân phối và mẫu
  • Routing thông minh, chuyển đổi dự phòng

Điều này giúp bạn có:

  • Payload nhất quán
  • Tái sử dụng mẫu an toàn
  • Theo dõi event gửi/thất bại/đang chờ
  • Quy trình kiểm thử không lộ bí mật lên frontend
  • Tài liệu rõ ràng cho dev/QA

Chuỗi thực tế là:

Ứng dụng -> API tin nhắn -> Quy tắc kênh -> Sự kiện phân phối -> Logic thử lại / Trạng thái
Enter fullscreen mode Exit fullscreen mode

Nếu mỗi phần nằm ở một công cụ khác, việc debug rất chậm. Cách tốt nhất: mô hình hóa toàn bộ luồng trong một nền tảng API như Apidog ngay từ đầu.

Cách API Sent.dm hoạt động

Tài liệu Sent mô tả nền tảng như một middleware thông minh giữa ứng dụng và các kênh nhắn tin. Ứng dụng gửi yêu cầu, Sent tự chọn kênh và logic phù hợp.

Các bước quan trọng:

1. Thiết lập tài khoản và tuân thủ

Bắt đầu bằng tạo tài khoản, xác minh KYC và thiết lập doanh nghiệp. Bắt buộc do các quy tắc về danh tiếng người gửi, pháp lý và khu vực.

2. Thiết lập kênh

Bạn cần chọn số điện thoại, kết nối WhatsApp Business. Nên dùng cùng số cho SMS và WhatsApp để giữ nhận diện thương hiệu.

3. Mẫu (Template)

Phải tạo mẫu trước khi gửi API đầu tiên. Nhắn tin dựa trên mẫu là mặc định, không phải ngoại lệ.

4. Thông tin xác thực API

Hai header quan trọng:

x-sender-id: YOUR_SENDER_ID
x-api-key: YOUR_API_KEY
Enter fullscreen mode Exit fullscreen mode

API v3 dùng x-api-key bắt buộc. Kiểm tra kỹ yêu cầu header phù hợp với phiên bản endpoint và workspace.

5. Yêu cầu tin nhắn

Ví dụ endpoint:

POST https://api.sent.dm/v2/messages/phone
Enter fullscreen mode Exit fullscreen mode

Payload:

{
  "phoneNumber": "SỐ_ĐIỆN_THOẠI_NGƯỜI_NHẬN",
  "templateId": "ID_MẪU"
}
Enter fullscreen mode Exit fullscreen mode

Điều quan trọng là ưu tiên gửi dựa trên template trước, sau đó mới mở rộng workflow.

Gửi yêu cầu API Sent.dm đầu tiên

Xây dựng yêu cầu đầu tiên sao cho kiểm thử và bảo trì dễ dàng.

Ví dụ cURL

curl -X POST "https://api.sent.dm/v2/messages/phone" \
  -H "x-sender-id: ID_NGƯỜI_GỬI_CỦA_BẠN" \
  -H "x-api-key: KHÓA_API_CỦA_BẠN" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumber": "SỐ_ĐIỆN THOẠI_NGƯỜI_NHẬN",
    "templateId": "ID_MẪU"
  }'
Enter fullscreen mode Exit fullscreen mode

Ví dụ JavaScript

const response = await fetch("https://api.sent.dm/v2/messages/phone", {
  method: "POST",
  headers: {
    "x-sender-id": process.env.SENT_SENDER_ID,
    "x-api-key": process.env.SENT_API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    phoneNumber: process.env.TEST_PHONE_NUMBER,
    templateId: process.env.SENT_TEMPLATE_ID
  })
});

if (!response.ok) {
  throw new Error(`Yêu cầu Sent thất bại: ${response.status}`);
}

const data = await response.json();
console.log(data);
Enter fullscreen mode Exit fullscreen mode

Ví dụ Python

import os
import requests

response = requests.post(
  "https://api.sent.dm/v2/messages/phone",
  headers={
    "x-sender-id": os.environ["SENT_SENDER_ID"],
    "x-api-key": os.environ["SENT_API_KEY"],
    "Content-Type": "application/json",
  },
  json={
    "phoneNumber": os.environ["TEST_PHONE_NUMBER"],
    "templateId": os.environ["SENT_TEMPLATE_ID"],
  },
  timeout=30,
)

response.raise_for_status()
print(response.json())
Enter fullscreen mode Exit fullscreen mode

Response thành công trả về HTTP 200messageId. Hãy lưu lại messageId cho các bước kiểm thử tiếp theo.

Kiểm thử API Sent.dm với Apidog

Apidog không chỉ là trình chạy request. Khi làm việc với API nhắn tin, bạn cần quản lý request, biến, xác nhận test, tài liệu và chia sẻ cho nhóm – tất cả tại một nơi.

Apidog Sent environment

Bước 1: Tạo môi trường Sent

Tạo environment với biến:

base_url = https://api.sent.dm
sender_id = ID_NGƯỜI_GỬI_CỦA_BẠN
api_key = KHÓA_API_CỦA_BẠN
template_id = ID_MẪU_CỦA_BẠN
test_phone = SỐ_ĐIỆN_THOẠI_NGƯỜI_NHẬN
Enter fullscreen mode Exit fullscreen mode

Lợi ích:

  1. Tránh hardcode secret.
  2. Chuyển đổi giữa sandbox và production nhanh.
  3. Chia sẻ bộ sưu tập an toàn cho nhiều người.

Bước 2: Xây dựng request một lần

Tạo request mới với:

  • Phương thức: POST
  • URL: {{base_url}}/v2/messages/phone
  • Header:
    • x-sender-id: {{sender_id}}
    • x-api-key: {{api_key}}
    • Content-Type: application/json
  • Payload:
{
  "phoneNumber": "{{test_phone}}",
  "templateId": "{{template_id}}"
}
Enter fullscreen mode Exit fullscreen mode

Bước 3: Thêm xác nhận

Thêm test xác nhận kết quả trong Apidog.

pm.test("Trạng thái là 200", function () {
  pm.response.to.have.status(200);
});

pm.test("Phản hồi chứa một messageId", function () {
  const json = pm.response.json();
  pm.expect(json.messageId).to.exist;
});
Enter fullscreen mode Exit fullscreen mode

Bước 4: Biến thành kịch bản

Xây dựng workflow:

  1. Gửi tin nhắn
  2. Lưu messageId
  3. Truy vấn trạng thái nếu có
  4. So sánh event nhận qua webhook

Lưu ý: Thành công HTTP 200 chỉ là bước đầu, cần xác thực pha phân phối, retry, đồng bộ event.

Bước 5: Thêm ví dụ webhook vào cùng collection

Lưu ví dụ payload webhook, ví dụ:

{
  "field": "message.status",
  "messageId": "msg_123",
  "status": "delivered",
  "channel": "whatsapp"
}
Enter fullscreen mode Exit fullscreen mode

Điều này hỗ trợ dev backend, QA, support cùng kiểm thử và hiểu trạng thái API.

Bước 6: Xuất bản tài liệu nội bộ

Xuất bản collection với:

  • Header bắt buộc
  • Payload mẫu
  • Lỗi thường gặp
  • Event webhook
  • Ghi chú environment

Tài liệu này giúp onboarding, debug và kiểm thử lặp lại dễ dàng.

Xử lý mẫu, danh bạ, webhook đúng chuẩn

Sau khi gửi được request thành công, hãy chuẩn hóa quy trình:

Mẫu

  • Lưu templateId trong biến môi trường/cấu hình
  • Gắn nhãn mẫu: mục đích, locale, trạng thái phê duyệt
  • Phân tách rõ mẫu test và production
  • Ghi chú mẫu nào cho user flow nào

Apidog cho phép lưu ví dụ cho từng mẫu đã approve.

Danh bạ

  • Xác định hệ thống nguồn dữ liệu danh bạ
  • Chuẩn hóa số điện thoại
  • Lưu trạng thái opt-in/consent
  • Xử lý thay đổi kênh của liên hệ

Đây là nền tảng cho compliance và gửi chính xác.

Webhook

Sent sử dụng xác thực chữ ký HMAC-SHA256 với header:

  • x-webhook-signature
  • x-webhook-id
  • x-webhook-timestamp

Chữ ký dạng v1,{base64_signature}, khuyến nghị chống replay trong 5 phút.

Checklist:

  1. Đọc raw body request
  2. Xác thực signature trước khi parse
  3. Từ chối timestamp quá cũ
  4. Xử lý event bất biến
  5. Trả lời nhanh, chuyển việc nặng sang background

Ví dụ xác thực webhook với Express:

import crypto from "crypto";
import express from "express";

const app = express();

app.post("/webhooks/sent", express.raw({ type: "*/*" }), (req, res) => {
  const signature = req.header("x-webhook-signature");
  const webhookId = req.header("x-webhook-id");
  const timestamp = req.header("x-webhook-timestamp");
  const secret = process.env.SENT_WEBHOOK_SECRET;
  const rawBody = req.body.toString("utf8");

  const signedContent = `${webhookId}.${timestamp}.${rawBody}`;
  const expected = crypto
    .createHmac("sha256", Buffer.from(secret.replace(/^whsec_/, ""), "base64"))
    .update(signedContent)
    .digest("base64");

  if (signature !== `v1,${expected}`) {
    return res.status(401).send("Không được phép");
  }

  const event = JSON.parse(rawBody);
  console.log("Đã nhận sự kiện webhook:", event.field);

  return res.sendStatus(200);
});
Enter fullscreen mode Exit fullscreen mode

Lưu mẫu payload webhook trong Apidog để các nhóm backend, frontend, QA cùng dùng.

Tại sao Apidog phù hợp cho workflow này

Sent.dm là lớp nhắn tin, Apidog là lớp quản lý, kiểm thử và tài liệu cho workflow API.

Nhiệm vụ Sent.dm Apidog (kết hợp)
Gửi tin SMS/WhatsApp Kiểm thử API
Quản lý mẫu/người gửi Tài liệu/xác thực
Kiểm thử request xác thực Playground Request builder, env, test
Chia sẻ tài liệu API Docs Collection, docs nhóm
Gỡ lỗi luồng request/response Một phần Lặp lại/cộng tác
Kiểm thử end-to-end Tập trung nhắn tin Workflow nhiều bước

Nếu team đánh giá Sent cho nhắn tin ứng dụng, Apidog cung cấp thêm:

  • Bộ sưu tập request có thể tái sử dụng
  • QA test API mà không cần script ad-hoc
  • Kiểm thử lặp lại version, template, webhook

Tải Apidog miễn phí để kiểm thử Sent.dm, lưu trữ môi trường an toàn và biến thành workflow team tái sử dụng.

Mẹo nâng cao & lỗi thường gặp

Khi đã gửi/nhận thành công, hãy áp dụng các best practice sau:

Các phương pháp hay nhất

  1. Chỉ lưu thông tin xác thực phía server (Sent cảnh báo không lộ API key lên client).
  2. Theo dõi messageId trong log và tool hỗ trợ.
  3. Phân biệt mẫu staging và production.
  4. Xác thực mọi webhook trước khi xử lý.
  5. Dùng environment Apidog để cách ly secret thật và test.

Những lỗi thường gặp

  1. Xem HTTP 200 là đã giao thành công (chưa đủ, cần theo dõi event).
  2. Hardcode ID mẫu ở nhiều nơi.
  3. Để quên thiết lập sender cho đến cuối.
  4. Không chuẩn hóa số điện thoại.
  5. Kiểm thử với secret thật trong script cục bộ.

Điểm kiểm tra khi lỗi

  1. x-api-key hợp lệ/chạy tốt chưa?
  2. Endpoint có đúng version/workspace?
  3. Đường dẫn cần x-sender-id không?
  4. Mẫu đã approve và active cho kênh chưa?
  5. Số điện thoại gửi đúng định dạng?

So sánh request lỗi với request đã lưu trong Apidog để xác định nguyên nhân nhanh.

Các lựa chọn thay thế & so sánh Sent.dm

Khi đánh giá Sent.dm, bạn có thể cân nhắc:

Tùy chọn Điểm mạnh Đánh đổi
Nhà cung cấp SMS/WhatsApp trực tiếp Kiểm soát chi tiết Tích hợp/bảo trì phức tạp
Ngăn xếp kiểu Twilio Hệ sinh thái rộng Điều phối đa kênh phức tạp
Sent.dm Workflow nhắn tin thống nhất, trừu tượng kênh Phụ thuộc convention/tài liệu Sent
Sent.dm + Postman Luồng kiểm thử quen thuộc Tài liệu/cộng tác workflow phân mảnh
Sent.dm + Apidog Nhắn tin thống nhất + kiểm thử, tài liệu mạnh Hai công cụ thay vì một

Thiết lập tối ưu là kết hợp nền tảng phân phối (Sent) với lớp cộng tác API (Apidog). Nếu bạn đã dùng Postman, Apidog bổ sung: environment, docs đã lưu, xác nhận, kế hoạch mô phỏng và chuyển giao nhóm trong một workspace.

Kết luận

Sent.dm là API nhắn tin mạnh cho team muốn hợp nhất SMS & WhatsApp. Lợi ích lớn là bạn kiểm thử và xây dựng quy trình mẫu, sender, danh bạ, webhook có cấu trúc, không dựa vào script rời rạc.

Hãy bắt đầu bằng request Sent đầu tiên trong Apidog, thêm xác nhận messageId, ghi lại contract webhook trong cùng workspace – bạn sẽ có workflow sạch, dễ mở rộng từ prototype đến production.

Câu hỏi thường gặp

API Sent.dm dùng để làm gì?

Gửi tin nhắn doanh nghiệp qua SMS, WhatsApp bằng một tích hợp duy nhất. Hỗ trợ thiết lập sender, mẫu, danh bạ, xử lý event webhook.

Sent.dm có hỗ trợ WhatsApp & SMS qua một API không?

Có. Sent là API thống nhất, trừu tượng sự phức tạp từng kênh. Tài liệu khuyến nghị dùng cùng số cho SMS và WhatsApp.

Cần header nào cho request Sent.dm?

x-api-key là xác thực chính, x-sender-id dùng cho gửi tin. Kiểm tra phiên bản endpoint trong tài khoản Sent trước khi triển khai.

Có cần mẫu trước khi gửi tin không?

Có, với luồng khởi tạo. Phải tạo mẫu trước rồi gửi tin với templateId.

Làm sao kiểm thử Sent.dm mà không viết script?

Dùng Apidog để lưu thông tin xác thực, lưu request, thêm xác nhận, build nhiều step workflow, lưu webhook, xuất bản tài liệu API cho team.

Bảo mật webhook Sent.dm thế nào?

Xác thực chữ ký HMAC, xác thực timestamp, xử lý event bất biến. Sent dùng header: x-webhook-signature, x-webhook-id, x-webhook-timestamp.

Sent.dm có đủ cho quy trình API nhóm không?

Chỉ là lớp nhắn tin. Để kiểm thử, tài liệu, xác thực lặp lại nên dùng thêm công cụ cộng tác API như Apidog.


(Images, videos, bảng và các liên kết được giữ nguyên như bản gốc. Mọi liên kết tới apidog.com đã được gắn UTM.)

Top comments (0)