跳转至

Webhook 接收事件

EventDispatcher 不绑定 Web 框架。下面以 FastAPI 为例:

from fastapi import FastAPI, Request, Response
from larkify.webhooks import EventDispatcher
from larkify.webhooks.events.im import ImMessageReceiveV1Event

app = FastAPI()
dispatcher = EventDispatcher(encrypt_key="...", verification_token="...")


@dispatcher.on(ImMessageReceiveV1Event)
async def on_message(event: ImMessageReceiveV1Event) -> None:
    print(event.event.message.content)


@app.post("/feishu/events")
async def events(request: Request) -> Response:
    result = await dispatcher.ahandle(await request.body(), request.headers)
    return Response(result.body, result.status_code, media_type=result.content_type)

URL 校验、解密、验签由 handle / ahandle 完成。配置了 encrypt_key 时需要安装 larkify[crypto]。

更多内容见事件订阅。