send_option.go 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package robot
  2. import "github.com/silenceper/wechat/v2/util"
  3. // WebhookSendResponse 机器人发送群组消息响应
  4. type WebhookSendResponse struct {
  5. util.CommonError
  6. }
  7. // WebhookSendTextOption 机器人发送文本消息请求参数
  8. type WebhookSendTextOption struct {
  9. MsgType string `json:"msgtype"` // 消息类型,此时固定为 text
  10. Text struct {
  11. Content string `json:"content"` // 文本内容,最长不超过 2048 个字节,必须是 utf8 编码
  12. MentionedList []string `json:"mentioned_list"` // userid 的列表,提醒群中的指定成员 (@某个成员),@all 表示提醒所有人,如果开发者获取不到 userid,可以使用 mentioned_mobile_list
  13. MentionedMobileList []string `json:"mentioned_mobile_list"` // 手机号列表,提醒手机号对应的群成员 (@某个成员),@all 表示提醒所有人
  14. } `json:"text"` // 文本消息内容
  15. }
  16. // WebhookSendMarkdownOption 机器人发送 markdown 消息请求参数
  17. // 支持语法参考 https://developer.work.weixin.qq.com/document/path/91770
  18. type WebhookSendMarkdownOption struct {
  19. MsgType string `json:"msgtype"` // 消息类型,此时固定为 markdown
  20. Markdown struct {
  21. Content string `json:"content"` // markdown 内容,最长不超过 4096 个字节,必须是 utf8 编码
  22. } `json:"markdown"` // markdown 消息内容
  23. }
  24. // WebhookSendImageOption 机器人发送图片消息请求参数
  25. type WebhookSendImageOption struct {
  26. MsgType string `json:"msgtype"` // 消息类型,此时固定为 image
  27. Image struct {
  28. Base64 string `json:"base64"` // 图片内容的 base64 编码
  29. MD5 string `json:"md5"` // 图片内容(base64 编码前)的 md5 值
  30. } `json:"image"` // 图片消息内容
  31. }
  32. // WebhookSendNewsOption 机器人发送图文消息请求参数
  33. type WebhookSendNewsOption struct {
  34. MsgType string `json:"msgtype"` // 消息类型,此时固定为 news
  35. News struct {
  36. Articles []struct {
  37. Title string `json:"title"` // 标题,不超过 128 个字节,超过会自动截断
  38. Description string `json:"description"` // 描述,不超过 512 个字节,超过会自动截断
  39. URL string `json:"url"` // 点击后跳转的链接
  40. PicURL string `json:"picurl"` // 图文消息的图片链接,支持 JPG、PNG 格式,较好的效果为大图 1068*455,小图 150*150
  41. } `json:"articles"` // 图文消息列表 一个图文消息支持 1 到 8 条图文
  42. } `json:"news"` // 图文消息内容
  43. }
  44. // WebhookSendFileOption 机器人发送文件消息请求参数
  45. type WebhookSendFileOption struct {
  46. MsgType string `json:"msgtype"` // 消息类型,此时固定为 file
  47. File struct {
  48. MediaID string `json:"media_id"` // 文件 id,通过下文的文件上传接口获取
  49. } `json:"file"` // 文件类型
  50. }
  51. // WebHookSendTempNoticeOption 机器人发送文本通知模版消息请求参数
  52. type WebHookSendTempNoticeOption struct {
  53. MsgType string `json:"msgtype"` // 消息类型,此时的消息类型固定为 template_card
  54. TemplateCard TemplateCard `json:"template_card"` // 具体的模版卡片参数
  55. }
  56. // TemplateCard 具体的模版卡片参数
  57. type TemplateCard struct {
  58. CardType string `json:"card_type"` // 模版卡片的模版类型,文本通知模版卡片的类型为 text_notice
  59. Source CardSource `json:"source"` // 卡片来源样式信息,不需要来源样式可不填写
  60. MainTitle CardTitle `json:"main_title"` // 模版卡片的主要内容,包括一级标题和标题辅助信息
  61. EmphasisContent CardTitle `json:"emphasis_content"` // 关键数据样式
  62. QuoteArea CardQuoteArea `json:"quote_area"` // 引用文献样式,建议不与关键数据共用
  63. SubTitleText string `json:"sub_title_text"` // 二级普通文本,建议不超过 112 个字。模版卡片主要内容的一级标题 main_title.title 和二级普通文本 sub_title_text 必须有一项填写
  64. HorizontalContentList []CardContent `json:"horizontal_content_list"` // 二级标题 + 文本列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过 6
  65. JumpList []JumpContent `json:"jump_list"` // 跳转指引样式的列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过 3
  66. CardAction CardAction `json:"card_action"` // 整体卡片的点击跳转事件,text_notice 模版卡片中该字段为必填项
  67. }
  68. // CardSource 卡片来源样式信息,不需要来源样式可不填写
  69. type CardSource struct {
  70. IconURL string `json:"icon_url"` // 来源图片的 url
  71. Desc string `json:"desc"` // 来源图片的描述,建议不超过 13 个字
  72. DescColor int `json:"desc_color"` // 来源文字的颜色,目前支持:0(默认) 灰色,1 黑色,2 红色,3 绿色
  73. }
  74. // CardTitle 标题和标题辅助信息
  75. type CardTitle struct {
  76. Title string `json:"title"` // 标题,建议不超过 26 个字。模版卡片主要内容的一级标题 main_title.title 和二级普通文本 sub_title_text 必须有一项填写
  77. Desc string `json:"desc"` // 标题辅助信息,建议不超过 30 个字
  78. }
  79. // CardQuoteArea 引用文献样式,建议不与关键数据共用
  80. type CardQuoteArea struct {
  81. Type int `json:"type"` // 引用文献样式区域点击事件,0 或不填代表没有点击事件,1 代表跳转 url,2 代表跳转小程序
  82. URL string `json:"url,omitempty"` // 点击跳转的 url,quote_area.type 是 1 时必填
  83. Appid string `json:"appid,omitempty"` // 点击跳转的小程序的 appid,quote_area.type 是 2 时必填
  84. Pagepath string `json:"pagepath,omitempty"` // 点击跳转的小程序的 pagepath,quote_area.type 是 2 时选填
  85. Title string `json:"title"` // 引用文献样式的标题
  86. QuoteText string `json:"quote_text"` // 引用文献样式的引用文案
  87. }
  88. // CardContent 二级标题 + 文本列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过 6
  89. type CardContent struct {
  90. KeyName string `json:"keyname"` // 链接类型,0 或不填代表是普通文本,1 代表跳转 url,2 代表下载附件,3 代表@员工
  91. Value string `json:"value"` // 二级标题,建议不超过 5 个字
  92. Type int `json:"type,omitempty"` // 二级文本,如果 horizontal_content_list.type 是 2,该字段代表文件名称(要包含文件类型),建议不超过 26 个字
  93. URL string `json:"url,omitempty"` // 链接跳转的 url,horizontal_content_list.type 是 1 时必填
  94. MediaID string `json:"media_id,omitempty"` // 附件的 media_id,horizontal_content_list.type 是 2 时必填
  95. UserID string `json:"userid,omitempty"` // 被@的成员的 userid,horizontal_content_list.type 是 3 时必填
  96. }
  97. // JumpContent 跳转指引样式的列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过 3
  98. type JumpContent struct {
  99. Type int `json:"type"` // 跳转链接类型,0 或不填代表不是链接,1 代表跳转 url,2 代表跳转小程序
  100. URL string `json:"url,omitempty"` // 跳转链接的 url,jump_list.type 是 1 时必填
  101. Title string `json:"title"` // 跳转链接样式的文案内容,建议不超过 13 个字
  102. AppID string `json:"appid,omitempty"` // 跳转链接的小程序的 appid,jump_list.type 是 2 时必填
  103. PagePath string `json:"pagepath,omitempty"` // 跳转链接的小程序的 pagepath,jump_list.type 是 2 时选填
  104. }
  105. // CardAction 整体卡片的点击跳转事件,text_notice 模版卡片中该字段为必填项
  106. type CardAction struct {
  107. Type int `json:"type"` // 卡片跳转类型,1 代表跳转 url,2 代表打开小程序。text_notice 模版卡片中该字段取值范围为 [1,2]
  108. URL string `json:"url,omitempty"` // 跳转事件的 url,card_action.type 是 1 时必填
  109. Appid string `json:"appid,omitempty"` // 跳转事件的小程序的 appid,card_action.type 是 2 时必填
  110. PagePath string `json:"pagepath,omitempty"` // 跳转事件的小程序的 pagepath,card_action.type 是 2 时选填
  111. }