发送模板消息
::: warning 注意
- 要求操作人在该子频道具有
发送消息和 模板消息 的权限。 - 调用前需要先申请消息模板,这一步会得到一个模板 id,在请求时填在 ark.template_id 上
- 发送成功之后,会触发一个创建消息的事件。
- 可用模板参考可用模板
- 如果发送的消息中包含链接(网页、图片、视频链接等),需要提前在机器人管理端报备,操作流程:操作路径为:”开发设置“ -> ”消息 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)}
参数说明
| 参数 |
必填 |
类型 |
说明 |
| 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
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#" } }}
请求体中的 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" } ] } ] } ] }}
则实际下发的 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" } ] } }}
返回说明
返回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}