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。


0 0
原创粉丝点击