forked from omigo/weixin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrecvmsg.go
185 lines (170 loc) · 5.42 KB
/
recvmsg.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
package weixin
import "github.com/arstd/log"
// RecvMsg 用户消息
type RecvMsg interface{}
// NewRecvMsg 把通用 struct 转化成相应类型的 struct
func NewRecvMsg(msg *Message) RecvMsg {
switch msg.MsgType {
case MsgTypeText:
return NewRecvText(msg)
case MsgTypeImage:
return NewRecvImage(msg)
case MsgTypeVoice:
return NewRecvVoice(msg)
case MsgTypeVideo:
return NewRecvVideo(msg)
case MsgTypeShortVideo:
return NewRecvVideo(msg)
case MsgTypeLocation:
return NewRecvLocation(msg)
case MsgTypeLink:
return NewRecvLink(msg)
default:
log.Errorf("unexpected receive MsgType: %s", msg.MsgType)
return nil
}
}
// RecvText 接收文本消息
type RecvText struct {
RecvMsg
ToUserName string // 开发者微信号
FromUserName string // 发送方帐号(一个OpenID)
CreateTime string // 消息创建时间(整型)
MsgType MsgType // text
Content string // 文本消息内容
MsgId int // 消息id,64位整型
}
// NewRecvText 把通用 struct 转化成相应类型的 struct
func NewRecvText(m *Message) *RecvText {
return &RecvText{
ToUserName: m.ToUserName,
FromUserName: m.FromUserName,
CreateTime: m.CreateTime,
MsgType: m.MsgType,
Content: m.Content,
MsgId: m.MsgId,
}
}
// RecvImage 接收图片消息
type RecvImage struct {
RecvMsg
ToUserName string // 开发者微信号
FromUserName string // 发送方帐号(一个OpenID)
CreateTime string // 消息创建时间(整型)
MsgType MsgType // image
PicUrl string // 图片链接
MediaId string // 图片消息媒体id,可以调用多媒体文件下载接口拉取数据
MsgId int // 消息id,64位整型
}
// NewRecvImage 把通用 struct 转化成相应类型的 struct
func NewRecvImage(m *Message) *RecvImage {
return &RecvImage{
ToUserName: m.ToUserName,
FromUserName: m.FromUserName,
CreateTime: m.CreateTime,
MsgType: m.MsgType,
PicUrl: m.PicUrl,
MediaId: m.MediaId,
MsgId: m.MsgId,
}
}
// RecvVoice 接收视频/小视频消息
type RecvVoice struct {
RecvMsg
ToUserName string // 开发者微信号
FromUserName string // 发送方帐号(一个OpenID)
CreateTime string // 消息创建时间(整型)
MsgType MsgType // voice
MediaId string // 语音消息媒体id,可以调用多媒体文件下载接口拉取数据
Format string // 语音格式,如amr,speex等
Recongnition string // 语音识别结果,使用UTF8编码
MsgId int // 消息id,64位整型
}
// NewRecvVoice 把通用 struct 转化成相应类型的 struct
func NewRecvVoice(m *Message) *RecvVoice {
return &RecvVoice{
ToUserName: m.ToUserName,
FromUserName: m.FromUserName,
CreateTime: m.CreateTime,
MsgType: m.MsgType,
MediaId: m.MediaId,
Format: m.Format,
Recongnition: m.Recongnition,
MsgId: m.MsgId,
}
}
// RecvVideo 接收图片消息
type RecvVideo struct {
RecvMsg
ToUserName string // 开发者微信号
FromUserName string // 发送方帐号(一个OpenID)
CreateTime string // 消息创建时间(整型)
MsgType MsgType // video
MediaId string // 视频消息媒体id,可以调用多媒体文件下载接口拉取数据
ThumbMediaId string // 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据
MsgId int // 消息id,64位整型
}
// NewRecvVideo 把通用 struct 转化成相应类型的 struct
func NewRecvVideo(m *Message) *RecvVideo {
return &RecvVideo{
ToUserName: m.ToUserName,
FromUserName: m.FromUserName,
CreateTime: m.CreateTime,
MsgType: m.MsgType,
MediaId: m.MediaId,
ThumbMediaId: m.ThumbMediaId,
MsgId: m.MsgId,
}
}
// RecvLocation 接收地理位置消息
type RecvLocation struct {
RecvMsg
ToUserName string // 开发者微信号
FromUserName string // 发送方帐号(一个OpenID)
CreateTime string // 消息创建时间(整型)
MsgType MsgType // location
LocationX float64 `xml:"Location_X,omitempty"` // 地理位置维度
LocationY float64 `xml:"Location_Y,omitempty"` // 地理位置经度
Scale int // 地图缩放大小
Label string // 地理位置信息
MsgId int // 消息id,64位整型
}
// NewRecvLocation 把通用 struct 转化成相应类型的 struct
func NewRecvLocation(m *Message) *RecvLocation {
return &RecvLocation{
ToUserName: m.ToUserName,
FromUserName: m.FromUserName,
CreateTime: m.CreateTime,
MsgType: m.MsgType,
LocationX: m.LocationX,
LocationY: m.LocationY,
Scale: m.Scale,
Label: m.Label,
MsgId: m.MsgId,
}
}
// RecvLink 接收链接消息
type RecvLink struct {
RecvMsg
ToUserName string // 开发者微信号
FromUserName string // 发送方帐号(一个OpenID)
CreateTime string // 消息创建时间(整型)
MsgType MsgType // location
Title string // 消息标题
Description string // 消息描述
Url string // 消息链接
MsgId int // 消息id,64位整型
}
// NewRecvLink 把通用 struct 转化成相应类型的 struct
func NewRecvLink(m *Message) *RecvLink {
return &RecvLink{
ToUserName: m.ToUserName,
FromUserName: m.FromUserName,
CreateTime: m.CreateTime,
MsgType: m.MsgType,
Title: m.Title,
Description: m.Description,
Url: m.Url,
MsgId: m.MsgId,
}
}