首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信公众号-消息收发原理

微信公众号-消息收发原理

作者头像
星哥玩云
发布于 2022-09-14 09:58:12
发布于 2022-09-14 09:58:12
71300
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行
  • 收发原理

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试

  • 自有公众号
  • 测试平台

消息类型

  • 文本消息
  • 图片消息
  • 语音消息
  • 视频消息
  • 小视频消息
  • 地理位置消息
  • 链接消息

各消息类型的推送使用XML数据包结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1478317060</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[hello]]></Content>
<MsgId>1234567890123456</MsgId>:q
</xml>

注意:<![CDATA 与 ]]> 括起来的数据不会被xml解析器解析

xmltodic模块基本使用

安装:pip install xmltodic

作用:可将XML数据转为Python中的dict字典数据,也可将dict字典数据转为XML数据

XML数据转为dict字典数据(parse()方法)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span class="hljs-keyword">import</span> xmltodict
xmlStr = <span class="hljs-string">"""
&lt;xml&gt;
&lt;ToUserName&gt;&lt;![CDATA[toUser]]&gt;&lt;/ToUserName&gt;
&lt;FromUserName&gt;&lt;![CDATA[fromUser]]&gt;&lt;/FromUserName&gt;
&lt;CreateTime&gt;12357975460&lt;/CreateTime&gt;
&lt;MsgType&gt;&lt;![CDATA[text]]&gt;&lt;/MsgType&gt;
&lt;Content&gt;&lt;![CDATA[hello]]&gt;&lt;/Content&gt;
&lt;MsgId&gt;1234567890123456&lt;/MsgId&gt;
&lt;/xml&gt;
"""</span>

xmlDict = xmltodict.parse(xmlStr)[<span class="hljs-string">'xml'</span>]
<span class="hljs-keyword">for</span> key, val <span class="hljs-keyword">in</span> xmlDict.items():
	print(key, <span class="hljs-string">"="</span>, val)

dict字典数据转为XML数据(unparse()方法)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span class="hljs-keyword">import</span> xmltodict

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">textMsg</span><span class="hljs-params">(toUser, fromUser, contentType, content)</span>:</span>
    <span class="hljs-keyword">import</span> time
    responseXMLDict = {
        <span class="hljs-string">"ToUserName"</span>: toUser,
        <span class="hljs-string">"FromUserName"</span>: fromUser,
        <span class="hljs-string">"CreateTime"</span>: int(time.time()),
        <span class="hljs-string">"MsgType"</span>: contentType,
        <span class="hljs-string">"Content"</span>: content
    }
    responseXMLStr = xmltodict.unparse({<span class="hljs-string">"xml"</span>:responseXMLDict})
    <span class="hljs-keyword">return</span> responseXMLStr

print(textMsg(<span class="hljs-string">"toUser"</span>, <span class="hljs-string">"fromUser"</span>, <span class="hljs-string">"text"</span>,<span class="hljs-string">"sunck is a good man"</span>))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信公众号-自定义菜单
自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示
星哥玩云
2022/09/14
3.4K0
微信公众号-自定义菜单
用java开发微信公众号:接收和被动回复普通消息(三)
上篇说完了如何接入微信公众号,本文说一下微信公众号的最基本功能:普通消息的接收和回复。说到普通消息,那么什么是微信公众号所定义的普通消息呢,微信开发者文档中提到的接收的普通消息包括如下几类: 1.文本
古时的风筝
2018/01/08
1.6K0
微信消息的ToUserName与FromUserName
在接收到微信推送的消息中tousername、fromusername的顺序与平台返回给微信(即要发送给微信用户)的交互信息中tousername、fromusername的值是相反的
薛定喵君
2019/11/05
3.1K0
用微信来搞世界上最好的语言——消息收发SDK的实现
基础消息的SDK将前面章节的各种接收消息类型进行了处理,另外对被动发送消息类型进行了定义。
一粒小麦
2019/07/18
1K0
用微信来搞世界上最好的语言——消息收发SDK的实现
微信公众号-公众号推广
为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送
星哥玩云
2022/09/14
10.7K0
微信公众号-公众号推广
微信公众平台开发教程(二) 基本原理及消息接口
微信服务器就相当于一个转发服务器,终端(手机、Pad等)发起请求至微信服务器,微信服务器,然后将请求转发给自定义服务(这就里就是我们的具体实现)。
Java架构师必看
2021/05/19
1.1K0
教你搭建微信公众号自动答复机器人
昨天我们的文章中说到:使用图灵机器人作为应答机器人可以满足要求,但是每天的回复条数在不花钱的情况下只能有100条。对于我这样贫困线人口怎么可能每个月花费99元就为了自动回复呢。于是我就在想还有没有其它的方式能够快速做一个请求和应答表呢?
菜鸟小白的学习分享
2020/07/14
2.1K0
教你搭建微信公众号自动答复机器人
微信公众号开发之如何实现消息交互
总所周知Jfinal 开发中配置非常简单只要在web.xml中添加如下代码就可以将所有的请求交由Jfianl处理
Javen
2018/08/21
1.5K0
微信公众号开发之如何实现消息交互
微信公众号开放接口自定义收发消息
文档地址:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Explanation_of_interface_privileges.html
biaoblog.cn 个人博客
2025/05/21
2100
反射在微信公众平台开发中的应用
1、开发背景 在微信公众号开发的时候,我们都会去解析微信消息,然后根据不同的消息类型做对应的操作。下面是一段微信的消息体: <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[MsgType]]></MsgType> <MsgId>12
三哥
2018/06/15
5280
WeLM简介及微信公众号开发
我的公众号后台设置了关键词自动回复,但是经常收到很多读者打错别字,导致无法触发,正巧,前段时间刚申请到WeLM的使用权限,于是就想着给公众号升级一下。
zstar
2022/11/14
2.9K0
WeLM简介及微信公众号开发
微信公众号推送消息笔记
根据业务需要,开发一个微信公众号的相关开发,根据相关开发和整理总结了一下相关的流程和需要,进行一些整理和总结分享给大家,最近都在加班和忙碌,博客已经很久未更新了,打气精神,再接再厉,申请、认证公众号的一系列流程就不在这里赘述了,主要进行的是技术的分享,要达到的效果如下图:
stark张宇
2024/07/23
3910
微信公众号消息接入(普通消息+模板消息)
  1、“硅谷课堂”公众号实现根据关键字搜索相关课程,如:输入“java”,可返回java相关的一个课程;
