github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/message/mass/mass2users/msg.go (about)

     1  package mass2users
     2  
     3  import (
     4  	"github.com/chanxuehong/wechat/mp/core"
     5  )
     6  
     7  const (
     8  	MsgTypeText   core.MsgType = "text"
     9  	MsgTypeImage  core.MsgType = "image"
    10  	MsgTypeVoice  core.MsgType = "voice"
    11  	MsgTypeVideo  core.MsgType = "mpvideo"
    12  	MsgTypeNews   core.MsgType = "mpnews"
    13  	MsgTypeWxCard core.MsgType = "wxcard"
    14  )
    15  
    16  type MsgHeader struct {
    17  	ToUser  []string     `json:"touser,omitempty"`
    18  	MsgType core.MsgType `json:"msgtype"`
    19  }
    20  
    21  type Text struct {
    22  	MsgHeader
    23  	Text struct {
    24  		Content string `json:"content"`
    25  	} `json:"text"`
    26  }
    27  
    28  func NewText(toUser []string, content string) *Text {
    29  	var msg Text
    30  	msg.MsgType = MsgTypeText
    31  	msg.ToUser = toUser
    32  	msg.Text.Content = content
    33  	return &msg
    34  }
    35  
    36  type Image struct {
    37  	MsgHeader
    38  	Image struct {
    39  		MediaId string `json:"media_id"`
    40  	} `json:"image"`
    41  }
    42  
    43  func NewImage(toUser []string, mediaId string) *Image {
    44  	var msg Image
    45  	msg.MsgType = MsgTypeImage
    46  	msg.ToUser = toUser
    47  	msg.Image.MediaId = mediaId
    48  	return &msg
    49  }
    50  
    51  type Voice struct {
    52  	MsgHeader
    53  	Voice struct {
    54  		MediaId string `json:"media_id"` // mediaId 通过上传多媒体文件得到
    55  	} `json:"voice"`
    56  }
    57  
    58  func NewVoice(toUser []string, mediaId string) *Voice {
    59  	var msg Voice
    60  	msg.MsgType = MsgTypeVoice
    61  	msg.ToUser = toUser
    62  	msg.Voice.MediaId = mediaId
    63  	return &msg
    64  }
    65  
    66  type Video struct {
    67  	MsgHeader
    68  	Video struct {
    69  		MediaId string `json:"media_id"`
    70  	} `json:"mpvideo"`
    71  }
    72  
    73  // 新建视频消息.
    74  //
    75  //	NOTE: 对于临时素材, mediaId 应该通过 media.UploadVideo2 得到
    76  func NewVideo(toUser []string, mediaId string) *Video {
    77  	var msg Video
    78  	msg.MsgType = MsgTypeVideo
    79  	msg.ToUser = toUser
    80  	msg.Video.MediaId = mediaId
    81  	return &msg
    82  }
    83  
    84  // 图文消息
    85  type News struct {
    86  	MsgHeader
    87  	News struct {
    88  		MediaId string `json:"media_id"`
    89  	} `json:"mpnews"`
    90  }
    91  
    92  // 新建图文消息.
    93  //
    94  //	NOTE: 对于临时素材, mediaId 应该通过 media.UploadNews 得到
    95  func NewNews(toUser []string, mediaId string) *News {
    96  	var msg News
    97  	msg.MsgType = MsgTypeNews
    98  	msg.ToUser = toUser
    99  	msg.News.MediaId = mediaId
   100  	return &msg
   101  }
   102  
   103  // 卡券消息
   104  type WxCard struct {
   105  	MsgHeader
   106  	WxCard struct {
   107  		CardId  string `json:"card_id"`
   108  		CardExt string `json:"card_ext,omitempty"`
   109  	} `json:"wxcard"`
   110  }
   111  
   112  // 新建卡券, 特别注意: 目前该接口仅支持填入非自定义code的卡券和预存模式的自定义code卡券.
   113  //
   114  //	cardExt 可以为空
   115  func NewWxCard(toUser []string, cardId, cardExt string) *WxCard {
   116  	var msg WxCard
   117  	msg.MsgType = MsgTypeWxCard
   118  	msg.ToUser = toUser
   119  	msg.WxCard.CardId = cardId
   120  	msg.WxCard.CardExt = cardExt
   121  	return &msg
   122  }