-
Notifications
You must be signed in to change notification settings - Fork 12
提交事件说明
Hstb edited this page Aug 28, 2017
·
1 revision
- 使用
Socket
和HTTP(S)
方法提交数据 - 使用
json
和key=value
(url参数形式) 的数据格式 - 提交 校验参数(Token) 达到防盗链效果
如果设置了 校验数据 所需的key
,那么,插件在每次提交的数据内会附加参数:authTime
和authToken
,如
{
"authTime":1503725239,
"authToken":"12bb459428005008d7ba7503a697ea02"
}
其中,
-
authTime
表示 当前时间的十位时间戳, -
authToken
表示 校验参数Token
。
- 获取 当前时间的十位时间戳,作为
authTime
- 将 检验数据所设置的
key
与authTime
组合成key:authTime
形式的字符串 - 计算 第2步获得的字符串 的MD5值,应为 32位小写形式
- PHP
$key = '456'; //检验数据所设置的key
$authTime = time(); //当前时间的十位时间戳
$authToken = md5("$key:$authTime"); //计算token
- Python 3
# 引用库
import hashlib
from datetime import datetime
# 当前时间的十位时间戳
time = int(datetime.now().timestamp())
authTime = time
# 检验数据所设置的key
key = '456'
# 计算token
md5 = hashlib.md5()
string = bytes('%s:%d' % (key, time), encoding='utf-8')
md5.update(string)
authToken = md5.hexdigest()
服务端(PHP
,Python
等)应做好判断,避免接口被误调用
- 事件的每个属性 (来源QQ,消息类型) 将直接作为根属性
- 每个事件提交的属性并不相同,但可能存在一些「公共属性」。
- 输出的数据必须为
json
数据格式,允许输出多行json文本 - 如果不需要插件处理返回的数据,可以直接输出
[]
-
必须输出内容,否则插件会视为与接口的通信失败,哪怕状态码为
200
- 若属性名为
a.xx
格式,则表示这是一个子属性 - 如果属性类型为
array
,并且使用key=value
形式提交,则需对该属性的值进行json_decode
- 在聊天事件下(私聊,群,讨论组消息),如果消息内容包含图片(image),则会提交
originalMsg
,imageInfo
属性,例如:
{
"originalMsg":"[CQ:image,file=930C95C555552FE8BB.png]",
"imageInfo":[
{
"md5":"930C95C555552FE8BB4",
"width":629,
"height":523,
"size":23472,
"url":"https://gchat.qpic.cn",
"addTime":1503650169
}
]
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
originalMsg |
string | - | 消息原文 |
imageInfo |
array | - | 图片信息数组 |
imageInfo[i] |
object | - | 第++i 个图片的信息 |
imageInfo[i].md5 |
string | - | 图片的md5值 |
imageInfo[i].width |
int | - | 图片的宽度 |
imageInfo[i].height |
int | - | 图片的高度 |
imageInfo[i].size |
int | - | 图片的大小,单位:B |
imageInfo[i].url |
string | - | 图片的下载地址 |
imageInfo[i].addTime |
int | - | 图片的上传时间,时间戳形式 |
提交数据:
{
"type":1,
"subType":11,
"qq":123456,
"msg":"gg",
"font":6623256
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 1 |
事件类型,此事件固定为1
|
subType |
int |
1 ,2 ,3 ,11
|
事件子类型,11 /来自好友 1 /来自在线状态 2 /来自群 3 /来自讨论组 |
qq |
number | - | 触发事件(即发送消息)的QQ号 |
msg |
string | - | 消息内容 |
font |
int | - | 对方使用的字体id |
提交数据:
{
"type":2,
"subType":1,
"qq":123456,
"group":667890,
"msg":"gg",
"font":182084192
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 2 |
事件类型,此事件固定为2
|
subType |
int |
1 ,2 ,3
|
事件子类型,1 /普通消息,2 /匿名消息,3 /系统消息 |
group |
number | - | 事件来源的QQ群号 |
qq |
number | - | 触发事件(即发送消息)的QQ号 |
msg |
string | - | 消息内容 |
font |
int | - | 对方使用的字体id |
收到匿名消息时,qq
的值会固定为800010000
,
并提交fromAnonymous
,anonymousInfo
参数,如
{
"fromAnonymous":"AAAAA0Q194=",
"anonymousInfo":{
"aid":1000013,
"code":"曹植",
"token":"S4EyN0c8/DX3g=="
}
}
属性说明:
| 属性名 | 类型 | 说明 |
| --- | --- | --- | --- |
| fromAnonymous
| string | 来源匿名用户 |
| anonymousInfo
| object | 匿名用户的信息 |
| anonymousInfo.aid
| number | 匿名用户标识 |
| anonymousInfo.code
| string | 匿名用户代号,如"大力鬼王" |
| anonymousInfo.token
| string | 匿名用户Token,已Base64编码 |
提交数据:
{
"type":4,
"subType":1,
"qq":6767688,
"group":123456,
"msg":"gg",
"font":44199040
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 4 |
事件类型,此事件固定为4
|
subType |
int | 1 |
事件子类型,目前固定为1
|
group |
number | - | 事件来源的讨论组号 |
qq |
number | - | 触发事件(即发送消息)的QQ号 |
msg |
string | - | 消息内容 |
font |
int | - | 对方使用的字体id |
提交数据:
{
"type":11,
"subType":1,
"qq":68888890,
"group":11111111,
"file":"AC/b=",
"fileInfo":{
"size":21246835,
"busid":102,
"name":"com.segmentfault.app-1.apk",
"id":"/8a179ccf-bc0f-4abd-8656-beb6666b0452"
}
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 11 |
事件类型,此事件固定为11
|
subType |
int | 1 |
事件子类型,目前固定为1
|
group |
number | - | 事件来源的QQ群号 |
qq |
number | - | 触发事件(即发送消息)的QQ号 |
file |
string | - | 无用的文件信息 |
fileInfo |
object | - | 文件信息 |
fileInfo.size |
int | - | 文件大小 |
fileInfo.busid |
int | - | 文件busid |
fileInfo.name |
string | - | 文件名 |
fileInfo.id |
string | - | 文件id |
提交数据:
{
"type":101,
"subType":1,
"group":123456,
"beingOperateQQ":123456
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 101 |
事件类型,此事件固定为101
|
subType |
int |
1 ,2
|
事件子类型,1 /被取消管理员,2 /被设置管理员 |
group |
number | - | 事件来源的QQ群号 |
beingOperateQQ |
number | - | 被操作的QQ号 |
提交数据:
{
"type":102,
"subType":2,
"qq":99998,
"group":123456,
"beingOperateQQ":11223456
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 102 |
事件类型,此事件固定为102
|
subType |
int |
1 ,2
|
事件子类型,1 /群员离开,2 /群员被踢 |
group |
number | - | 事件来源的QQ群号 |
qq |
number | - | 操作者QQ(仅subType 为2 时存在) |
beingOperateQQ |
number | - | 被操作QQ号(即被踢的QQ) |
提交数据:
{
"type":103,
"subType":1,
"qq":666663,
"group":123456,
"beingOperateQQ":11223456
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 103 |
事件类型,此事件固定为103
|
subType |
int |
1 ,2
|
事件子类型,1 /管理员已同意,2 /管理员邀请 |
group |
number | - | 事件来源的QQ群号 |
qq |
number | - | 操作者QQ(即管理员QQ) |
beingOperateQQ |
number | - | 被操作QQ(即加群的QQ) |
提交数据:
{
"type":201,
"subType":1,
"qq":11223456
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 201 |
事件类型,此事件固定为201
|
subType |
int | 1 |
事件子类型,目前固定为1
|
qq |
number | - | 来源QQ |
提交数据:
{
"type":301,
"subType":1,
"qq":11223456,
"msg":"问题1:加我作甚么 回答:。。。",
"responseFlag":"2479"
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 301 |
事件类型,此事件固定为301
|
subType |
int | 1 |
事件子类型,目前固定为1
|
msg |
string | - | 附言 |
responseFlag |
string | - | 反馈标识,用于处理请求 |
提交数据:
{
"type":302,
"subType":1,
"qq":23333333,
"group":123456,
"msg":"",
"responseFlag":"2477"
}
属性说明:
属性名 | 类型 | 可能的值 | 说明 |
---|---|---|---|
type |
int | 301 |
事件类型,此事件固定为301
|
subType |
int | 1 |
事件子类型,目前固定为1
|
group |
number | - | 事件来源的QQ群号 |
qq |
number | - | 来源QQ(即请求加群的QQ) |
msg |
string | - | 附言 |
responseFlag |
string | - | 反馈标识,用于处理请求 |