Add Feishu channel adapter with webhook and send path
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Feishu Channel Adapter Checklist
|
||||
|
||||
**Date:** 2026-02-16
|
||||
**Scope:** Implement Feishu/Lark adapter as the second item in the LINE/Feishu/Zalo channel gap set.
|
||||
|
||||
## Goal
|
||||
|
||||
Add a Feishu channel adapter with webhook ingress, outbound send path, mention/allowlist gating, and runtime wiring through daemon + gateway.
|
||||
|
||||
## Implemented
|
||||
|
||||
- Added Feishu adapter:
|
||||
- `src/channels/feishu/adapter.ts`
|
||||
- `src/channels/feishu/index.ts`
|
||||
- Inbound webhook handling:
|
||||
- endpoint: `POST /feishu/events`
|
||||
- supports Feishu URL verification challenge flow.
|
||||
- validates `header.token` when `webhook_token` is configured.
|
||||
- Message normalization:
|
||||
- handles `im.message.receive_v1` text messages.
|
||||
- parses `message.content` JSON `{ "text": "..." }`.
|
||||
- emits normalized `InboundMessage` with `metadata.replyPeerId`.
|
||||
- Outbound messaging:
|
||||
- obtains tenant access token via internal app credentials.
|
||||
- sends text messages via Feishu IM v1 messages API.
|
||||
- Gating:
|
||||
- optional chat allowlist (`allowed_chat_ids`).
|
||||
- mention policy (`require_mention`, `mention_name`) with DM bypass.
|
||||
- Runtime integration:
|
||||
- config schema + defaults for `feishu`.
|
||||
- daemon registration and gateway handler binding.
|
||||
- gateway route wiring + services discovery visibility.
|
||||
|
||||
## Tests
|
||||
|
||||
- `src/channels/feishu/adapter.test.ts`
|
||||
- name/status
|
||||
- outbound token + send path
|
||||
- url verification handling
|
||||
- inbound event normalization
|
||||
- webhook token enforcement
|
||||
- `src/daemon/channels.test.ts`
|
||||
- adapter registration + gateway `setFeishuHandler` binding
|
||||
- `src/config/schema.test.ts`
|
||||
- feishu config parsing/defaults
|
||||
- `src/gateway/handlers/services.test.ts`
|
||||
- `feishu` service presence
|
||||
|
||||
## Validation Run
|
||||
|
||||
```bash
|
||||
pnpm test:run src/channels/feishu/adapter.test.ts src/daemon/channels.test.ts src/config/schema.test.ts src/gateway/handlers/services.test.ts
|
||||
pnpm typecheck
|
||||
pnpm build
|
||||
```
|
||||
Reference in New Issue
Block a user