wechat_template_message 0.1.0 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c76f12e84101d1232d7b665ab0d1ea6ca68b370a
4
- data.tar.gz: 35ed1d09dd1409f835da2cc7d1fb9365b34cff89
3
+ metadata.gz: 50931ca2f73cdda4ac17e1a946d4b2d1d82a67cd
4
+ data.tar.gz: b7e1e000925009224c98bbf1f8679b0823639af2
5
5
  SHA512:
6
- metadata.gz: 11e9e072d1c2e2dbcce93c2fc86d6daa76e68ac9df8ed8b4fa3a59725e94e9cdad7f1a236c850d0cb25317950e41838664219aded14bd0b55db29ac7e5d298aa
7
- data.tar.gz: 0a4c4e7a1f2cc97f89cdbec9223cd6447ea32358f44373b042a4fd1be637dc98308edceca1969c5d3d199e7c23d392cd6fde90938e3b658ce87e5866b8b992f1
6
+ metadata.gz: 5416d9584c75fc97888dfe55c47266c56dfd5dcb5e6b7cbfb0ce4de628d9f8977f7c8b1768a6438fff2fc0da23e59af389c9a858db2499f1d07ba201fbb03018
7
+ data.tar.gz: 6fbc6bd6e47b461a2249538d8300ce1e208e512d21f7d2c1e714668f7c99fb66642412b518d1d4d047aabbed2f90334216425ef85846683d382a603b3e231b84
data/README.md CHANGED
@@ -49,6 +49,40 @@ else
49
49
  # raise error
50
50
  end
51
51
 
52
+ # 发送模板消息
53
+ url = 'http://xxx.com'
54
+ miniprogram_data = {
55
+ appid: "xxxx",
56
+ "pagepath":"index?foo=bar"
57
+ }
58
+ data = {
59
+ first: {
60
+ value: '您有一张车票 L2019002234324 距乘车时间小于 30 分钟, 线路: 横琴号 十号线',
61
+ color: '#173177'
62
+ },
63
+ keyword1: {
64
+ value: '2019-04-09 18:10',
65
+ color: '#173177'
66
+ },
67
+ keyword2: {
68
+ value: '横琴创意谷',
69
+ color: '#173177'
70
+ },
71
+ keyword3: {
72
+ value: '西江月',
73
+ color: '#173177'
74
+ },
75
+ keyword4: {
76
+ value: '粤C66666',
77
+ color: '#173177'
78
+ },
79
+ remark: {
80
+ value: '请提前到乘车站点候车以免耽误您的出行',
81
+ color: '#173177'
82
+ }
83
+ }
84
+ result = WechatTemplateMessage::Sender.template_send access_token, openid, template_id, url, miniprogram_data, data
85
+
52
86
  ~~~
53
87
 
54
88
 
@@ -4,6 +4,32 @@ require 'wechat_template_message/result'
4
4
 
5
5
  class WechatTemplateMessage::Sender
6
6
 
7
+ def self.template_send access_token, openid, template_id, url, miniprogram_data, data
8
+ uri = URI.parse("#{WechatTemplateMessage.server}/cgi-bin/message/template/send?access_token=#{access_token}")
9
+ req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
10
+ res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
11
+ req.body = {
12
+ "touser": openid,
13
+ "template_id": template_id,
14
+ "url": url,
15
+ "miniprogram": miniprogram_data,
16
+ "data": data
17
+ }.to_json.to_s
7
18
 
19
+ if WechatTemplateMessage.debug_mode && WechatTemplateMessage.logger
20
+ WechatTemplateMessage.logger.debug "Sending wechat template message to uri #{uri} with body #{req.body}..."
21
+ end
22
+
23
+ http.request req
24
+ end
25
+
26
+
27
+ if WechatTemplateMessage.debug_mode && WechatTemplateMessage.logger
28
+ WechatTemplateMessage.logger.debug "Get template message response status: #{res.code}, body: #{res.body}"
29
+ end
30
+ json = JSON.parse res.body
31
+ successful = res.is_a?(Net::HTTPSuccess) && json['errcode'] == 0
32
+ WechatTemplateMessage::Result.new(successful, json)
33
+ end
8
34
 
9
35
  end
@@ -1,3 +1,3 @@
1
1
  module WechatTemplateMessage
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
@@ -9,6 +9,9 @@ describe WechatTemplateMessage do
9
9
  subject(:logger) { Logger.new STDOUT }
10
10
  subject(:configuration) { YAML.load_file('./spec/fixtures/configuration.yml') }
11
11
  subject(:access_token) { configuration['access_token'] }
12
+ subject(:openid) { configuration['openid'] }
13
+ subject(:template_id) { configuration['template_id'] }
14
+
12
15
 
13
16
  before do
14
17
  WechatTemplateMessage.debug_mode = true
@@ -17,7 +20,7 @@ describe WechatTemplateMessage do
17
20
 
18
21
  context 'templates' do
19
22
 
20
- it 'should get error response when access token is invalid missing' do
23
+ it 'should get error response when access token is invalid' do
21
24
  result = WechatTemplateMessage::Template.all 'invalid access token'
22
25
  expect(result.successful).to be false
23
26
  end
@@ -35,12 +38,52 @@ describe WechatTemplateMessage do
35
38
  end
36
39
  end
37
40
 
38
-
39
-
40
41
  end
41
42
 
42
43
  context 'messages' do
43
44
 
45
+ it 'should get error response when access token is invalid' do
46
+ url = nil
47
+ miniprogram_data = nil
48
+ data = nil
49
+ result = WechatTemplateMessage::Sender.template_send 'invalid access token', openid, template_id, url, miniprogram_data, data
50
+ expect(result.successful).to be false
51
+ logger.debug "result #{result.inspect}"
52
+ end
53
+
54
+ it 'should send template message successfuly' do
55
+ url = nil
56
+ miniprogram_data = nil
57
+ data = {
58
+ first: {
59
+ value: '您有一张车票 L2019002234324 距乘车时间小于 30 分钟, 线路: 横琴号 十号线',
60
+ color: '#173177'
61
+ },
62
+ keyword1: {
63
+ value: '2019-04-09 18:10',
64
+ color: '#173177'
65
+ },
66
+ keyword2: {
67
+ value: '横琴创意谷',
68
+ color: '#173177'
69
+ },
70
+ keyword3: {
71
+ value: '西江月',
72
+ color: '#173177'
73
+ },
74
+ keyword4: {
75
+ value: '粤C66666',
76
+ color: '#173177'
77
+ },
78
+ remark: {
79
+ value: '请提前到乘车站点候车以免耽误您的出行',
80
+ color: '#173177'
81
+ }
82
+ }
83
+ result = WechatTemplateMessage::Sender.template_send access_token, openid, template_id, url, miniprogram_data, data
84
+ expect(result.successful).to be true
85
+ logger.debug "result #{result.inspect}"
86
+ end
44
87
 
45
88
  end
46
89
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wechat_template_message
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Wang