最近写了些东东,来监控各种异常。传统的发邮件时效性不太好,更何况每天那么多邮件。
想到用微信的企业号来发消息。最重要一点,它是免费的。

首先要注册一个账号:
here

选择企业号

要填手机号,(微信需要绑定银行卡),扫描一下。

填写完公众号信息,就差不多看到曙光了。

创建一个应用,本人选择的是消息型。

设置管理员
指定应用的管理员。点击设置-> 权限管理 -> 管理 -> 新建管理组 --> 添加管理员和权限。然后就会获得 corpid 和 sceret。记录下来,这个很重要。后面代码中用得到。

然后就是敲代码了。

#!/usr/bin/python
# coding=utf-8
import sys
import urllib2
import time
import json
import requests

__author__ = 'anderson'

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

CORPID = "XXXX"
CORPSECRET = "XXXX"
BASEURL = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}'.format(CORPID, CORPSECRET)
URL = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s"


class Token(object):
    # get token
    def __init__(self):

        self.expire_time = sys.maxint

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


def send_message(title, content):
    team_token = Token().get_token()
    print team_token
    url = URL % (team_token)
    wechat_json = {
        "toparty": "1",
        "msgtype": "text",
        "agentid": "1",
        "text": {
            "content": "title:{0}\n content:{1}".format(title, content)
        },
        "safe": "0"
    }
    response = requests.post(url, data=json.dumps(wechat_json, ensure_ascii=False, encoding='utf8'))
    print response.json()


if __name__ == '__main__':
    send_message("test", "just test")

运行一下,就可以收到消息了:

点开,显示正确:

可以设置各种群组,接收消息的人。
结合 Jenkins, 灵活运用到测试中来。


↙↙↙阅读原文可查看相关链接,并与作者交流