Chuyển tới nội dung
MarcommAI
Dành cho nhà phát triển

Kết nối hệ thống của bạn với Marcomm AI

Đọc bản tin tổng hợp, tin nghiêm trọng và các mục đang chờ phê duyệt từ hệ thống của bạn, rồi phê duyệt hoặc từ chối ngay trong công cụ phê duyệt riêng. API có sẵn từ gói Team trở lên, sau một bước xem xét ngắn.

Bắt đầu

  1. 1
    Đăng ký quyền truy cập

    Mô tả hệ thống của bạn và chọn dữ liệu cần dùng. Chúng tôi xem xét từng đơn đăng ký.

  2. 2
    Tạo khóa

    Sau khi được duyệt, hãy tạo khóa tại Cài đặt, API. Khóa chỉ hiển thị một lần, vì vậy hãy lưu vào hệ thống của bạn.

  3. 3
    Gửi yêu cầu

    Gửi khóa trong header Authorization rồi gọi bất kỳ endpoint nào bên dưới.

Yêu cầu mẫu

curl https://app.marcomm.works/api/v1/news/digest?days=7 \
  -H "Authorization: Bearer mc_live_..."

Xác thực

Gửi khóa dưới dạng token Bearer trong mỗi yêu cầu. Khóa cá nhân hoạt động với tư cách người tạo ra nó, nên có thể đọc và quyết định các mục phê duyệt nhân danh người đó. Khóa không gian làm việc do quản trị viên tạo và chỉ có quyền đọc. Khóa có thể hết hạn, giới hạn theo địa chỉ IP và xoay vòng: sau khi xoay vòng, khóa cũ vẫn dùng được thêm 24 giờ.

Phạm vi quyền

Mỗi khóa chỉ mang các phạm vi mà đơn đăng ký của bạn được duyệt.

news
Bản tin tổng hợp, bài viết và cơ quan báo chí.
crisis
Tin nghiêm trọng và sự cố khủng hoảng.
approvals
Các mục chờ phê duyệt, cùng việc phê duyệt hoặc từ chối chúng bằng khóa cá nhân.
content
Đọc thông cáo báo chí và bài blog.

Endpoint

Đường dẫn bắt đầu bằng /api/v1. Endpoint đọc dùng GET và nhận tham số truy vấn. Phản hồi là JSON có dạng {"data": ...}.

Phương thứcĐường dẫnPhạm viChức năng
GET/api/v1/news/digestnewsLượng tin, sắc thái và các cơ quan báo chí hàng đầu trong một giai đoạn.
GET/api/v1/news/articlesnewsTìm kiếm tin tức.
GET/api/v1/news/outletsnewsCác cơ quan báo chí đưa tin về công ty của bạn.
GET/api/v1/crisis/incidentscrisisSự cố khủng hoảng và các bài báo nghiêm trọng.
GET/api/v1/approvalsapprovalsThông cáo báo chí và bài blog đang chờ chủ khóa, cùng những mục chủ khóa đã yêu cầu phê duyệt.
GET/api/v1/press-releasescontentLiệt kê thông cáo báo chí.
GET/api/v1/press-releases/{id}contentMột thông cáo báo chí kèm đoạn dẫn và nội dung.
GET/api/v1/blog-postscontentLiệt kê bài blog.
GET/api/v1/blog-posts/{id}contentMột bài blog kèm nội dung.
POST/api/v1/approvals/press-releases/{id}approvalsPhê duyệt hoặc từ chối thông cáo báo chí đang chờ chủ khóa.
POST/api/v1/approvals/blog-posts/{id}approvalsPhê duyệt hoặc từ chối bài blog đang chờ chủ khóa.

Phê duyệt và từ chối

Gửi {"decision": "approve"} hoặc {"decision": "reject", "comment": "..."} tới mục cần xử lý. Từ chối cần có nhận xét. Quyết định tuân theo cùng quy tắc như trong ứng dụng và Slack, và được ghi nhận dưới tên chủ khóa. Khi nội dung có cụm từ cần xác nhận, bạn sẽ nhận 409 confirmation_required kèm các cảnh báo, và có thể gửi lại yêu cầu với "force": true.

curl -X POST https://app.marcomm.works/api/v1/approvals/press-releases/<id> \
  -H "Authorization: Bearer mc_live_..." \
  -H "Content-Type: application/json" \
  -d '{"decision":"reject","comment":"Please fix the headline."}'

Giới hạn tốc độ

Giới hạn được đặt theo từng không gian làm việc, theo phút và theo ngày (UTC). Các phản hồi đều kèm các header bên dưới. Khi vượt giới hạn, bạn nhận 429 cùng Retry-After. Để tăng giới hạn, hãy gửi yêu cầu tại Cài đặt, API. Đội ngũ của chúng tôi sẽ xem xét.

