如何让AI助手成为你的微信智能好友

0 阅读6分钟

你是不是也经常看到有人直接通过微信就和ai进行会话了?

AI也会很智能的定时的通过微信给他汇报工作?

其实这个实现也不难,今天就来简单分享一下实践操作吧~

本文首发于个人账号:

mp.weixin.qq.com/s/dU0VKV2Hd…

流程概述

能实现这个的方式非常多,这里介绍一个比较简单的方式,利用wechatpy框架,结合FastAPI搭建一个简单的服务器项目,实现个人微信、企业微信和智能AI大模型的通信。

通过上述流程可以发现要实现其实有几个关键的角色:

  • 个人微信
  • 企业微信自建应用
  • 服务器接口

确实这些都是必不可少的,至于使用个人微信来替代企业微信,这个不建议。

企业微信

要在你个人微信好友列表中新增一个智能的AI助手,首先肯定是要打通消息发送和接收流程的,这里我们可以使用企业微信的自建应用来实现。

(注:如果你没有企业微信,可以直接注册一个,不是必须要你有一家公司)

进入企微后台

登录地址: work.weixin.qq.com/wework_admi…

扫码填写验证码登录即可。

创建应用

这里我们通过创建应用来实现,也有的是通过智能机器人实现,都是可以的。

创建路径:

左侧菜单应用管理 -> 应用管理 -> 页面下方创建应用。

输入应用信息点击创建应用即可,这里的应用logo是必填的。创建成功后记得记录一下AgentIdSecret后面有用。

个人微信关注

这里需要个人微信关注企业才能与企业微信进行通信。关注方式可以普通的邀请加入企业,也可以通过如下方式加入。

路径:我的企业 -> 微信插件 -> 邀请关注

使用个人微信扫码关注即可。

添加应用可见范围

当你关注后,需要回到应用管理页面,编辑你创建的这个应用可见范围,只有将个人微信添加到了可见范围,个人微信才能看到你创建的应用,并给它发送消息。

操作路径:应用管理 -> 你的应用 -> 编辑

服务器接口

这里我使用的是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给你写了部署到服务器上即可。

你们想扩展什么功能呢?欢迎留言、私信交流~