Skip to content

[Feature]: Add HTTP Webhook Support for Lark Channel #12464

@barcelonalake

Description

@barcelonalake

Feature Request: Add HTTP Webhook Support for Lark Channel

Summary

The @openclaw/feishu plugin currently only supports WebSocket-based event subscription. However, Lark International (larksuite.com) does not provide WebSocket option in the event subscription settings - only HTTP webhook is available.

This makes the plugin unusable for Lark International users.

Proposed Solution

Add HTTP webhook mode to the @openclaw/feishu plugin.

Required config fields:

{
"channels": {
"feishu": {
"mode": "webhook", // NEW: or "websocket" (default)
"domain": "lark",
"appId": "cli_xxx",
"appSecret": "xxx",
"verificationToken": "xxx", // NEW
"encryptKey": "xxx" // NEW (optional)
}
}
}

Webhook handler requirements:

  1. Handle URL verification: {"type": "url_verification"} → return {"challenge": "xxx"}
  2. Verify request signatures using verificationToken and encryptKey
  3. Process im.message.receive_v1 events
    Alternatives Considered

Using WebSocket mode: Not available in Lark International backend. The UI only shows "Configure webhook URL" option, no "Use WebSocket" option exists.

Switching to other channels: Not feasible for organizations already using Lark.

Additional Context

Current error:

• Configured webhook URL in Lark backend
• Lark POSTs to the webhook URL → OpenClaw returns HTML (control UI) instead of JSON
• Lark error: "返回数据不是合法的JSON格式" (Returned data is not valid JSON)
Environment:

• Lark International (larksuite.com)
• OpenClaw version: 2026.2.3-1
• Domain: lark (not feishu)
References:

• Lark webhook docs: https://open.larksuite.com/document/home/develop-bots-use-webhooks/webhooks
• Telegram plugin uses webhook mode successfully as reference
I'm willing to test the implementation in a real Lark environment.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions