发送模板消息

::: warning 注意

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

:::

使用示例

需要关注ark字段的使用。

  1. async function demo() {
  2. let { data } = await client.messageApi.postMessage(channelID, message);
  3. }

参数说明

参数 必填 类型 说明
channelID string 子频道 ID
messsage MessageToCreate 消息体结构

MessageToCreate

字段名 类型 描述
content string 消息内容,文本内容,支持内嵌格式
embed MessageEmbed embed 消息,一种特殊的 ark
ark MessageArk ark 消息
image string 图片 url 地址
msg_id string 要回复的消息 id。带了 msg_id 视为被动回复消息,否则视为主动推送消息

MessageEmbed

字段名 类型 描述
title string 标题
prompt string 消息弹窗内容
thumbnail MessageEmbedThumbnail 缩略图
fields MessageEmbedField[] embed 字段数据

MessageEmbedThumbnail

字段名 类型 描述
url string 图片地址

MessageEmbedField

字段名 类型 描述
name string 字段名

MessageArk

字段名 类型 描述
template_id number ark 模板 id(需要先申请)
kv MessageAkrKv[] kv 值列表

MessageArkKv

字段名 类型 描述
key string key
value string value
obj MessageArkObj[] ark obj 类型的列表

MessageArkObj

字段名 类型 描述
obj_kv MessageArkObjKv[] ark objkv 列表

MessageArkObjKv

字段名 类型 描述
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
channel_id string 子频道 ID
guild_id string 频道 ID
content string 消息内容
timestamp string 消息创建时间,是个 iISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”
edited_timestamp string 消息编辑时间,是个 iISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”
mention_everyone boolean 是否是@全员消息
author User 消息创建者
member Member 消息创建者的 member 信息

User

字段名 类型 描述
id string 用户 ID
username string 用户名
bot boolean 是否是机器人

Member

字段名 类型 描述
roles string[] 用户在频道内的身份组 ID,默认值可参考DefaultRoleIDs
joined_at string 用户加入频道的时间,是个 ISO8601 timestamp 字符串,例:”2021-11-23T15:16:48+08:00”

DefaultRoleIDs

系统默认生成下列身份组 ID。

身份组 ID 默认值 描述
1 全体成员
2 管理员
4 群主/创建者
5 子频道管理员

返回示例

  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. }