X-RateLimit-Limit
Số yêu cầu được phép mỗi phút.
X-RateLimit-Remaining
Số yêu cầu còn lại trong phút hiện tại.
X-RateLimit-Reset
Thời điểm Unix khi cửa sổ phút được đặt lại.
X-RateLimit-Day-Limit
Số yêu cầu được phép mỗi ngày.
X-RateLimit-Day-Remaining
Số yêu cầu còn lại trong hôm nay.
Retry-After
Số giây cần chờ trước khi thử lại. Chỉ có với 429.

Lỗi

Lỗi được trả về dưới dạng JSON có dạng {"error": {"code": ..., "message": ...}}.

MãTrạng tháiÝ nghĩa
invalid_key401Khóa bị thiếu, sai định dạng hoặc đã bị thu hồi.
expired401Khóa đã hết hạn. Hãy tạo khóa mới hoặc xoay vòng khóa.
ip_denied403Khóa bị giới hạn ở các địa chỉ IP khác.
plan_required403Không gian làm việc không thuộc gói Team trở lên.
access_required403Quyền truy cập API chưa được duyệt cho không gian làm việc này.
suspended403Quyền truy cập API của không gian làm việc này đang bị tạm ngừng.
scope_denied403Khóa không có phạm vi mà endpoint này yêu cầu.
personal_key_required403Chỉ khóa cá nhân mới có thể phê duyệt hoặc từ chối.
denied403Vai trò của chủ khóa không cho phép thao tác này.
unknown_endpoint404Không có endpoint như vậy.
comment_required400Cần có lý do để từ chối.
confirmation_required409Các cảnh báo cần được xác nhận. Gửi lại với force đặt là true.
rate_limited429Đã vượt giới hạn mỗi phút.
daily_limit429Đã đạt giới hạn mỗi ngày.

Webhook

Cảnh báo, yêu cầu phê duyệt và bản tin buổi sáng cũng có thể được đẩy tới hệ thống của bạn. Thêm đích nhận tại Cài đặt, API, Webhook. Mỗi yêu cầu là JSON với các trường event (alert, approval hoặc briefing), workspace, title, text, url, data và sentAt. Yêu cầu phê duyệt mang data.kind (press_release, blog hoặc event) và data.id, dùng để đọc và quyết định qua API.

Các yêu cầu đều được ký. Hãy tính HMAC-SHA256 của nội dung thô của yêu cầu bằng khóa bí mật ký của bạn rồi so sánh với header X-Marcomm-Signature có dạng sha256=<hex>. Từ chối những yêu cầu không khớp.

Xác minh Webhook trong Node.js

import { createHmac, timingSafeEqual } from 'node:crypto';

export function isFromMarcomm(rawBody: string, signature: string, secret: string) {
  const expected = 'sha256=' + createHmac('sha256', secret).update(rawBody).digest('hex');
  const a = Buffer.from(expected);
  const b = Buffer.from(signature);
  return a.length === b.length && timingSafeEqual(a, b);
}

Hướng dẫn kết nối

Phê duyệt từ hệ thống phê duyệt của bạn

  1. Thêm một đích Webhook chung và bật yêu cầu phê duyệt.
  2. Khi Webhook phê duyệt tới, hãy xác minh chữ ký và đọc data.kind cùng data.id.
  3. Hiển thị yêu cầu trong hệ thống phê duyệt của bạn. Nếu cần nội dung, hãy đọc bằng GET press-releases/{id} hoặc blog-posts/{id}.
  4. Gửi quyết định bằng khóa cá nhân của người quyết định. Sự kiện và việc gửi email được quyết định trong ứng dụng qua liên kết trong tin nhắn.

Đưa bản tin tổng hợp vào bảng điều khiển của bạn

  1. Tạo khóa không gian làm việc với các phạm vi news và crisis.
  2. Gọi news/digest theo lịch, chẳng hạn mỗi sáng.
  3. Nếu muốn cảnh báo riêng, hãy gọi crisis/incidents thường xuyên hơn. Theo dõi các header X-RateLimit để không vượt giới hạn.

Cảnh báo trong ứng dụng chat của bạn

  1. Với Teams và Google Chat, hãy tạo URL Webhook của phòng rồi thêm làm đích nhận tại Cài đặt, API, Webhook.
  2. Với JANDI, Dooray! và Chatwork, hãy kết nối tại Cài đặt, Tích hợp.
  3. Chọn đích nhận sẽ nhận loại nào trong cảnh báo, yêu cầu phê duyệt và bản tin buổi sáng, rồi gửi tin nhắn thử.

Sẵn sàng kết nối?

Chủ sở hữu hoặc quản trị viên không gian làm việc gửi đăng ký tại Cài đặt, API. Bạn sẽ nhận thông báo qua email và trong ứng dụng khi quá trình xem xét hoàn tất.

Mở cài đặt API