Quản lý webhook
Xác thực dữ liệu webhook
Khi bạn muốn xác thực dữ liệu được nhận từ đầu api mà bạn đăng kí có phải từ PiScale hay không? Vui lòng làm theo hướng dẫn sau:
- Lấy dữ liệu
x-piscale-timestamp
vàx-piscale-signature
từrequest header
. - Lấy
body
từrequest body
. - Khóa bí mật của hàm băm là
bot_token
, thông số được trả về khibot
được tạo thành công. - Thực hiện băm SHA-256 dữ liệu từ
x-piscale-timestamp
vàbody
với định dạng đầu vào"{x-piscale-timestamp}.{body}"
.
Nếu kết quả của hàm băm bằng với giá trị x-piscale-signature
thì request
được gửi từ PiScale
.
Ví dụ:
receiveWebhook(signature: string, timestamp: string, body: any): string {
// Start verify signature
const secretKey = process.env.BOT_TOKEN;
const hash = crypto.createHmac('sha256', secretKey);
hash.update(`${timestamp}.${body}`);
const hashSignature = hash.digest('hex');
if (hashSignature !== signature) {
console.log('Signature is invalid');
return 'NOT OK';
}
// End verify signature
// TODO: Define your logic here
return 'OK';
}
Webhook Body
Dưới đây là body
được gửi tới webhook_url
:
Tin nhắn văn bản
{
"type":"message_created",
"created_at":1723652465925,
"payload":{
"ext_bot_id":"6872016393688539",
"message_id":4,
"text":"Alo",
"is_rtf":true,
"thread_id":"45591586546110",
"thread_type":"direct",
"version":"1.0",
"sender":{
"user_id":"30043",
"display_name":"Nam To To",
"avatar_url":"https://sign-NGVjZWRjNi5wbmc.png",
"ext_user_id":"6872016393206779",
"app_id":100001
},
"metadata":null
}
}
Tin nhắn hình ảnh
{
"type": "message_created",
"created_at": 1723652615141,
"payload": {
"ext_bot_id": "6872016393688539",
"message_id": 6,
"text": "Image nè",
"is_rtf": true,
"thread_id": "45591586546110",
"thread_type": "direct",
"version": "1.0",
"sender": {
"user_id": "30043",
"display_name": "Nam To To",
"avatar_url": "https://sign-avatar.piscale.com/5nxrJMzgc.png",
"ext_user_id": "6872016393206779",
"app_id": 100001
},
"metadata": [
{
"name": "Screenshot_2024-08-11_at_16_45_03.png",
"size": 446533,
"height": 859,
"width": 2000,
"source_thumb_url": "https://thumb-i-1.piscale.com/<width>x<height>/smart/1003.png",
"source_url": "https://image-1.piscale.com/116_45_03.png",
"type": "image"
}
]
}
}
Tin nhắn video
{
"type": "message_created",
"created_at": 1723653399249,
"payload": {
"ext_bot_id": "6872016393688539",
"message_id": 8,
"text": "video nè",
"is_rtf": true,
"thread_id": "45591586546110",
"thread_type": "direct",
"version": "1.0",
"sender": {
"user_id": "30043",
"display_name": "Nam To To",
"avatar_url": "https://sign-avatar.piscale.com/5nxrJMzgiRxshfApISa2bmc.png",
"ext_user_id": "6872016393206779",
"app_id": 100001
},
"metadata": [
{
"name": "b2o.mov",
"size": 106568790,
"height": 1762,
"width": 2974,
"source_thumb_url": "https://video-1.piscale.com/100001/10/thumb.jpg",
"source_url": "https://video-1.piscale.com/100001/100001/b2o.mov",
"type": "video",
"duration": 173.15
}
]
}
}
Tin nhắn tệp
{
"type": "message_created",
"created_at": 1723653069259,
"payload": {
"ext_bot_id": "6872016393688539",
"message_id": 7,
"text": "Tệp nè",
"is_rtf": true,
"thread_id": "45591586546110",
"thread_type": "direct",
"version": "1.0",
"sender": {
"user_id": "30043",
"display_name": "Nam To To",
"avatar_url": "https://sign-avatar.piscale.com/i5wbmc.png",
"ext_user_id": "6872016393206779",
"app_id": 100001
},
"metadata": [
{
"name": "halan.jpeg",
"size": 275397,
"source_url": "https://file-1.piscale.com/100.jpeg",
"type": "file"
}
]
}
}
Tin nhắn liên kết
{
"type": "message_created",
"created_at": 1723653564332,
"payload": {
"ext_bot_id": "6872016393688539",
"message_id": 9,
"text": "https://google.com",
"is_rtf": true,
"thread_id": "45591586546110",
"thread_type": "direct",
"version": "1.0",
"sender": {
"user_id": "30043",
"display_name": "Nam To To",
"avatar_url": "https://sign-avatar.piscale.comc.png",
"ext_user_id": "6872016393206779",
"app_id": 100001
},
"metadata": [
{
"title": "Google",
"source_url": "https://google.com",
"sitename": "google.com",
"type": "preview_link"
}
]
}
}
Tin nhắn sticker
{
"type": "message_created",
"created_at": 1723653637612,
"payload": {
"ext_bot_id": "6872016393688539",
"message_id": 10,
"is_rtf": false,
"thread_id": "45591586546110",
"thread_type": "direct",
"version": "1.0",
"sender": {
"user_id": "30043",
"display_name": "Nam To To",
"avatar_url": "https://sign-avatar.piscale.com/5n5wbmc.png",
"ext_user_id": "6872016393206779",
"app_id": 100001
},
"metadata": [
{
"source_url": "https://file-1.piscale.com/100001/100001/7a35c120-4719-49b2d7.webp",
"type": "sticker",
"file_type": "webp"
}
]
}
}