发送模板消息

::: warning 注意

  • 要求操作人在该子频道具有发送消息模板消息 的权限。
  • 调用前需要先申请消息模板,这一步会得到一个模板 id,在请求时填在 ark.template_id 上
  • 发送成功之后,会触发一个创建消息的事件。
  • 可用模板参考可用模板
  • 如果发送的消息中包含链接(网页、图片、视频链接等),需要提前在机器人管理端报备,操作流程:操作路径为:”开发设置“ -> ”消息 URL 配置“

:::

使用示例

需要关注ark字段的使用。

  1. token := token.BotToken("appid", "token")
  2. api := botgo.NewOpenAPI(token).WithTimeout(3 * time.Second)
  3. ctx := context.Background()
  4. message, err := api.PostMessage(ctx, channelId, &dto.MessageToCreate{})
  5. if err != nil {
  6. log.Fatalln("调用 PostMessage 接口失败, err = ", err)
  7. }

参数说明

参数 必填 类型 说明
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、其他为文本。

  1. {
  2. "app": "com.tencent.miniapp",
  3. "view": "detail",
  4. "ver": "0.0.0.1",
  5. "desc": "#DESC#",
  6. "prompt": "[QQ小程序]#PROMPT#",
  7. "meta": {
  8. "detail": {
  9. "title": "#TITLE#",
  10. "desc": "#META_DESC#",
  11. "url": "#META_URL#",
  12. "list": "#META_LIST#"
  13. }
  14. }
  15. }

请求体中的 ark 内容为

  1. {
  2. "ark": {
  3. "template_id": 1,
  4. "kv": [
  5. {
  6. "key": "#DESC#",
  7. "value": "机器人订阅消息"
  8. },
  9. {
  10. "key": "#PROMPT#",
  11. "value": "XX机器人"
  12. },
  13. {
  14. "key": "#TITLE#",
  15. "value": "XX机器人消息"
  16. },
  17. {
  18. "key": "#META_URL#",
  19. "value": "http://domain.com/"
  20. },
  21. {
  22. "key": "#META_LIST#",
  23. "obj": [
  24. {
  25. "obj_kv": [
  26. {
  27. "key": "name",
  28. "value": "aaa"
  29. },
  30. {
  31. "key": "age",
  32. "value": "3"
  33. }
  34. ]
  35. },
  36. {
  37. "obj_kv": [
  38. {
  39. "key": "name",
  40. "value": "bbb"
  41. },
  42. {
  43. "key": "age",
  44. "value": "4"
  45. }
  46. ]
  47. }
  48. ]
  49. }
  50. ]
  51. }
  52. }

则实际下发的 json 为

  1. {
  2. "app": "com.tencent.miniapp",
  3. "view": "detail",
  4. "ver": "0.0.0.1",
  5. "desc": "机器人订阅消息",
  6. "prompt": "[QQ小程序]XX机器人",
  7. "meta": {
  8. "detail": {
  9. "title": "XX机器人消息",
  10. "url": "http://domain.com/",
  11. "list": [
  12. { "name": "aaa", "age": "3" },
  13. { "name": "bbb", "age": "4" }
  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 时间

返回示例

  1. {
  2. "id": "101234567890abcdef",
  3. "channel_id": "10001",
  4. "guild_id": "6400000001",
  5. "content": "<@!1234>hello world",
  6. "timestamp": "2021-05-13T14:45:45+08:00",
  7. "tts": false,
  8. "mention_everyone": false,
  9. "author": {
  10. "id": "12345",
  11. "username": "abc",
  12. "avatar": "",
  13. "bot": true
  14. },
  15. "pinned": false,
  16. "type": 0,
  17. "flags": 0
  18. }