# 发送模板消息
注意
- 要求操作人在该子频道具有
发送消息
和模板消息
的权限。 - 调用前需要先申请消息模板,这一步会得到一个模板 id,在请求时填在 ark.template_id 上
- 发送成功之后,会触发一个创建消息的事件。
- 可用模板参考可用模板
- 如果发送的消息中包含链接(网页、图片、视频链接等),需要提前在机器人管理端 (opens new window)报备,操作流程:操作路径为:”开发设置“ -> ”消息 URL 配置“
# 使用示例
需要关注ark
字段的使用。
token := token.BotToken("appid", "token")
api := botgo.NewOpenAPI(token).WithTimeout(3 * time.Second)
ctx := context.Background()
message, err := api.PostMessage(ctx, channelId, &dto.MessageToCreate{})
if err != nil {
log.Fatalln("调用 PostMessage 接口失败, err = ", err)
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 参数说明
参数 | 必填 | 类型 | 说明 |
---|---|---|---|
channelID | 是 | string | 子频道 ID |
MessageToCreate | 是 | MessageToCreate | 消息体结构 |
# MessageToCreate
字段名 | 类型 | 描述 |
---|---|---|
Content | string | 消息内容,文本内容,支持内嵌格式 |
Embed | Embed | embed 消息,一种特殊的 ark |
Ark | Ark | ark 消息 |
Image | string | 图片 url 地址 |
MsgID | string | 要回复的消息 id。带了 msg_id 视为被动回复消息,否则视为主动推送消息 |
MessageReference | MessageReference | 引用消息对象 |
# Embed
字段名 | 类型 | 描述 |
---|---|---|
Title | string | 标题 |
Description | string | 描述 |
Prompt | string | 消息弹窗内容 |
Thumbnail | MessageEmbedThumbnail | 消息的缩略图象 |
Fields | EmbedField[] | Embed字段描述 |
# EmbedField
字段名 | 类型 | 描述 |
---|---|---|
Name | string | 字段名 |
Value | string | 字段值 |
# MessageEmbedThumbnail
字段名 | 类型 | 描述 |
---|---|---|
URL | string | 缩略图url |
# Ark
字段名 | 类型 | 描述 |
---|---|---|
TemplateID | string | ark 模版 ID |
KV | []*ArkKV | ArkKV 数组 |
# ArkKV
字段名 | 类型 | 描述 |
---|---|---|
Key | string | key |
Value | string | value |
Obj | []* ArkObj | ark obj 类型的列表 |
# ArkObj
字段名 | 类型 | 描述 |
---|---|---|
ObjKV | []* ArkObjKV | ArkObjKV 类型的列表 |
# ArkObjKV
字段名 | 类型 | 描述 |
---|---|---|
Key | string | key |
Value | string | value |
# 参数示例
假设模板如下,其中#META_LIST#
类型为数组、#META_URL#
类型为 URL
、其他为文本。
{
"app": "com.tencent.miniapp",
"view": "detail",
"ver": "0.0.0.1",
"desc": "#DESC#",
"prompt": "[QQ小程序]#PROMPT#",
"meta": {
"detail": {
"title": "#TITLE#",
"desc": "#META_DESC#",
"url": "#META_URL#",
"list": "#META_LIST#"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
请求体中的 ark 内容为
{
"ark": {
"template_id": 1,
"kv": [
{
"key": "#DESC#",
"value": "机器人订阅消息"
},
{
"key": "#PROMPT#",
"value": "XX机器人"
},
{
"key": "#TITLE#",
"value": "XX机器人消息"
},
{
"key": "#META_URL#",
"value": "http://domain.com/"
},
{
"key": "#META_LIST#",
"obj": [
{
"obj_kv": [
{
"key": "name",
"value": "aaa"
},
{
"key": "age",
"value": "3"
}
]
},
{
"obj_kv": [
{
"key": "name",
"value": "bbb"
},
{
"key": "age",
"value": "4"
}
]
}
]
}
]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
则实际下发的 json 为
{
"app": "com.tencent.miniapp",
"view": "detail",
"ver": "0.0.0.1",
"desc": "机器人订阅消息",
"prompt": "[QQ小程序]XX机器人",
"meta": {
"detail": {
"title": "XX机器人消息",
"url": "http://domain.com/",
"list": [
{ "name": "aaa", "age": "3" },
{ "name": "bbb", "age": "4" }
]
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 返回说明
返回Message 对象。
# Message
字段名 | 类型 | 描述 |
---|---|---|
ID | string | 消息 ID |
ChannelID | string | 子频道 ID |
GuildID | string | 频道 ID |
Content | string | 消息内容 |
Timestamp | Timestamp | 消息创建时间,是个 iISO8601 timestamp 字符串,例:"2021-11-23T15:16:48+08:00" |
Author | User | 消息创建者 |
Member | Member | 消息创建者的 member 信息 |
# User
字段名 | 类型 | 描述 |
---|---|---|
ID | string | 用户 ID |
Username | string | 用户名 |
Avatar | string | 用户头像地址 |
Bot | bool | 是否是机器人 |
UnionOpenID | string | 特殊关联应用的 openid,需要特殊申请并配置后才会返回。如需申请,请联系平台运营人员。 |
UnionUserAccount | string | 机器人关联的互联应用的用户信息,与 union_openid 关联的应用是同一个。如需申请,请联系平台运营人员。 |
# Member
字段名 | 类型 | 描述 |
---|---|---|
GuildID | string | 频道ID |
User | User | 用户基础信息,来自 QQ 资料,只有成员相关接口中会填充此信息 |
Nick | string | 用户在频道内的昵称 |
Roles | string[] | 用户在频道内的身份组 ID,默认值可参考DefaultRoleIDs |
JoinedAt | Timestamp | 用户加入频道的时间,是个 ISO8601 timestamp 字符串,例:"2021-11-23T15:16:48+08:00" |
# DefaultRoleIDs
系统默认生成下列身份组 ID。
身份组 ID 默认值 | 描述 |
---|---|
1 | 全体成员 |
2 | 管理员 |
4 | 群主/创建者 |
5 | 子频道管理员 |
# Timestamp
字段名 | 类型 | 描述 |
---|---|---|
Timestamp | string | 时间 |
# 返回示例
{
"id": "101234567890abcdef",
"channel_id": "10001",
"guild_id": "6400000001",
"content": "<@!1234>hello world",
"timestamp": "2021-05-13T14:45:45+08:00",
"tts": false,
"mention_everyone": false,
"author": {
"id": "12345",
"username": "abc",
"avatar": "",
"bot": true
},
"pinned": false,
"type": 0,
"flags": 0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18