weixin_rails_middleware 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/generators/templates/README +15 -0
- data/lib/generators/templates/weixin_controller.rb +132 -1
- data/lib/generators/weixin_rails_middleware/install_generator.rb +4 -0
- data/lib/weixin_rails_middleware.rb +2 -2
- data/lib/weixin_rails_middleware/helpers/reply_weixin_message_helper.rb +16 -2
- data/lib/weixin_rails_middleware/models/message.rb +23 -0
- data/lib/weixin_rails_middleware/models/reply_message.rb +23 -0
- data/lib/weixin_rails_middleware/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f079af9ed5d2cb1eb39c297b00fecdda832e4a1f
|
4
|
+
data.tar.gz: a491310af214643839d415dc96a1bc83fea0c245
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8edb6d095295516b0ae531706bb34af81486bd04d372b1accfd3a3b2650417ec4509a8daadbed1d607c7b1d041eab35824457a5fc6d1c3d9159bf1d4ca2ccd9e
|
7
|
+
data.tar.gz: 6107d9a584ea93dd73592c9e8be7ef8245c910c36f065ebe04eac419c236b2344093023ca66d786cd2c44e724ac7514e7c7c830b7ea9d74d78a31e2e434c29b9
|
@@ -0,0 +1,15 @@
|
|
1
|
+
===============================================================================
|
2
|
+
## 如果有任何的疑问,请前往微信开发论坛提问:
|
3
|
+
|
4
|
+
http://weixin-dev.com
|
5
|
+
|
6
|
+
## 微信 Ruby 高级API:
|
7
|
+
|
8
|
+
https://github.com/lanrion/weixin_authorize
|
9
|
+
|
10
|
+
## 企业号相关gem:
|
11
|
+
|
12
|
+
https://github.com/lanrion/qy_wechat
|
13
|
+
|
14
|
+
https://github.com/lanrion/qy_wechat_api
|
15
|
+
|
@@ -65,7 +65,12 @@ WeixinRailsMiddleware::WeixinController.class_eval do
|
|
65
65
|
|
66
66
|
def response_event_message(options={})
|
67
67
|
event_type = @weixin_message.Event
|
68
|
-
|
68
|
+
method_name = "handle_#{event_type.downcase}_event"
|
69
|
+
if self.respond_to? method_name, true
|
70
|
+
send(method_name)
|
71
|
+
else
|
72
|
+
send("handle_undefined_event")
|
73
|
+
end
|
69
74
|
end
|
70
75
|
|
71
76
|
# 关注公众账号
|
@@ -127,4 +132,130 @@ WeixinRailsMiddleware::WeixinController.class_eval do
|
|
127
132
|
Rails.logger.info("回调事件处理")
|
128
133
|
end
|
129
134
|
|
135
|
+
# <xml>
|
136
|
+
# <ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
|
137
|
+
# <FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>
|
138
|
+
# <CreateTime>1395658920</CreateTime>
|
139
|
+
# <MsgType><![CDATA[event]]></MsgType>
|
140
|
+
# <Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
|
141
|
+
# <MsgID>200163836</MsgID>
|
142
|
+
# <Status><![CDATA[success]]></Status>
|
143
|
+
# </xml>
|
144
|
+
# 推送模板信息回调,通知服务器是否成功推送
|
145
|
+
def handle_templatesendjobfinish_event
|
146
|
+
Rails.logger.info("回调事件处理")
|
147
|
+
end
|
148
|
+
|
149
|
+
# <xml>
|
150
|
+
# <ToUserName><![CDATA[toUser]]></ToUserName>
|
151
|
+
# <FromUserName><![CDATA[FromUser]]></FromUserName>
|
152
|
+
# <CreateTime>123456789</CreateTime>
|
153
|
+
# <MsgType><![CDATA[event]]></MsgType>
|
154
|
+
# <Event><![CDATA[card_pass_check]]></Event> //不通过为card_not_pass_check
|
155
|
+
# <CardId><![CDATA[cardid]]></CardId>
|
156
|
+
# </xml>
|
157
|
+
# 卡券审核事件,通知服务器卡券已(未)通过审核
|
158
|
+
def handle_card_pass_check_event
|
159
|
+
Rails.logger.info("回调事件处理")
|
160
|
+
end
|
161
|
+
|
162
|
+
def handle_card_not_pass_check_event
|
163
|
+
Rails.logger.info("回调事件处理")
|
164
|
+
end
|
165
|
+
|
166
|
+
# <xml>
|
167
|
+
# <ToUserName><![CDATA[toUser]]></ToUserName>
|
168
|
+
# <FromUserName><![CDATA[FromUser]]></FromUserName>
|
169
|
+
# <FriendUserName><![CDATA[FriendUser]]></FriendUserName>
|
170
|
+
# <CreateTime>123456789</CreateTime>
|
171
|
+
# <MsgType><![CDATA[event]]></MsgType>
|
172
|
+
# <Event><![CDATA[user_get_card]]></Event>
|
173
|
+
# <CardId><![CDATA[cardid]]></CardId>
|
174
|
+
# <IsGiveByFriend>1</IsGiveByFriend>
|
175
|
+
# <UserCardCode><![CDATA[12312312]]></UserCardCode>
|
176
|
+
# <OuterId>0</OuterId>
|
177
|
+
# </xml>
|
178
|
+
# 卡券领取事件推送
|
179
|
+
def handle_user_get_card_event
|
180
|
+
Rails.logger.info("回调事件处理")
|
181
|
+
end
|
182
|
+
|
183
|
+
# <xml>
|
184
|
+
# <ToUserName><![CDATA[toUser]]></ToUserName>
|
185
|
+
# <FromUserName><![CDATA[FromUser]]></FromUserName>
|
186
|
+
# <CreateTime>123456789</CreateTime>
|
187
|
+
# <MsgType><![CDATA[event]]></MsgType>
|
188
|
+
# <Event><![CDATA[user_del_card]]></Event>
|
189
|
+
# <CardId><![CDATA[cardid]]></CardId>
|
190
|
+
# <UserCardCode><![CDATA[12312312]]></UserCardCode>
|
191
|
+
# </xml>
|
192
|
+
# 卡券删除事件推送
|
193
|
+
def handle_user_del_card_event
|
194
|
+
Rails.logger.info("回调事件处理")
|
195
|
+
end
|
196
|
+
|
197
|
+
# <xml>
|
198
|
+
# <ToUserName><![CDATA[toUser]]></ToUserName>
|
199
|
+
# <FromUserName><![CDATA[FromUser]]></FromUserName>
|
200
|
+
# <CreateTime>123456789</CreateTime>
|
201
|
+
# <MsgType><![CDATA[event]]></MsgType>
|
202
|
+
# <Event><![CDATA[user_consume_card]]></Event>
|
203
|
+
# <CardId><![CDATA[cardid]]></CardId>
|
204
|
+
# <UserCardCode><![CDATA[12312312]]></UserCardCode>
|
205
|
+
# <ConsumeSource><![CDATA[(FROM_API)]]></ConsumeSource>
|
206
|
+
# </xml>
|
207
|
+
# 卡券核销事件推送
|
208
|
+
def handle_user_consume_card_event
|
209
|
+
Rails.logger.info("回调事件处理")
|
210
|
+
end
|
211
|
+
|
212
|
+
# <xml>
|
213
|
+
# <ToUserName><![CDATA[toUser]]></ToUserName>
|
214
|
+
# <FromUserName><![CDATA[FromUser]]></FromUserName>
|
215
|
+
# <CreateTime>123456789</CreateTime>
|
216
|
+
# <MsgType><![CDATA[event]]></MsgType>
|
217
|
+
# <Event><![CDATA[user_view_card]]></Event>
|
218
|
+
# <CardId><![CDATA[cardid]]></CardId>
|
219
|
+
# <UserCardCode><![CDATA[12312312]]></UserCardCode>
|
220
|
+
# </xml>
|
221
|
+
# 卡券进入会员卡事件推送
|
222
|
+
def handle_user_view_card_event
|
223
|
+
Rails.logger.info("回调事件处理")
|
224
|
+
end
|
225
|
+
|
226
|
+
# <xml>
|
227
|
+
# <ToUserName><![CDATA[toUser]]></ToUserName>
|
228
|
+
# <FromUserName><![CDATA[FromUser]]></FromUserName>
|
229
|
+
# <CreateTime>123456789</CreateTime>
|
230
|
+
# <MsgType><![CDATA[event]]></MsgType>
|
231
|
+
# <Event><![CDATA[user_enter_session_from_card]]></Event>
|
232
|
+
# <CardId><![CDATA[cardid]]></CardId>
|
233
|
+
# <UserCardCode><![CDATA[12312312]]></UserCardCode>
|
234
|
+
# </xml>
|
235
|
+
# 从卡券进入公众号会话事件推送
|
236
|
+
def handle_user_enter_session_from_card_event
|
237
|
+
Rails.logger.info("回调事件处理")
|
238
|
+
end
|
239
|
+
|
240
|
+
# <xml>
|
241
|
+
# <ToUserName><![CDATA[toUser]]></ToUserName>
|
242
|
+
# <FromUserName><![CDATA[fromUser]]></FromUserName>
|
243
|
+
# <CreateTime>1408622107</CreateTime>
|
244
|
+
# <MsgType><![CDATA[event]]></MsgType>
|
245
|
+
# <Event><![CDATA[poi_check_notify]]></Event>
|
246
|
+
# <UniqId><![CDATA[123adb]]></UniqId>
|
247
|
+
# <PoiId><![CDATA[123123]]></PoiId>
|
248
|
+
# <Result><![CDATA[fail]]></Result>
|
249
|
+
# <Msg><![CDATA[xxxxxx]]></Msg>
|
250
|
+
# </xml>
|
251
|
+
# 门店审核事件推送
|
252
|
+
def handle_poi_check_notify_event
|
253
|
+
Rails.logger.info("回调事件处理")
|
254
|
+
end
|
255
|
+
|
256
|
+
# 未定义的事件处理
|
257
|
+
def handle_undefined_event
|
258
|
+
Rails.logger.info("回调事件处理")
|
259
|
+
end
|
260
|
+
|
130
261
|
end
|
@@ -21,8 +21,8 @@ module WeixinRailsMiddleware
|
|
21
21
|
autoload(:SinglePublicAccount, "weixin_rails_middleware/adapter/single_public_account")
|
22
22
|
autoload(:MultiplePublicAccount, "weixin_rails_middleware/adapter/multiple_public_account")
|
23
23
|
|
24
|
-
DEFAULT_TOKEN_COLUMN_NAME = "weixin_token"
|
25
|
-
DEFAULT_WEIXIN_SECRET_KEY = "weixin_secret_key"
|
24
|
+
DEFAULT_TOKEN_COLUMN_NAME = "weixin_token"
|
25
|
+
DEFAULT_WEIXIN_SECRET_KEY = "weixin_secret_key"
|
26
26
|
|
27
27
|
end
|
28
28
|
|
@@ -105,8 +105,22 @@ module WeixinRailsMiddleware
|
|
105
105
|
encrypt_message message.to_xml
|
106
106
|
end
|
107
107
|
|
108
|
-
|
109
|
-
|
108
|
+
# 指定会话接入的客服账号
|
109
|
+
def generate_kf_trans_info(kf_account)
|
110
|
+
trans_info = KfTransInfo.new
|
111
|
+
trans_info.KfAccount = kf_account
|
112
|
+
trans_info
|
113
|
+
end
|
114
|
+
|
115
|
+
# 消息转发到多客服
|
116
|
+
# 消息转发到指定客服
|
117
|
+
def reply_transfer_customer_service_message(from=nil, to=nil, kf_account=nil)
|
118
|
+
if kf_account.blank?
|
119
|
+
message = TransferCustomerServiceReplyMessage.new
|
120
|
+
else
|
121
|
+
message = TransferCustomerServiceWithTransInfoReplyMessage.new
|
122
|
+
message.TransInfo = generate_kf_trans_info(kf_account)
|
123
|
+
end
|
110
124
|
message.FromUserName = from || @weixin_message.ToUserName
|
111
125
|
message.ToUserName = to || @weixin_message.FromUserName
|
112
126
|
encrypt_message message.to_xml
|
@@ -39,6 +39,8 @@ module WeixinRailsMiddleware
|
|
39
39
|
VoiceMessage.new(hash)
|
40
40
|
when 'video'
|
41
41
|
VideoMessage.new(hash)
|
42
|
+
when 'shortvideo'
|
43
|
+
ShortVideo.new(hash)
|
42
44
|
else
|
43
45
|
raise ArgumentError, 'Unknown Weixin Message'
|
44
46
|
end
|
@@ -155,4 +157,25 @@ module WeixinRailsMiddleware
|
|
155
157
|
end
|
156
158
|
end
|
157
159
|
|
160
|
+
# <xml>
|
161
|
+
# <ToUserName><![CDATA[toUser]]></ToUserName>
|
162
|
+
# <FromUserName><![CDATA[fromUser]]></FromUserName>
|
163
|
+
# <CreateTime>1357290913</CreateTime>
|
164
|
+
# <MsgType><![CDATA[shortvideo]]></MsgType>
|
165
|
+
# <MediaId><![CDATA[media_id]]></MediaId>
|
166
|
+
# <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
|
167
|
+
# <MsgId>1234567890123456</MsgId>
|
168
|
+
# </xml>
|
169
|
+
|
170
|
+
class ShortVideo < Message
|
171
|
+
|
172
|
+
def MediaId
|
173
|
+
@source.MediaId
|
174
|
+
end
|
175
|
+
|
176
|
+
def ThumbMediaId
|
177
|
+
@source.ThumbMediaId
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
158
181
|
end
|
@@ -192,4 +192,27 @@ module WeixinRailsMiddleware
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
+
# 指定会话接入的客服账号
|
196
|
+
class KfTransInfo
|
197
|
+
include ROXML
|
198
|
+
xml_accessor :KfAccount, :cdata => true
|
199
|
+
end
|
200
|
+
|
201
|
+
# <xml>
|
202
|
+
# <ToUserName><![CDATA[touser]]></ToUserName>
|
203
|
+
# <FromUserName><![CDATA[fromuser]]></FromUserName>
|
204
|
+
# <CreateTime>1399197672</CreateTime>
|
205
|
+
# <MsgType><![CDATA[transfer_customer_service]]></MsgType>
|
206
|
+
# <TransInfo>
|
207
|
+
# <KfAccount>test1@test</KfAccount>
|
208
|
+
# </TransInfo>
|
209
|
+
# </xml>
|
210
|
+
class TransferCustomerServiceWithTransInfoReplyMessage < ReplyMessage
|
211
|
+
xml_accessor :TransInfo, :as => KfTransInfo
|
212
|
+
def initialize
|
213
|
+
super
|
214
|
+
@MsgType = 'transfer_customer_service'
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
195
218
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weixin_rails_middleware
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lanrion
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- Rakefile
|
92
92
|
- app/controllers/weixin_rails_middleware/weixin_controller.rb
|
93
93
|
- config/routes.rb
|
94
|
+
- lib/generators/templates/README
|
94
95
|
- lib/generators/templates/add_encrypt_message_config_migration.rb
|
95
96
|
- lib/generators/templates/add_weixin_secret_key_and_weixin_token_migration.rb
|
96
97
|
- lib/generators/templates/install_weixin_rails_middleware.rb
|
@@ -132,9 +133,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
133
|
version: '0'
|
133
134
|
requirements: []
|
134
135
|
rubyforge_project:
|
135
|
-
rubygems_version: 2.
|
136
|
+
rubygems_version: 2.4.5.1
|
136
137
|
signing_key:
|
137
138
|
specification_version: 4
|
138
139
|
summary: weixin_rails_middleware for integration weixin
|
139
140
|
test_files: []
|
140
|
-
has_rdoc:
|