【Python + 微信】微信公众号开发避坑指南

  • 大家好,我是同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

在这里插入图片描述


本文主要讨论下我在公众号开发过程中遇到的问题,给大家避个坑。

0. 背景

前一段时间,我折腾过 微信公众号 的开发,成功将 ChatGPT 接入了微信公众号。但那只是实现了与 ChatGPT 的简单对话,并没有实际用途。

之前的开发教程可参考我的这个专栏:微信公众号开发

而随着这段时间学习AI大模型应用开发,萌生了在微信上搞点真正有用的东西给大家参考的想法。于是今天想重启下微信公众号开发。

不幸的是,遇到了无法解决的问题,在本文中写出来,供大家避坑。

当然,我的微信公众号是 个人订阅号,如果是企业订阅号或服务号需要大家自行甄别。

1. 避坑

1.1 限制

  1. 个人订阅号, 接口权限不足,无法主动给用户发消息(客服接口),只能被动回复用户的消息。也就是说,用户在公众号界面给你发了一条消息,你才能给一条回复。

在这里插入图片描述

  1. 而且,对于自建的服务来说,你只有5s的时间去回复消息。超过5s,微信服务器会重新发起请求,重试2次,一共是3次请求。如果每次请求5s内都没有给回复,那就算应答失败,服务即使在第6s给了回复,用户不会收到任何回复。

在这里插入图片描述

1.2 我的问题

我想在微信公众号自建服务上接通 ChatGPT(已完成),但是想在此基础上,做些其它功能,例如总结一段文字内容,很容易超出5s需要回复的限制。

1.3 网上的解决方案

搜了网上的解决方案,大体都差不多,总结下来,有以下几种。

1.3.1 将超时时间增加到15s

这种方式不用额外的接口调用。

实现思路是:因为微信服务会发3次请求,每5s一次,那就在第一次请求时记录请求ID(这个ID在重试时是不变的),然后将请求转到另外的线程去处理。

如果在5s内该消息处理完了,直接返回。如果处理不完,5s超时,微信服务会来第二次重试请求,或者第三次重试请求。在每一次重试时查看这个消息ID是否处理完成,处理完成就直接返回。

这样,我们就将5s超时增加到了15s才超时。

但是这种方法还是有弊端的,也无法完全保证用户的请求能在15s内处理完,尤其是在AI应用中。

1.3.2 处理完后主动给用户发信息

这种方式的处理思路是:接收到请求后,将请求转到其它线程去处理,然后本次请求直接返回 sucess。这样,微信服务不会重试请求。

当其它线程处理完消息后,主动调用接口给用户发消息。

这种方式没有超时的限制,但是需要有接口权限。很遗憾,个人订阅号没有此权限。

参考链接:

  • https://blog.csdn.net/catoop/article/details/134097675
  • https://www.hoscen.cn/blog/hao/articles/232276242445893632.html

2. 结论

最终结论就是,个人订阅号开发限制太多,权限太低,自己玩玩儿可以,但想实现一些有用的功能,还是比较困难。

意见仅供参考,如果有有效的解决方案,欢迎评论或私信,求指教。

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


  • 大家好,我是 同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜同学小张 🙏

本站文章一览:

在这里插入图片描述

### deekseek与微信开发集成指南 #### 一、概述 对于希望将deekseek服务集成到微信平台的应用开发者而言,理解两者之间的交互机制至关重要。该API广泛覆盖清言C端页面的核心功能,包括文本对话、文生图、图片解读、联网搜索、文档解析、Python代码执行及外部API调用等[^1]。 #### 二、准备工作 为了顺利实现deekseek与微信的对接,需完成如下准备事项: - **微信公众账号注册**:确保已拥有一个正式认证过的公众号。 - **获取AppID和AppSecret**:登录微信公众平台后台,在基本配置中找到这两个重要参数。 - **服务器环境搭建**:准备好支持HTTPS协议的服务端部署环境,用于接收来自微信的消息推送以及向其发送请求。 #### 三、接入流程详解 ##### (一)消息处理接口设置 通过微信公众平台上提供的菜单管理工具创建自定义菜单项,并将其链接指向自己的服务器地址;同时按照官方指引配置URL验证密钥token,以便于后续的身份校验过程。 ##### (二)事件响应逻辑编写 当用户触发特定操作(如点击按钮)时,微信会以POST方式把XML数据包传送给预先设定好的回调网址。此时就需要依据接收到的信息类型来决定如何回应——可以是简单的文字回复也可以调用deekseek所提供的各项能力来进行更复杂的内容生成或查询工作。 ```python import requests from flask import Flask, request app = Flask(__name__) @app.route('/wechat', methods=['GET', 'POST']) def wechat(): if request.method == 'GET': # 验证签名合法性 signature = request.args.get('signature') timestamp = request.args.get('timestamp') nonce = request.args.get('nonce') echostr = request.args.get('echostr') token = "your_token" tmp_list = sorted([token, timestamp, nonce]) tmp_str = ''.join(tmp_list).encode('utf-8') from hashlib import sha1 if sha1(tmp_str).hexdigest() == signature: return echostr elif request.method == 'POST': xml_data = request.data.decode() msg_type = parse_xml(xml_data)['MsgType'] response_content = "" if msg_type == "text": query_text = parse_xml(xml_data)['Content'] deekeek_response = get_deekeek_reply(query_text) response_content = f"<xml><ToUserName><![CDATA[{parse_xml(xml_data)['FromUserName']}]]></ToUserName>\ <FromUserName><![CDATA[{parse_xml(xml_data)['ToUserName')}]]></FromUserName>\ <CreateTime>{int(time.time())}</CreateTime>\ <MsgType><![CDATA[text]]></MsgType>\ <Content><![CDATA[{deekeek_response}]]></Content></xml>" return response_content if __name__ == '__main__': app.run(port=80) ``` 上述代码片段展示了如何构建一个简易版的消息处理器,它能够监听到来自用户的输入并转发给deekseek进行处理后再返回结果给对方。 #### 四、利用deekseek增强用户体验 借助deekseek强大的自然语言理解和图像识别等功能模块,可以使基于微信的小程序变得更加智能化和服务化。比如针对客服场景下的自动应答机器人设计,或是帮助商家快速制作个性化的营销海报等等应用案例都值得探索尝试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

同学小张

如果觉得有帮助,欢迎给我鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值