微信公众号开发(三):自动回复“你好”

server/2024/9/24 11:11:11/

上一篇做了服务器校验,但没有处理用户发来的消息,为了完成自动回复的功能,需要增加一些功能:

1、调整服务器校验函数:
python">
def verify_wechat(request):token='token'data=request.argssignature=data.get('signature')timestamp=data.get('timestamp')nonce=data.get('nonce')echostr=data.get('echostr')temp=[timestamp,nonce,token]temp.sort()temp=''.join(temp)if (hashlib.sha1(temp.encode('utf8')).hexdigest()==signature):return echostrelse:return 'error',403
2、解析用户发来的信息

微信公众号中,用户发给公众号的消息是以xml形式发给服务器的,所以要先对xml进行解析:

python">def getUserMessageContentFromXML(xml_content):root=ET.fromstring(xml_content)content=root.find('Content').textfrom_user_name=root.find('FromUserName').textto_user_name=root.find('ToUserName').textreturn content,from_user_name,to_user_name

这个函数获取了用户和公众号的id(名称)

3、回复信息(“你好”)

回复信息,和收到信息一样,都是xml形式,所以要先把回复的信息调整成xml形式:

python">
def generate_response_xml(from_user_name,to_user_name,output_content):output_xml= '''<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>'''response = make_response(output_xml % (from_user_name, to_user_name, str(int(time.time())), str(output_content)))response.content_type = 'application/xml'return response

然后,调整服务器函数:

python">
@app.route('/wechatai', methods=['GET', 'POST'])
def wechatai():if request.method == 'GET':return verify_wechat(request)else:print("user request data: ",request.data)user_message_content,from_user_name,to_user_name=getUserMessageContentFromXML(request.data)print(from_user_name)print(to_user_name)return generate_response_xml(from_user_name, to_user_name, "你好")

最终效果:(为了避免一直你好,通过if条件判断,只设置了自己的信息才会回复“你好”)


http://www.ppmy.cn/server/46379.html

相关文章

kali系统baopoWiFi密码

kali系统baopoWiFi密码,仅供学习 取决强大的密码字典,如果别人密码设置的足够安全,也无法破解成功,并不是100%破解 一、准备一个无线网卡&#xff0c;需要免驱动&#xff0c;最好知道频率2.4HGZ还是5.0GHZ 二、插上USB接口&#xff0c;vmware模拟器选择连接虚拟机 三、输入命…

FastDFS分布式文件系统——上传本地文件

目录 安装FastDFS FastDFS 使用Java客户端上传本地文件到FastDFS服务器上 pom.xml fastdfs_conf配置文件 FastDFS 测试 安装FastDFS 1、用FastDFS一步步搭建文件管理系统 - bojiangzhou - 博客园 (cnblogs.com)2、FastDFS文件上传功能封装 - 动力节点 (bjpowernode.com)…

Spring Security3.0版本

前言&#xff1a; 核心&#xff1a; A >> &#xff1f; >> B &#xff1f;代表判断层&#xff0c;由Security实现 这是之前的版本浓缩&#xff0c;现在3.0版本添加了更匹配的内容描写&#xff0c;匹配了mvc模式 非mvc模式 核心&#xff1a;client&#x…

JAVA多态

一.向上转型 上代吗&#xff1a; 这里我们定义了三个java文件&#xff0c;这里用ANM来接受一个Dog类型的类&#xff0c;我们发现不会报错&#xff0c;这就是发生了向上转型&#xff0c;由子类变成了父类 二.方法的重写 那么我们应该如何调用子类的函数呢 首先我们试一下直接…

Redis实现延迟队列

最近用到一个延迟消息的功能&#xff0c;第一时间想到使用MQ或者MQ的插件&#xff0c;因为数据量不大&#xff0c;所以尝试使用Redis来实现了&#xff0c;毕竟Redis也天生支持类似MQ的队列消费&#xff0c;所以&#xff0c;在这里总结了一下Redis实现延迟消息队列的方式。 一、…

vi和vim有什么不同?

vi 和 vim 都是流行的文本编辑器&#xff0c;它们之间有以下主要区别&#xff1a; 历史&#xff1a; vi 是一个非常古老的文本编辑器&#xff0c;最初由 Bill Joy 在 1976 年为 Unix 系统编写。vim&#xff08;Vi IMproved&#xff09;是 vi 的一个增强版&#xff0c;由 Bram M…

2024HBCPC:C Goose Goose Duck

题目描述 Iris 有 n n n 个喜欢玩鹅鸭杀的朋友&#xff0c;编号为 1 ∼ n 1∼n 1∼n。 假期的时候&#xff0c;大家经常会在群里问有没有人玩鹅鸭杀&#xff0c;并且报出现在已经参与的人数。 但是每个人对于当前是否加入游戏都有自己的想法。 具体的来说&#xff0c;对于第…

【MySQL】 1130 -Host ‘14.*.**.*‘ is not allowed to connect to this MySQL server

这个错误表明MySQL服务器拒绝了来自IP地址为14.*.**.*的主机的连接请求。这通常是由于MySQL用户的主机限制引起的。 要解决这个问题&#xff0c;你需要在MySQL中允许指定主机的连接。你可以按照以下步骤操作&#xff1a; 使用具有足够权限的用户&#xff08;如root用户&#x…