Chuyển tới nội dung chính

Channel Webhook

Mezon cung cấp tính năng cho phép người dùng gửi tin nhắn tới các channel thông qua webhook tương ứng đã tạo.

Tạo Channel Webhook​

Trước tiên, để làm việc với channel webhook, bạn cần đảm bảo bạn là thành viên của một clan và có quyền truy cập vào channel.

Tạo webhook là quy trình khá đơn giản.

  1. Vào channel bạn muốn tạo webhook, nhấp chuột phải để mở popup các thao tác có thể thực hiện trên channel đó.

    mezon-webhook-001

  2. Nhấp vào tùy chọn Edit Channel rồi vào tab Integrations.

    mezon-webhook-002

  3. Nhấp New Webhook để tiến hành tạo webhook mới.

    mezon-webhook-003

  • Bạn sẽ có một user (ở đây tên Spidey bot) và có thể tùy chỉnh tên và avatar của bot này.

  • Nhấp Copy Webhook URL để lấy endpoint webhook, dùng cùng payload webhook để gửi tin nhắn tới channel.

Đặc tả Webhook​

Endpoint​

Webhook được gửi qua yêu cầu HTTP POST tới URL duy nhất được tạo cho mỗi tích hợp webhook.

Cấu trúc URL:

https://webhook.mezon.ai/webhooks/{channelId}/{token}

Tham số URL:

Tham sốKiểuMô tả
channelIdstringĐịnh danh duy nhất của channel.
tokenstringToken bảo mật để xác thực yêu cầu. Có vẻ là chuỗi base64 hoặc JSON Web Token (JWT) chứa thông tin xác minh tính xác thực của yêu cầu.

Request Header​

HeaderGiá trịMô tả
Content-Typeapplication/jsonCho biết body yêu cầu ở định dạng JSON.

Request Body​

Body yêu cầu chứa đối tượng JSON với chi tiết tin nhắn kích hoạt webhook.

Đối tượng gốc​

TrườngKiểuBắt buộcMô tả
typestringCóLoại sự kiện webhook. Trong ví dụ này là "hook".
messageobjectCóĐối tượng chứa chi tiết tin nhắn.

Định dạng tin nhắn​

Đối tượng này bao gồm nội dung và metadata của tin nhắn.

TrườngKiểuBắt buộcMô tả
tstringCóNội dung văn bản thô của tin nhắn.
mkarray of objectsKhôngMảng đối tượng mô tả markdown hoặc định dạng đặc biệt áp dụng cho văn bản tin nhắn. Lưu ý có thể có nhiều mảng mk. Các giá trị có thể của type trong đối tượng này gồm lk (link) và pre (văn bản định dạng sẵn).
mentionsarray of objectsKhôngMảng đối tượng, mỗi đối tượng đại diện một người dùng được mention trong tin nhắn.
imagesarray of objectsKhôngMảng đối tượng, mỗi đối tượng đại diện một ảnh đính kèm tin nhắn.
hgarray of objectsKhôngMảng đối tượng, mỗi đối tượng đại diện một hashtag channel được mention trong tin nhắn.

Đối tượng mk (markdown)​

TrườngKiểuBắt buộcMô tả
typestringCóLoại định dạng áp dụng (ví dụ "lk", "pre").
sintegerCóChỉ số ký tự bắt đầu của đoạn định dạng trong chuỗi t.
eintegerCóChỉ số ký tự kết thúc của đoạn định dạng trong chuỗi t.

Đối tượng mentions​

TrườngKiểuBắt buộcMô tả
usernamestringKhôngUsername của người dùng được mention.
user_idstringKhôngĐịnh danh duy nhất của người dùng được mention.
sintegerCóChỉ số ký tự bắt đầu của mention trong chuỗi t.
eintegerCóChỉ số ký tự kết thúc của mention trong chuỗi t.
Lưu ý

Bạn có thể mention mọi người trong channel theo hai cách:

  • Theo user_id: Dùng định danh duy nhất 1775731111020111321 để mention mọi người trong channel
  • Theo username: Dùng here làm username để mention mọi người trong channel (@here)

Cần cung cấp username hoặc user_id, nhưng không được cung cấp cả hai.

Ví dụ 1: Mention @here theo user_id

"mentions": [
{
"user_id": "1775731111020111321",
"s": 65,
"e": 88
}
]

Ví dụ 2: Mention @here theo username

"mentions": [
{
"username": "here",
"s": 65,
"e": 88
}
]

Đối tượng images​

TrườngKiểuBắt buộcMô tả
fnstringCóTên tệp ảnh.
szintegerCóKích thước ảnh tính bằng byte.
urlstringCóURL công khai để truy cập ảnh.
ftstringCóMIME type của ảnh (ví dụ "image/jpeg").
wintegerCóChiều rộng ảnh tính bằng pixel.
hintegerCóChiều cao ảnh tính bằng pixel.

Đối tượng hg (hashtag)​

TrườngKiểuBắt buộcMô tả
channelIdstringCóĐịnh danh duy nhất của channel được tham chiếu.
sintegerCóChỉ số ký tự bắt đầu của hashtag trong chuỗi t.
eintegerCóChỉ số ký tự kết thúc của hashtag trong chuỗi t.

Ví dụ Channel Webhook​

curl --location 'https://webhook.mezon.ai/webhooks/1840666462029615104/MTc2MDAzODcxNTU5NDU0OTgzNzoxODQwNjY2NDYyMDEyODM3ODg4OjE4NDA2NjY0NjIwMjk2MTUxMDQ6MTk3NjM3MTczNTI3MTgzNzY5Ng.zLl5tsGaFYnC3sPXgOhVlZoBNrVeoC8hD6oKv0hxavs' \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "hook",
"message": {
"t": "[pre] Webhook message example: [lk] https://mezon.ai \n [mention] @aliceinmezon #general",
"mk": [
{
"type": "pre",
"s": 0,
"e": 30
},
{
"type": "lk",
"s": 36,
"e": 54
}
],
"mentions": [
{
"user_id": "1783755414765047808",
"s": 65,
"e": 77
}
],
"images": [
{
"fn": "thumbnail_dog1.jpg",
"sz": 5620,
"url": "https://cdn.mezon.vn/0/1843962578301095936/1829065039080853500/95_0thumbnail_dog1.jpg",
"ft": "image/jpeg",
"w": 275,
"h": 183
}
],
"hg": [
{
"channelId": "1973524969530855424",
"s": 79,
"e": 86
}
]
}
}

Kết quả

mezon-webhook-004