事件订阅概述
通过 Webhook,您可以实时接收用户在 IM 中的操作事件,如消息发送、按钮点击等。
工作原理
配置 Webhook
- 在开发者后台进入应用设置
- 配置事件订阅 URL:
https://your-server.com/webhook - 选择需要订阅的事件类型
- 保存并验证
事件格式
{
"event_type": "message.receive",
"event_id": "evt_xxxxxx",
"timestamp": 1703232000000,
"app_id": "cli_xxxxxx",
"data": {
"message_id": "msg_xxxxxx",
"sender_id": "user_001",
"content": "@Bot 查询库存",
"room_id": "room_001"
}
}
响应要求
| 要求 | 说明 |
|---|---|
| 状态码 | 必须返回 200 |
| 超时时间 | 3 秒内响应 |
| 重试机制 | 失败后会重试 3 次 |
安全验证
每个 Webhook 请求都会携带签名,您应该验证签名以确保请求来自 IM 平台:
@PostMapping("/webhook")
public ResponseEntity<String> handleWebhook(
@RequestHeader("X-Signature") String signature,
@RequestBody String body) {
// 验证签名
String expected = HmacUtils.hmacSha256(appSecret, body);
if (!expected.equals(signature)) {
return ResponseEntity.status(403).body("Invalid signature");
}
// 处理事件
// ...
return ResponseEntity.ok("success");
}