> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Tổng quan Webhooks

> Các endpoint Webhook API để đăng ký webhook nhận cập nhật về sự kiện

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

<PlansAvailable plans={["premium"]} maxPackRequired={false} />

## Webhook là gì?

Webhook cho phép bạn được thông báo khi các *action* hệ thống nhất định xảy ra thông qua một lệnh gọi đến URL mà bạn cung cấp. Webhook cũng được gọi là "URL Callbacks" hoặc "HTTP push calls". URL của bạn phải sử dụng SSL và bắt đầu bằng HTTPS.

<Card title="Webhook Actions" icon="link" href="/apis/webhooks/actions" horizontal>
  Xem các action có sẵn cho webhook.
</Card>

### Tìm hiểu Ayrshare Webhooks

Webhook được phân loại theo action cụ thể và *được đăng ký ở cấp Primary Profile hoặc User Profile*. Mọi cập nhật cho Primary hoặc User Profile trước tiên được gửi đến Webhook đã đăng ký cho User Profile. Nếu User Profile không có Webhook đã đăng ký, cập nhật sẽ được gửi đến Webhook đã đăng ký của Primary Profile.

Ví dụ:

<ul class="custom-bullets">
  <li>
    Nếu một User Profile có Webhook Social Action đã đăng ký và hủy liên kết TikTok,
    URL Webhook Social Action đã đăng ký cho User Profile sẽ được
    gọi. Webhook Primary Profile *sẽ không* được gọi.
  </li>

  <li>
    Nếu một User Profile hủy liên kết TikTok và *không có* Webhook Social
    Action đã đăng ký, nhưng Primary Profile có Webhook đã đăng ký, URL
    Webhook Social Action đã đăng ký cho Primary Profile sẽ được gọi.
  </li>
</ul>

### Đăng ký một Webhook

Đăng ký một Webhook bằng cách cung cấp URL endpoint và loại action cho endpoint POST [`/hook/webhook`](/apis/webhooks/register). Khi action xảy ra, một `HTTP POST` sẽ được gửi đến URL được cung cấp.
Ví dụ: đăng ký một URL để nhận thông báo về trạng thái của bài đăng đã lên lịch.

URL endpoint Webhook không nên sử dụng chuyển hướng và phải là URL đích cuối cùng.

Nếu bạn chỉ đăng ký webhook Primary Profile, các User Profile sẽ tự động kế thừa webhook Primary Profile.
Để có webhook duy nhất cho mỗi User Profile, bạn phải đăng ký một webhook cho mỗi User Profile.

<Note>
  Sau khi Webhook của bạn nhận được `HTTP POST`, server của bạn **phải** phản hồi với
  trạng thái HTTP là `200` để đánh dấu cuộc gọi là thành công. Nếu server của bạn
  không phản hồi trong vòng 10 giây, phản hồi `503` sẽ được ghi lại.
</Note>

Bạn cũng có thể đăng ký webhook trong Developer Dashboard.

### Thử lại Webhook

Nếu phản hồi HTTP từ server của bạn không nằm trong phạm vi thành công `200-299`, hệ thống sẽ tự động thử lại cuộc gọi Webhook hai lần nữa. Lần thử lại đầu tiên sẽ xảy ra sau 5 giây và lần thử lại thứ hai sẽ xảy ra 30 giây sau đó. Các lần thử lại sẽ có cùng `hookId` và được đánh dấu là các lần thử lại đã cố gắng.

## Bảo mật Webhook

Bạn có thể chọn thêm bảo mật bổ sung bằng cách đặt xác thực HMAC làm HTTP request. Điều này thường được thực hiện để ngăn chặn các cuộc tấn công replay. Ayrshare sử dụng [HMAC-SHA256](https://en.wikipedia.org/wiki/HMAC) để hash body của tin nhắn và bao gồm nó và dấu thời gian UNIX trong header của POST.

```bash theme={"system"}
X-Authorization-Timestamp : <Unix Timestamp In Seconds>
X-Authorization-Content-SHA256 : <HashedContent>
```

Dựa trên secret key được đặt khi [đăng ký webhook của bạn](/apis/webhooks/register), bạn có thể xác thực POST bằng cách so sánh header X-Authorization-Content-SHA256 với hash SHA256 của body POST. Secret key được sử dụng trên tất cả các webhook action, do đó việc đặt nó cho một action sẽ thay đổi secret cho tất cả các action.

## Nhật ký Webhook

Trong Ayrshare Dashboard, bạn có thể xem [các webhook đang hoạt động](https://app.ayrshare.com/webhooks), xem chi tiết Webhook đã gửi, trạng thái phản hồi server của bạn và gửi lại Webhook đến URL đã đăng ký.
Chuyển sang User Profile cụ thể để xem nhật ký Webhook của profile đó.

### Mã phản hồi HTTP

Cột đầu tiên cho biết phản hồi HTTP thành công ✔️ (200, 300) từ Webhook hoặc phản hồi thất bại ✖️ (400, 500).

Chuyển sang user profile cụ thể để xem nhật ký Webhook của profile đó.

### Tỷ lệ lỗi

"Error Rate" của 1.000 bài đăng gần nhất có thể được xem trên cả trang Actions và Webhook Logs trong bảng điều khiển. Bất kỳ phản hồi webhook nào từ server của bạn từ 400-500 được coi là lỗi.
