

参考文献:WebSocket 长连接
参考企微文献:智能机器人长连接 - 文档 - 企业微信开发者中心
前期配置:
pip install wecom-aibot-python-sdk依赖:
Python >= 3.8
websockets >= 12.0
aiohttp >= 3.9
pyee >= 11.0
cryptography >= 42.0
certifi>=2023.0
python-dotenv>=1.0 (可选,用于加载 .env 文件)
具体代码:
import asyncio
import os
from aibot import WSClient, WSClientOptions, generate_req_id
BOT_ID = ""
BOT_SECRET = ""
# 1. 创建客户端实例
ws_client = WSClient(
WSClientOptions(
bot_id= BOT_ID, # 企业微信后台获取的机器人 ID
secret= BOT_SECRET, # 企业微信后台获取的机器人 Secret
)
)
# 2. 监听认证成功
@ws_client.on('authenticated')
def on_authenticated():
print('🔐 认证成功')
# 3. 监听文本消息并进行流式回复
@ws_client.on('message.text')
async def on_text(frame):
body = frame.get('body', {})
print(body)
userid = body.get('from', {}).get('userid', {})
content = body.get('text', {}).get('content', '')
print(f'收到文本: {content}')
stream_id = generate_req_id('stream')
# 发送流式中间内容
await ws_client.reply_stream(frame, stream_id, '正在思考中...', False)
# 发送最终结果
await asyncio.sleep(1)
await ws_client.reply_stream(frame, stream_id, f'{userid}说: "{content}"', True)
# 4. 监听进入会话事件(发送欢迎语)
@ws_client.on('event.enter_chat')
async def on_enter_chat(frame):
await ws_client.reply_welcome(frame, {
'msgtype': 'text',
'text': {'content': '您好!我是智能助手,有什么可以帮您的吗?'},
})
# 5. 启动(便捷方法,内部管理事件循环)
ws_client.run()