别团等shy哥发育
2023/02/25
3.8K0
微信公众号消息接入(普通消息+模板消息)
手把手教你开发微信公众号后台
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2020/08/21
3.1K0
手把手教你开发微信公众号后台
微信公众号-其他消息
视频消息 接收样例 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <ThumbMediaId><![CDATA[thumb_media_id]]>
星哥玩云
2022/09/14
8070
微信公众号-其他消息
微信公众平台开发----自定义菜单、消息处理及获取OpenID(C#)
将以上代码部署到服务器端,通过微信公众平台去验证,如果验证成功,则成为开发者成功,否则失败。验证成功后显示如下图:
庞小明
2018/09/19
4.9K0
微信公众平台开发----自定义菜单、消息处理及获取OpenID(C#)
Python开发微信公众号后台(系列一)
專 欄 ❈ 段晓晨,写过一点爬虫,写过几篇文章。能力虽有限,会尽量把想说的东西讲清楚。 知乎ID:段小草 知乎专栏:小段同学的杂记, https://zhuanlan.zhihu.com/666666❈—— 通过这一系列的文章,我们来介绍一下如何用Python开发微信公众号的后台。 主要工具:SAE+微信公众号+Git+Python本地环境(最好已经安装好了Git并配置好了Python IDE,比如Pycharm) 1. 工欲善其事 首先要简单介绍一下一些准备工作。 1.1 微信公众号 第一步是要注册一个
Python中文社区
2018/01/31
6K0
Python开发微信公众号后台(系列一)
巧用 Serverless,轻松搭建微信公众号的智能后台服务
一般来说,想给微信公众号增加更多的功能,需要有一台服务器,来进行公众号后台服务的搭建。那么在 Serverless 架构下,是否有更简便的方法来实现这么一个公众号后台呢?我们试试? 初步搭建 一、Serverless 原生开发 首先要有一个微信公众号! 接下来,我们要为我们的函数计算服务申请固定 IP: 点击白名单之后,我们可以填写表单,完成固定公网出口 IP 的申请。 接下来进行代码开发。 将函数绑定到公众号后台,并按照文档在函数中完成一个基本的鉴定功能: def checkSignature(
腾讯云serverless团队
2020/05/22
3.8K0
公众号开发:获取用户消息和回复消息
最近在看微信公众号的开发文档,觉得很有意思,可以自定义开发一些功能,比如有人关注了公众号之后,你可以做出稍微复杂点的回复(简单的回复在公众号后台配置就好啦);比如关注者发送了「学习」消息,你可以给他推送一些文章,发送「天气」的消息,你可以回复当前的天气状况;还可以进行素材的管理,用户的管理等等。
Java技术编程
2020/06/10
6K0
公众号开发:获取用户消息和回复消息
PHP微信开发入门(三)
下面,写一个构造自动回复消息的xml类,在微信接收到消息的时候,进行自动消息回复,贴上我的代码 <?php class We_Xml { /** * 构造图文消息最小为1最大为20 * 可以
Pulsar-V
2018/04/18
1.7K0
相关推荐
微信公众号-自定义菜单
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档