QQ公众号如何正确接收消息并被动响应消息
来源:互联网 发布:淘宝密码加密算法 编辑:程序博客网 时间:2024/03/29 17:21
大家好,我是QQ公众号【拇指特工】的技术总监小李,从今天起,我将持续发表关于QQ公众号的最新动态和进展。
【拇指特工】
QQ公众平台聚合着无限可能。凭借16年来积累的8亿用户资源,依托强势平台技术、数据沉淀和社交关系,QQ公众平台将有效聚集品牌和消费者,以开放合作的姿态与你一起打造未来。
今天我们来谈谈QQ公众号如何正确接收消息并被动响应消息?
首先是接收普通消息,
当普通手Q用户向生活服务号号发消息时,生活服务号服务器将POST消息的XML数据包到开发者填写的URL上。各消息类型的推送XML数据包结构如下:注意:生活服务号服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。
接口描述
关于重试的消息排重,推荐使用msgid排重。
假如用户服务器无法保证在五秒内处理并回复,可以直接回复空串或success,生活服务号服务器不会对此作任何处理,并且不会发起重试。
1.接收文本消息
推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1348831860</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[this is atest]]></Content><MsgId>1234567890123456</MsgId></xml>
参数说明:
参数
描述
ToUserName
开发者生活服务号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间(整型)
MsgType
text
Content
文本消息内容
MsgId
消息id,64位整形
2.接收地理位置消息
推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1351776360</CreateTime><MsgType><![CDATA[location]]></MsgType><Location_X>23.134521</Location_X><Location_Y>113.358803</Location_Y><Scale>20</Scale><Label><![CDATA[位置信息]]></Label><MsgId>1234567890123456</MsgId></xml>
参数说明:
参数
描述
ToUserName
开发者生活服务号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
location
Location_X
地理位置维度
Location_Y
地理位置经度
Scale
地图缩放大小
Label
地理位置信息
MsgId
消息id,64位整型
其次是接收事件推送,接口描述
当普通手Q用户向公众账号发消息时,生活服务号服务器将POST消息的XML数据包到开发者填写的URL上。各消息类型的推送XML数据包结构如下:
注意:生活服务号服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,关于重试的消息排重,推荐使用msgid排重,假如用户服务器无法保证在五秒内处理并回复,可以直接回复空串或”success”字串,生活服务号服务器不会对此作任何处理,并且不会发起重试。
接口使用说明
1.关注/取消关注事件
用户在关注与取消关注公众号时,生活服务号把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑。
推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event></xml>
参数说明:
参数
描述
ToUserName
开发者生活服务号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
消息类型,event
Event
事件类型:subscribe(订阅)、unsubscribe(取消订阅)
2.扫描带参数二维码事件
用户扫描带场景值二维码时,可能推送以下两种事件:
a).如果用户还未关注公众号,则用户可以关注公众号,关注后生活服务号会将带场景值关注事件推送给开发者。
b).如果用户已经关注公众号,则生活服务号会将带场景值扫描事件推送给开发者。
a).用户未关注时,进行关注后的事件推送
推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event><EventKey><![CDATA[qrscene_123123]]></EventKey><Ticket><![CDATA[TICKET]]></Ticket></xml>
参数说明:
参数
描述
ToUserName
开发者生活服务号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
消息类型,event
Event
事件类型,subscribe
EventKey
事件KEY值,qrscene_为前缀,后面为二维码的参数值
Ticket
二维码的ticket,可用来换取二维码图片
b).用户已关注时的事件推送
推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[SCAN]]></Event><EventKey><![CDATA[SCENE_VALUE]]></EventKey><Ticket><![CDATA[TICKET]]></Ticket></xml>
参数说明:
参数
描述
ToUserName
开发者生活服务号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
消息类型,event
Event
事件类型,SCAN
EventKey
事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id
Ticket
二维码的ticket,可用来换取二维码图片
3.上报地理位置事件
用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,或在进入会话后每5秒上报一次地理位置,公众号可以在公众平台网站中修改以上设置。上报地理位置时,生活服务号会将上报地理位置事件推送到开发者填写的URL。
推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[LOCATION]]></Event><Latitude>23.137466</Latitude><Longitude>113.352425</Longitude><Precision>119.385040</Precision></xml>
参数说明:
参数
描述
ToUserName
开发者生活服务号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
消息类型,event
Event
事件类型,LOCATION
Latitude
地理位置纬度
Longitude
地理位置经度
Precision
地理位置精度
4.自定义菜单事件
用户点击自定义菜单后,生活服务号会把点击事件推送给开发者,请注意,点击菜单弹出子菜单,不会产生上报。
a).点击菜单拉取消息时的事件推送
推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[CLICK]]></Event><EventKey><![CDATA[EVENTKEY]]></EventKey></xml>
参数说明:
参数
描述
ToUserName
开发者生活服务号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
消息类型,event
Event
事件类型,CLICK
EventKey
事件KEY值,与自定义菜单接口中KEY值对应
5.点击事件按钮类型推送
在场景消息尾部支持增加按钮(最少0个,最多3个)。点击按钮可实现点击(CLICK事件),并将此事件(含openid msgid等信息)上报至调用方(开发者),开发者可通过回包给点击用户下发消息。
推送XML数据包示例:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[CLICK]]></Event><EventKey><![CDATA[EVENTKEY]]></EventKey></xml>
参数说明:
参数
描述
ToUserName
开发者生活服务号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间(整型)
MsgType
消息类型,event
Event
事件类型,CLICK
EventKey
事件KEY值,与buton参数中的KEY值对应
最后是被动回复消息,
接口描述
对于每一个POST请求,开发者在响应包中返回特定XML结构,对该消息进行响应(现支持回复文本、图文)。
生活服务号服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。
关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime 排重。
发送被动响应消息其实并不是一种接口,而是对生活服务号服务器发过来消息的一次回复,假如服务器无法保证在五秒内处理并回复,必须做下述回复,生活服务号服务器不会对此作任何处理,并且不会发起重试(这种情况下,可以使用客服消息接口进行异步回复):
1、直接回复空串(指字节长度为0的空字符串,而不是XML结构体中content字段的内容为空)
2、直接回复success
请开发者注意,一旦遇到以下情况,生活服务号都会在公众号会话中,向用户下发系统提示“该公众号暂时无法提供服务,请稍后再试”:
1、开发者在5秒内未回复任何内容
2、开发者回复了异常数据,比如JSON数据等
接口使用说明
1.回复文本消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好]]></Content></xml>
参数
是否必须
描述
ToUserName
是
接收方帐号(收到的OpenID)
FromUserName
是
开发者生活服务号
CreateTime
是
消息创建时间 (整型)
MsgType
是
text
Content
是
回复的消息内容
2.回复图文消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>2</ArticleCount><Articles><item><Title><![CDATA[title1]]></Title><Description><![CDATA[description1]]></Description><PicUrl><![CDATA[picurl]]></PicUrl><Url><![CDATA[url]]></Url></item><item><Title><![CDATA[title]]></Title><Description><![CDATA[description]]></Description><PicUrl><![CDATA[picurl]]></PicUrl><Url><![CDATA[url]]></Url></item></Articles></xml>
参数
是否必须
描述
ToUserName
是
接收方帐号(收到的OpenID)
FromUserName
是
开发者生活服务号
CreateTime
是
消息创建时间 (整型)
MsgType
是
news
ArticleCount
是
图文消息个数,限制为10条以内
Articles
是
多条图文消息信息,默认第一个item为大图,注意,如果图文数超过10,则将会无响应
Title
否
图文消息标题
Description
否
图文消息描述
PicUrl
否
图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
Url
否
点击图文消息跳转链接
3.回复图片消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[media_id]]></MediaId></Image></xml>
参数
是否必须
描述
ToUserName
是
接收方帐号(收到的OpenID)
FromUserName
是
开发者账号
CreateTime
是
消息创建时间 (整型)
MsgType
是
image
MediaId
是
通过上传多媒体文件,得到的id。
- QQ公众号如何正确接收消息并被动响应消息
- 项目开发-微信公众号被动响应消息处理
- 微信公众号三方平台开发【代微信公众号接收消息事件并响应】
- 微信公众平台-接收发送被动响应消息-PHP示例
- 微信公众平台-接收消息与发送被动消息
- 微信公众号开发--消息的接收与被动回复消息
- 用java开发微信公众号:接收和被动回复普通消息(三)
- PHP-微信公众平台开发-接收用户输入消息类型并响应
- 微信企业号接收消息并自动响应
- 如何使用公众号接口来接收消息?
- 如何正确接收 GitHub 的消息邮件
- 微信公众帐号开发-消息的接收与响应
- 公众平台测试帐号开发全流程第6篇-接收和被动回复消息
- Java微信二次开发之5-消息的接收与响应,主动接收与被动接收的区别
- 微信公众平台 java示例 接收消息并回复
- 如何动态创建按钮,并响应消息
- 微信公众号消息加解密方式用于接收用户发来的消息并做回应
- dotNet微信公众号开发二:接收并回复普通文字消息
- Python -- 合并两个列表
- Android RecyclerView 梦幻般的控件 使用解析(一)
- C++11: bitset
- 关于防反接保护电路设计的讨论
- 第16周SHH数据结构-【项目1-验证算法(6)堆排序 】
- QQ公众号如何正确接收消息并被动响应消息
- JAVA中this用法小结
- 欢迎使用CSDN-markdown编辑器
- shell脚本中的EOF以及文件重定向
- Android Action Bar 详解篇
- java中的throw与throws的区别
- 斗地主项目设计
- Codeforces Round #269 (Div. 2) 总结
- Linux运行时IO设备电源管理框架---PM