Tách đơn hàng từ tin nhắn API
Biến bình luận, tin nhắn chốt đơn ("chốt 2 áo đen size M, ship 12 Lê Lợi…, 0909…") thành đơn hàng: SĐT, tên, địa chỉ, sản phẩm, thanh toán, ghi chú.
Gửi nội dung bình luận Facebook / Zalo / livestream hoặc tin nhắn, API trả về đơn hàng có cấu trúc: số điện thoại khách (chuẩn hoá, E.164, nhà mạng), tên (sau "tên:", "người nhận" hoặc danh xưng chị / anh), địa chỉ giao hàng được quy về phường, xã và tỉnh hiện hành bằng chính bộ máy của /v1/address-parse (địa chỉ cũ 3 cấp được chuyển sang đơn vị sau 07/2025), danh sách sản phẩm kèm số lượng, size, màu, hình thức thanh toán (COD, chuyển khoản, đã thanh toán) và ghi chú giao hàng ("giao giờ hành chính", "gọi trước").
Không có danh mục, API đọc mã sản phẩm (A12 x2, MS05 sl 3, #23) và mô tả tự do ("2 áo đen size M"). Có catalog ([{"sku", "name", "aliases"?, "price"?}], tối đa 500 mục), API khớp mã, tên và tên gọi khác (không phân biệt dấu, hoa thường, chấp nhận tên viết thiếu) và tính thành tiền. Mỗi trường có confidence; is_order cho biết tin nhắn có phải chốt đơn không.
Tách theo quy tắc, không dùng AI và không lưu dữ liệu: nhanh và ổn định, nhưng tin nhắn quá lộn xộn vẫn có thể đọc sai, nên duyệt lại các trường có độ tin cậy thấp. Với tin nhắn nhiều teencode, chuẩn hoá trước bằng /v1/vn-teencode. Xử lý hàng loạt tới 100 tin bằng messages.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
text | body|query | string | có | Tin nhắn hoặc bình luận (tối đa 3.000 ký tự). Hoặc messages: mảng tối đa 100 tin. | |
catalog | body | array | không | Danh mục sản phẩm [{"sku", "name", "aliases"?: [...], "price"?}] (tối đa 500) để khớp mã, tên và tính tiền. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/vn-order-extract" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"chốt 2 áo đen size M + 1 quần L, ship 12 Lê Lợi P. Bến Thành, Q1, TPHCM, 0909 123 456, COD"}'const res = await fetch('https://apibox.io.vn/v1/vn-order-extract', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"text": "chốt 2 áo đen size M + 1 quần L, ship 12 Lê Lợi P. Bến Thành, Q1, TPHCM, 0909 123 456, COD"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/vn-order-extract",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"text": "chốt 2 áo đen size M + 1 quần L, ship 12 Lê Lợi P. Bến Thành, Q1, TPHCM, 0909 123 456, COD"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-order-extract');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"text":"chốt 2 áo đen size M + 1 quần L, ship 12 Lê Lợi P. Bến Thành, Q1, TPHCM, 0909 123 456, COD"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"is_order": true,
"customer": {
"name": null,
"phone": {
"number": "0909123456",
"e164": "+84909123456",
"network": "MobiFone",
"type": "mobile"
},
"other_phones": []
},
"address": {
"text": "12 Lê Lợi P. Bến Thành, Q1, TPHCM",
"matched": true,
"ambiguous": false,
"format": "old (before 07/2025)",
"ward": "Phường Bến Thành",
"ward_code": "26743",
"province": "Thành phố Hồ Chí Minh",
"province_code": "79",
"postal_code": "71009",
"full_address": "12 Lê Lợi, Phường Bến Thành, Thành phố Hồ Chí Minh",
"converted_from": {
"code": "26743",
"name": "Phường Bến Thành",
"change": "Nhập toàn bộ",
"district": "Quận 1",
"district_code": "760",
"province": "Thành phố Hồ Chí Minh",
"province_code": "79"
}
},
"items": [
{
"sku": null,
"name": "áo đen",
"text": "2 áo đen size M",
"quantity": 2,
"size": "M",
"color": "đen",
"unit_price": null,
"line_total": null,
"matched": "free_text",
"confidence": 0.45
},
{
"sku": null,
"name": "quần",
"text": "1 quần L",
"quantity": 1,
"size": "L",
"color": null,
"unit_price": null,
"line_total": null,
"matched": "free_text",
"confidence": 0.45
}
],
"total": null,
"payment": "cod",
"notes": [],
"confidence": {
"phone": 0.95,
"payment": 0.85,
"address": 0.9,
"items": 0.45
}
}
Ứng dụng
- Biến bình luận livestream thành đơn nháp
- Điền form đặt hàng của chatbot từ một tin nhắn
- Điền sẵn SĐT và địa chỉ mới vào phần mềm quản lý đơn từ Zalo
- Đếm số đơn theo sản phẩm từ file bình luận
Hỏi đáp
Có dùng AI không?
Không. Đây là bộ tách theo quy tắc (mẫu số điện thoại, từ khoá địa chỉ, bộ phân tích địa chỉ, mẫu mã sản phẩm và số lượng), cùng đầu vào luôn cho cùng kết quả.
Địa chỉ cũ có được chuyển đổi không?
Có: địa chỉ có quận / huyện được chuyển sang phường, xã và tỉnh hiện hành theo bảng chuyển đổi chính thức, giống /v1/address-parse.
Làm sao khớp với sản phẩm của shop?
Gửi catalog gồm mã, tên và tên gọi khác; việc khớp không phân biệt dấu và hoa thường, có giá thì API tính thành tiền và tổng đơn.
API liên quan
So sánh văn bản
So sánh hai đoạn văn bản theo dòng, từ, ký tự, câu hoặc JSON; nhận danh sách thay đổi, tỉ lệ giống nhau và bản diff dạng unified.
a-bTạo slug
Chuyển tiêu đề thành slug URL gọn gàng: bỏ dấu tiếng Việt (cả chữ đ), tuỳ chọn ký tự phân cách, giữ chữ hoa và giới hạn độ dài.
123Thống kê văn bản
Đếm số từ, ký tự, câu, đoạn và dòng; ước tính thời gian đọc và thời gian nói; liệt kê các từ xuất hiện nhiều nhất trong văn bản.