Contents

实现微信报警

最近公司业务上涨,报警频频发生,刚买的短信接口已经用一半了,这么下去肯定不是办法。现在都是移动互联网时代了,肯定得想点新办法,看着手机我想起了微信,这货要是能实现报警,问题不就解决了么?

我抱着试一试的态度,在网上查找了一下,结果病就治好了…… 呃…… 电视广告看多了。 在网上查到了微信实现报警的方案,以我的理解分两种:

1.公众号,公众号使用模板信息可以给用户发送10w调每天的信息 2.企业号,给员工无限制的发送信息:

企业号的功能:

企业号适用于企业与员工或上下游供应链之间的沟通。

1、企业可以主动发消息给员工,消息量不受限制。

2、企业号出现在微信会话列表首层,在通讯录中有单独的分类。

3、可以自定义菜单。

4、拥有多个子号。

5、更加关注与安全,需要双方认证。

作为一个强迫症控,那肯定得用企业号啊,这里需要老板的支持,企业号不是自己能申请的,还好我老板高瞻远瞩,已经申请好了。(嘻嘻,希望老板能看到)

对企业号进行配置:

扫描二维码进行登录:https://qy.weixin.qq.com/ 登陆

配置企业号

登陆以后新建应用: 创建新应用

输入应用名称为监控报警就新建了一个叫做监控报警的应用,新建完成后,进入【应用中心】查看应用id, 这里后面要用。

设置管理员:

指定应用的管理员。点击设置 -> 权限管理 -> 管理 -> 新建管理组 -> 添加管理员和权限。然后就会获得corpid 和 sceret。这里后面也要用。

开发

1、阅读开发文档。文档位置:微信开发文档

我只读了建立连接、管理通讯录、发送消息。好了,发个报警够了,很简单。

2、建立连接获取access_token。

这个token是一个有有效时间的密钥用于后续操作认证。

Https请求方式: GET

https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

正常情况下就会反馈一个json并得到access_token

根据文档获取玩access_token后就可以发送消息了。

我写的脚本代码如下:

 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
#!/usr/bin/env python
# coding:utf-8
import sys
import urllib2
import time
import json
import requests

reload(sys)
sys.setdefaultencoding('utf-8')

title = sys.argv[2]   # 位置参数获取title 适用于zabbix
content = sys.argv[3] # 位置参数获取content 适用于zabbix

class Token(object):
    # 获取token
    def __init__(self, corpid, corpsecret):
        self.baseurl = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}'.format(
            corpid, corpsecret)
        self.expire_time = sys.maxint

    def get_token(self):
        if self.expire_time > time.time():
            request = urllib2.Request(self.baseurl)
            response = urllib2.urlopen(request)
            ret = response.read().strip()
            ret = json.loads(ret)
            if 'errcode' in ret.keys():
                print >> ret['errmsg'], sys.stderr
                sys.exit(1)
            self.expire_time = time.time() + ret['expires_in']
            self.access_token = ret['access_token']
        return self.access_token

def send_msg(title, content):
    # 发送消息
    corpid = ""  # 填写自己应用的
    corpsecret = "" # 填写自己应用的
    qs_token = Token(corpid=corpid, corpsecret=corpsecret).get_token()
    url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={0}".format(
        qs_token)
    payload = {
        "touser": "user1|user2",
        "msgtype": "text",
        "agentid": "3",
        "text": {
                   "content": "标题:{0}\n 内容:{1}".format(title, content)

        },
        "safe": "0"
    }
    ret = requests.post(url, data=json.dumps(payload, ensure_ascii=False))
    print ret.json()

if __name__ == '__main__':
    # print title, content
    send_msg(title, content)

参考文章:

微信公众平台企业号用于监控报警探究(python版本)