Giới thiệu 3NS API
3NS API cho phép doanh nghiệp quản lý các mẫu thông báo của OA và tương tác với khách hàng thông qua số điện thoại liên kết với tài khoản Zalo sử dụng các mẫu thông báo đã đăng kí với Zalo.
Tạo API Key
1. Truy cập vào Zalo Official Account > API Key
2. Nhập tên Token và bấm nút Tạo mới
3. Copy và lưu lại Token
Cách sử dụng
Ở phần header, chúng tôi sẽ sử dụng API Key trong trường Authorization với giá trị như sau: "Bearer [API KEY]"
Ví dụ
curl --location --request GET 'https://api.3ns.com.vn/profile --header 'Authorization: Bearer [API_KEY]'
Lưu ý:
+ API Key không có thời gian hết hạn sử dụng. Bạn có thể thu hồi ở trang Zalo Official Account > API Key
API Lấy thông tin tài khoản
API cho phép đối tác truy xuất thông tin của doanh nghiệp/tài khoản.
URL: https://api.3ns.com.vn/profile
Method: GET
Content Type: application/json
Response Type: application/json
Example request
curl --location --request GET 'https://api.3ns.com.vn/profile' --header 'Authorization: Bearer [API_KEY]'
Example response
{
"error": 0,
"message": "Success",
"data": { "id": 1000, "oa_id": "764023222428847626", "name": "3NS TEST", "description": "Zalo OA Test ZNS (3NS Agency)", "avatar": "https://s160-ava-talk.zadn.vn/c/2/9/7/1/160/2a2c46bcafa6936ac795e7e5de79fb8b.jpg", "cover": "https://cover-talk.zadn.vn/b/e/6/5/2/2a2c46bcafa6936ac795e7e5de79fb8b.jpg", "is_verified": true, "template_tags": "", "daily_quota": 500, "remaining_quota": 0,
"free_remaining_quota": 100,
"free_expired_datetime": 1692082112, "balance": "0", "status": "ACTIVE"
} }
API Lấy danh sách mẫu tin nhắn
URL: https://api.3ns.com.vn/templates
Method: GET
Content Type: application/json
Response Type: application/json
Example request
curl --location --request GET 'https://api.3ns.com.vn/templates' --header 'Authorization: Bearer [API_KEY]'
Example response
{
"error": 0,
"message": "Success",
"data": [
{ "id": 1000, "name": "Mã xác thực OTP", "status": "ENABLE", "list_params": [ { "name": "otp", "require": true, "type": "STRING", "maxLength": 10, "minLength": 0, "acceptNull": false } ], "timeout": 15000, "template_quality": "UNDEFINED", "template_tag": "TRANSACTION", "price": "300", "apply_template_quota": 0, "template_daily_quota": 0, "template_remaining_quota": 0
}
] }
API Lấy thông tin mẫu tin nhắn
URL: https://api.3ns.com.vn/templates/[template_id]
Method: GET
Content Type: application/json
Response Type: application/json
Example request
curl --location --request GET 'https://api.3ns.com.vn/templates' --header 'Authorization: Bearer [API_KEY]'
Example response
{
"error": 0,
"message": "Success",
"data": { "id": 1000, "name": "Mã xác thực OTP", "status": "ENABLE", "list_params": [ { "name": "otp", "require": true, "type": "STRING", "maxLength": 10, "minLength": 0, "acceptNull": false } ], "timeout": 15000, "template_quality": "UNDEFINED", "template_tag": "TRANSACTION", "price": "300", "apply_template_quota": 0, "template_daily_quota": 500, "template_remaining_quota": 0
} }
API Tạo mẫu tin nhắn ZNS
URL: https://api.3ns.com.vn/templates
Method: POST
Content Type: application/json
Response Type: application/json
Tham số | Kiểu dữ liệu | Tính bắt buộc | Mô tả | Ví dụ |
template_name | string | yes |
Tên của mẫu ZNS
Lưu ý:
+ Có độ dài từ 10 đến 60 ký tự
|
{ |
param_types | string | yes |
1: ZNS dạng bảng
2: ZNS văn bản
3: ZNS OTP
4: ZNS đánh giá dịch vụ
|
{ |
template_tag
|
string | yes |
TRANSACTION: Thông tin giao dịch —
CUSTOMER_CARE: Chăm sóc khách hàng —
PROMOTION: Thông báo ưu đãi đến khách hàng cũ
Note: Để đồng nhất với các thay đổi từ Zalo, các param đỏ là các trường sẽ không còn valid sau 0 giờ ngày 16/04/2024, được thay đổi tương ứng nhóm theo các param xanh. |
{ |
title
|
string | yes |
Lưu ý: + Có độ dài từ 9 đến 35 ký tự + Không chứa tham số, ngoại trừ ZNS bảng văn b |
{ |
buttons
|
array | no |
Lưu ý: + Chỉ áp dụng cho tin ZNS dạng bảng và ZNS dạng văn bản + Chi tiết tại đây |
{ "buttons": [ { "type": "1", "label": "Tìm hiểu thêm", "url": "http://3ns.com.vn", "desc": "Nhấp vào đây" }, { "type": "4", "label": "Truy cập Mini App", "url": "http://3ns.com.vn", "desc": "" } ] } |
paragraphs
|
array | yes |
Lưu ý: + Tối đa 4 đoạn, mỗi đoạn tối thiểu 9 ký tự. + Tổng tất cả các đoạn có tối đa 400 ký tự. + Tổng tối đa 3 tham số + Đối với tin ZNS OTP và tin ZNS đánh giá dịch vụ, tối đa 1 đoạn. |
{ "paragraphs": [ "Cám ơn <customer_name> đã tin tưởng." ] } |
rows
|
array | yes |
Lưu ý: + Chỉ áp dụng đối với ZNS dạng bảng + Tối thiểu 2 row + Tối đa 8 row |
{ "rows": [ { "key": "Mã đơn hàng", "value": "<order_code>" }, { "key": "Trạng thái", "value": "<payment_status>" }, { "key": "Giá tiền", "value": "<cost>" }, { "key": "Ghi chú", "value": "<note>" } ] } |
params
|
array | yes | Danh sách znsType
[ [ 'id' => 1, 'name' => 'Tên khách hàng (30)' ], [ 'id' => 2, 'name' => 'Số điện thoại (15)' ], [ 'id' => 3, 'name' => 'Địa chỉ (80)' ], [ 'id' => 4, 'name' => 'Mã số (30)' ], [ 'id' => 5, 'name' => 'Nhãn tuỳ chỉnh (30)' ], [ 'id' => 6, 'name' => 'OTP (10)' ], [ 'id' => 7, 'name' => 'Trạng thái giao dịch (30)' ], [ 'id' => 8, 'name' => 'Thông tin liên hệ (50)' ], [ 'id' => 9, 'name' => 'Giới tính / Danh xưng (5)' ], [ 'id' => 10, 'name' => 'Tên sản phẩm / Thương hiệu (100)' ], [ 'id' => 11, 'name' => 'Số lượng / Số tiền (20)' ], [ 'id' => 12, 'name' => 'Thời gian (20)' ] ] |
{ "params": [ { "name": "customer_name", "znsType": "1" }, { "name": "order_code", "znsType": "4" }, { "name": "payment_status", "znsType": "7" }, { "name": "cost", "znsType": "5" }, { "name": "note", "znsType": "5" } ] } |
postRowParagraphs
|
array | no |
Lưu ý: + Chỉ áp dụng cho tin ZNS dạng bảng và ZNS dạng văn bản + Tối đa 4 đoạn, mỗi đoạn tối thiểu 9 ký tự. + Tổng tối đa 3 tham số + Tất cả các đoạn có tối đa 400 ký tự. |
{ "postRowParagraphs": [ "Mọi thắc mắc vui lòng liên hệ Hotline" ]} |
ratings
|
array | yes | Yêu cầu bắt buộc mẫu ZNS Đánh giá
Lưu ý: + Chỉ áp dụng cho tin ZNS đánh giá dịch vụ
|
{ "ratings": [ { "star": "1", "title": "Rất không hài lòng" }, { "star": "2", "title": "Không hài lòng" }, { "star": "3", "title": "Bình thường" }, { "star": "4", "title": "Hài lòng" }, { "star": "5", "title": "Rất hài lòng" } ] } |
censorship_notes
|
string | no |
Ghi chú cho kiểm duyệt viên { "censorship_notes": "Vui lòng kiểm tra lại" } |
|
logos
|
array | yes |
Lưu ý: + Yêu cầu bắt buộc mẫu ZNS Văn bản và OTP + Kích thước bắt buộc 400x96px |
{ "logos": { "light": "https://app.3ns.com.vn/build/assets/logo.png", "dark": "https://app.3ns.com.vn/build/assets/logo.png" } } |
Example request
curl --location --request POST 'https://api.3ns.com.vn/templates' --header 'Authorization: Bearer [API_KEY]' --header 'Content-Type: application/json' --data '{"template_name":"ZNS Xác nhận đơn hàng","buttons":[{"type":"3","label":"Quan tâm OA"},{"type":"1","label":"Tìm hiểu thêm","url":"https://hua.com.vn","desc":"Gọi cho tôi"}],"title":"Xác nhận đơn hàng,","paragraphs":["Cám ơn <customer_name> đã tin tưởng. Chúng tôi đã nhận được yêu cầu đặt hàng của bạn. Thông tin chi tiết đơn hàng:"],"rows":[{"key":"Mã đơn","value":"<order_code>"},{"key":"Trạng thái","value":"<payment_status>"},{"key":"Giá tiền","value":"<cost>"},{"key":"Ghi chú","value":"<note>"}],"params":[{"name":"customer_name","znsType":"1"},{"name":"order_code","znsType":"4"},{"name":"payment_status","znsType":"7"},{"name":"cost","znsType":"5"},{"name":"note","znsType":"5"}],"postRowParagraphs":["Mọi thắc mắc vui lòng liên hệ Hotline nếu cần tư vấn thêm về các sản phẩm và dịch vụ khác. Trân trọng!"],"ratings":null,"param_types":"1","template_tag":"TRANSACTION","censorship_notes":"DEMO","logos":{"light":null,"dark":null}}'
Example response
{ "error": 0,
"message": "Success",
"data": { "id": 1021, "name": "Xác nhận đơn hàng,", "status": "DRAFT", "list_params": null, "timeout": null, "template_quality": null, "template_tag": null, "price": 300, "apply_template_quota": null, "template_daily_quota": null, "template_remaining_quota": null } }
{
"error": -109,
"message": "Vui lòng nhập chọn loại mẫu ZNS"
}
API Gửi tin nhắn ZNS
URL: https://api.3ns.com.vn/messages
Method: POST
Content Type: application/json
Response Type: application/json
Example request
curl --location --request POST 'https://api.3ns.com.vn/messages' --header 'Authorization: Bearer [API_KEY]' --header 'Content-Type: application/json' --data '{ "phone": "0123456789", "template_id": 1, "template_data": { "otp": "123456" } }'
Example response
{
"error": -115,
"message": "Tài khoản không đủ số dư"
}
{
"error": 0,
"message": "Success"
}
API Danh sách tin nhắn ZNS
URL: https://api.3ns.com.vn/messages
Method: GET
Content Type: application/json
Response Type: application/json
Example request
curl --location --request GET 'https://api.3ns.com.vn/messages?limit=100&offset=0' --header 'Authorization: Bearer [API_KEY]'
Example response
{
"error": 0,
"message": "Success"
"data": [
{
"id": "9a1ce4c8-259b-4dd6-98b2-d01ec4772737",
"phone": "84912345678",
"template_id": 12345678,
"template_data": {
"customer_name": "Nguyễn Văn A",
"order_id": "123456",
"order_date": "20/10/2023"
},
"status": "Hoàn thành",
"error": null,
"sent_time": "1694493336",
"delivery_time": "1694493338"
}
]}
API nạp tiền 3NS
URL: https://api.3ns.com.vn/deposits
Method: POST
Content Type: application/json
Response Type: application/json
Tham số | Kiểu dữ liệu | Tính bắt buộc | Mô tả |
amount
|
string | yes |
Là số tiền cần nạp. Tối thiếu 100.000đ Phải chia hết cho 1000đ |
redirect_url | string | yes | Redirect URL sau khi thanh toán thành công |
Example request
curl --location --request POST 'https://api.3ns.com.vn/deposits' --header 'Authorization: Bearer [API_KEY]' --header 'Content-Type: application/json' --data '{"amount": "100000","redirect_url": "http://3ns.com.vn"}'
Example response
{ "error": 0,
"message": "Success",
"data": { "redirect_url": "http://app.3ns.com.vn/platform/deposit/f4049f3f194e6da0036ac2ea612830c60c9d2237" } }
{
"error": -132,
"message": "Tham số không hợp lệ"
}
BẢNG MÃ LỖI
Mã lỗi | Mô tả |
0 | Gửi thành công |
-32 | Vượt quá giới hạn request/phút. |
-100 | Xảy ra lỗi không xác định, vui lòng thử lại sau |
-108 | Số điện thoại không hợp lệ |
-109 | ID mẫu ZNS không hợp lệ |
-110 | Phiên bản Zalo app không được hỗ trợ. Người dùng cần cập nhật phiên bản mới nhất |
-111 | Mẫu ZNS không có dữ liệu |
-112 | Nội dung mẫu ZNS không hợp lệ |
-113 | Button không hợp lệ |
-114 | Người dùng không nhận được ZNS vì các lý do: Trạng thái tài khoản, Tùy chọn nhận ZNS, Sử dụng Zalo phiên bản cũ, hoặc các lỗi nội bộ khác |
-115 | Tài khoản ZNS không đủ số dư |
-116 | Nội dung không hợp lệ |
-117 | OA hoặc ứng dụng gửi ZNS chưa được cấp quyền sử dụng mẫu ZNS này |
-118 | Tài khoản Zalo không tồn tại hoặc đã bị vô hiệu hoá |
-119 | Tài khoản không thể nhận ZNS |
-120 | OA chưa được cấp quyền sử dụng tính năng này |
-121 | Mẫu ZNS không có nội dung |
-122 | Body request không đúng định dạng JSON |
-124 | Mã truy cập không hợp lệ |
-125 | ID Official Account không hợp lệ |
-130 | Nội dung mẫu ZNS vượt quá giới hạn kí tự |
-131 | Mẫu ZNS chưa được phê duyệt |
-132 | Tham số không hợp lệ |
-133 | Mẫu ZNS này không được phép gửi vào ban đêm (từ 22h-6h) |
-135 | OA chưa có quyền gửi ZNS (chưa được xác thực, đang sử dụng gói miễn phí) |
-139 | Người dùng từ chối nhận loại ZNS này |
-140 | OA chưa được cấp quyền gửi ZNS hậu mãi cho người dùng này |
-141 | Người dùng từ chối nhận ZNS từ Official Account |
-144 | OA đã vượt giới hạn gửi ZNS trong ngày |
-145 | OA không được phép gửi loại nội dung ZNS này |
-146 | Mẫu ZNS này đã bị vô hiệu hoá do chất lượng gửi thấp |
-147 | Mẫu ZNS đã vượt giới hạn gửi trong ngày |