Skip to content

Commit d067434

Browse files
committed
初始化导入
1 parent 7987eaf commit d067434

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

wechat_qiye_alert.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# encoding: utf-8
2+
import urllib,urllib2
3+
import json
4+
import sys
5+
import datetime
6+
from elastalert.alerts import Alerter, BasicMatchString
7+
8+
from elastalert.util import elastalert_logger
9+
10+
'''
11+
##########################################################
12+
# 微信企业号推送消息 #
13+
# #
14+
# 作者: AnJia <[email protected]> #
15+
# 作者博客: https://anjia.ml/ #
16+
# Github: https://github.com/anjia0532/weixin-qiye-alert #
17+
# #
18+
##########################################################
19+
'''
20+
class WeChatAlerter(Alerter):
21+
22+
#企业号id,secret,应用id必填
23+
24+
required_options = frozenset(['corp_id','secret','agent_id'])
25+
26+
def __init__(self, *args):
27+
super(WeChatAlerter, self).__init__(*args)
28+
self.corp_id = self.rule.get('corp_id', '') #企业号id
29+
self.secret = self.rule.get('secret', '') #secret
30+
self.agent_id = self.rule.get('agent_id', '') #应用id
31+
self.party_id = self.rule.get('party_id') #部门id
32+
self.user_d = self.rule.get('user_d', '') #用户id,多人用 | 分割,全部用 @all
33+
self.tag_id = self.rule.get('tag_id', '') #标签id
34+
self.access_token = '' #微信身份令牌
35+
#self.expires_in=datetime.datetime.now() - datetime.timedelta(seconds=60)
36+
37+
def create_default_title(self, matches):
38+
subject = 'ElastAlert: %s' % (self.rule['name'])
39+
return subject
40+
41+
def alert(self, matches):
42+
# https://github.com/Yelp/elastalert/blob/master/elastalert/alerts.py#L236-L243
43+
body = self.create_alert_body(matches)
44+
45+
# http://qydev.weixin.qq.com/wiki/index.php?title=AccessToken
46+
self.get_token()
47+
48+
print self.access_token
49+
#print self.expires_in
50+
51+
self.senddata(body)
52+
elastalert_logger.info("发送消息给 %s" % (self.corp_id))
53+
54+
def get_token(self):
55+
56+
#if self.expires_in >= datetime.datetime.now() and not self.access_token:
57+
# return self.access_token
58+
59+
#构建获取token的url
60+
get_token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + self.corp_id + '&corpsecret=' + self.secret
61+
62+
try:
63+
token_file = urllib2.urlopen(get_token_url)
64+
except urllib2.HTTPError as e:
65+
print e.code
66+
print e.read().decode("utf8")
67+
sys.exit()
68+
69+
token_data = token_file.read().decode('utf-8')
70+
token_json = json.loads(token_data)
71+
token_json.keys()
72+
73+
#获取access_token和expires_in
74+
self.access_token = token_json['access_token']
75+
#self.expires_in = datetime.datetime.now() + datetime.timedelta(seconds=token_json['expires_in'])
76+
77+
return self.access_token
78+
79+
def senddata(self, content):
80+
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.access_token
81+
send_values = {
82+
"totag":self.tag_id,
83+
"touser":self.user_d,
84+
"toparty": self.party_id,
85+
"msgtype":"text",
86+
"agentid":self.agent_id,
87+
"text":{
88+
"content":content
89+
},
90+
"safe":"0"
91+
}
92+
93+
send_data = json.dumps(send_values, ensure_ascii=False)
94+
95+
send_request = urllib2.Request(send_url, send_data)
96+
97+
response = json.loads(urllib2.urlopen(send_request).read())
98+
99+
print str(response)
100+
101+
def get_info(self):
102+
return {'type': 'WeChatAlerter'}

0 commit comments

Comments
 (0)