You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LiveKit Python 代理无法接收房间参与者的聊天消息

解决Python LiveKit代理chatMessage事件不触发的问题

以下是针对你的问题的具体排查和修复方案:

1. 检查事件监听对象是否正确

你的Node.js代码通过ctx.room绑定chatMessage事件,但Python代码里用了session.on("chatMessage")——LiveKit的chatMessage事件是由Room实例触发的,而非自定义的session对象。你需要确保绑定事件的对象是已成功连接的Room实例。

2. 确认SDK事件名称的命名风格

Python SDK通常遵循PEP8下划线命名规范,部分版本中事件名可能是chat_message而非驼峰式的chatMessage。可以两种都尝试:

room.on("chatMessage", _on_chat_message)
# 或者
room.on("chat_message", _on_chat_message)

3. 修正回调函数的异常捕获与异步处理

同步回调中使用asyncio.create_task可能隐藏异常,建议将回调改为异步函数并添加异常捕获,方便排查问题:

async def _on_chat_message(payload, participant) -> None:
    try:
        reset_timeouts()
        logger.info("Received chat from %s: %s", participant.name, payload.message)
        await session.generate_reply(user_input=payload.message)
    except Exception as e:
        logger.error("处理聊天消息时出错: %s", str(e))

# 绑定到Room实例
room.on("chatMessage", _on_chat_message)

4. 验证房间连接与事件绑定时机

确保事件绑定是在成功连接到房间之后执行的,避免因连接未完成导致事件监听失效。例如:

async def connect_to_room():
    global room
    room = await livekit.connect(url, token)
    # 连接成功后再绑定事件
    room.on("chatMessage", _on_chat_message)
    await room.run_forever()

5. 确认客户端消息发送目标

检查客户端发送聊天消息时,是否是发送到整个房间,而非仅发给特定参与者。如果消息是定向发送的,Room实例不会触发全局的chatMessage事件。

内容的提问来源于stack exchange,提问作者Jack Mills

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:12:36