你是不是也经常看到有人直接通过微信就和ai进行会话了?
AI也会很智能的定时的通过微信给他汇报工作?
其实这个实现也不难,今天就来简单分享一下实践操作吧~
本文首发于个人账号:
流程概述
能实现这个的方式非常多,这里介绍一个比较简单的方式,利用wechatpy框架,结合FastAPI搭建一个简单的服务器项目,实现个人微信、企业微信和智能AI大模型的通信。
通过上述流程可以发现要实现其实有几个关键的角色:
- 个人微信
- 企业微信自建应用
- 服务器接口
确实这些都是必不可少的,至于使用个人微信来替代企业微信,这个不建议。
企业微信
要在你个人微信好友列表中新增一个智能的AI助手,首先肯定是要打通消息发送和接收流程的,这里我们可以使用企业微信的自建应用来实现。
(注:如果你没有企业微信,可以直接注册一个,不是必须要你有一家公司)
进入企微后台
登录地址: work.weixin.qq.com/wework_admi…
扫码填写验证码登录即可。
创建应用
这里我们通过创建应用来实现,也有的是通过智能机器人实现,都是可以的。
创建路径:
左侧菜单应用管理 -> 应用管理 -> 页面下方创建应用。
输入应用信息点击创建应用即可,这里的应用logo是必填的。创建成功后记得记录一下AgentId和Secret后面有用。
个人微信关注
这里需要个人微信关注企业才能与企业微信进行通信。关注方式可以普通的邀请加入企业,也可以通过如下方式加入。
路径:我的企业 -> 微信插件 -> 邀请关注
使用个人微信扫码关注即可。
添加应用可见范围
当你关注后,需要回到应用管理页面,编辑你创建的这个应用可见范围,只有将个人微信添加到了可见范围,个人微信才能看到你创建的应用,并给它发送消息。
操作路径:应用管理 -> 你的应用 -> 编辑
服务器接口
这里我使用的是wechatpy和FastAPI框架来搭建服务端接口,负责处理个人微信发来的消息,然后调用企业微信做出响应回答。
服务器部署
由于要企业微信和我们的接口通信,所以需要企业微信能够连接到我们的接口,所以这里可以考虑内网穿透或者部署到自己的服务器上使用。
企业微信配置
有了接口,我们需要让企业微信知道,所以需要做接口设置,具体配置如下:
配置路径: 企业微信管理后台应用管理->“你自建的应用”-> 功能 -> 接收消息的API配置。
这里的URL就是我们的接口地址,一般是http://服务器IP:端口/wechat
普通回答
这里如果你不会写,可以直接让AI帮你生成相关代码也是可以的。当然你也可以直接参考我下方的实现:
关键信息:
- CORP_ID
你企业微信的企业ID,获取路径:企业微信管理后台左侧我的企业菜单页面底部。
- WECHAT_TOKEN
你自建应用的token,获取路径:企业微信管理后台应用管理->“你自建的应用”-> 功能 -> 接收消息的API配置页面。
- WECHAT_ENCODING_AES_KEY
你自建应用的EncodingAESKey,获取路径:企业微信管理后台应用管理->“你自建的应用”-> 功能 -> 接收消息的API配置页面。
import os
from fastapi import FastAPI, Request, Response, HTTPException
from wechatpy.enterprise.crypto import WeChatCrypto
from wechatpy.exceptions import InvalidSignatureException
from wechatpy.enterprise import parse_message, create_reply
from dotenv import load_dotenv
# 加载 .env 文件中的环境变量
load_dotenv()
app = FastAPI(title="YNAssistant WeChat Work Bot")
# 企业微信配置参数
CORP_ID = os.getenv("CORP_ID", "YOUR_CORP_ID")
WECHAT_TOKEN = os.getenv("WECHAT_TOKEN", "YOUR_TOKEN")
WECHAT_ENCODING_AES_KEY = os.getenv("WECHAT_ENCODING_AES_KEY", "YOUR_ENCODING_AES_KEY")
# 初始化加解密组件
crypto = WeChatCrypto(WECHAT_TOKEN, WECHAT_ENCODING_AES_KEY, CORP_ID)
@app.get("/wechat")
async def verify_url(msg_signature: str, timestamp: str, nonce: str, echostr: str):
"""
企业微信验证回调URL的合法性(在后台配置接收消息服务器时调用)
"""
try:
echo_str = crypto.check_signature(msg_signature, timestamp, nonce, echostr)
return Response(content=echo_str)
except InvalidSignatureException:
raise HTTPException(status_code=403, detail="Invalid signature")
@app.post("/wechat")
async def handle_message(request: Request, msg_signature: str, timestamp: str, nonce: str):
"""
处理接收到的加密消息
"""
body = await request.body()
try:
# 1. 解密消息
decrypted_xml = crypto.decrypt_message(body, msg_signature, timestamp, nonce)
# 2. 解析消息内容
msg = parse_message(decrypted_xml)
if msg.type == 'text':
# 获取用户发送的内容
user_content = msg.content
# TODO: 在此处调用你的 AI 模型获取回复
reply_content = f"智能助手已收到:{user_content}"
# 3. 构造回复(被动响应)
reply = create_reply(reply_content, msg)
# 4. 加密回复内容
xml = crypto.encrypt_message(reply.render(), nonce, timestamp)
return Response(content=xml, media_type="application/xml")
# 对于非文本消息,返回 success 告诉企业微信已收到
return Response(content="success")
except Exception as e:
print(f"处理消息时出错: {e}")
return Response(content="error")
if __name__ == "__main__":
import uvicorn
# 建议生产环境使用外部命令启动,此处仅供快速开发测试
uvicorn.run(app, host="0.0.0.0", port=8000)
注:上述代码是将关键的id、token和secret写在环境变量中的,如果你要直接使用请替换成你自己的。
这样你在微信上给助手发送消息,它就会正常答应你了。
AI智能回答
如果想让你的助手真的智能化起来,需要在服务端接口中接入AI大模型服务。
具体大模型的使用在你大模型平台一般都会有demo示例,可以根据教程迁移到代码中即可,集成AI大模型后,你就会得到想我一样的一个最基础的智能会话AI助手了。
如果你使用的上述代码示例,示例有标明将你ai的响应这些增加在哪一个位置。
最后
这样你就可以像使用网页版的AI工具一样,在你的微信好友列表中使用你的AI助手了,是不是非常简单。
当然这也只是最初级的使用,毕竟这样使用部分场景还赶不上web或者app上使用,所以我们还得在这个基础上扩展很多功能。
至于扩展什么,这个就可以根据个人的需求扩展了,不会写代码的,完全可以让ai给你写了部署到服务器上即可。
你们想扩展什么功能呢?欢迎留言、私信交流~