#coding: utf-8
import urllib2
import json
import sys

'''
拥有企业号后，可以通过本脚本推送消息至关注本企业号的微信会员
这里用作zabbix告警的信息发送
zabbix 传值需要三个参数
1 空
2 空
3 内容
'''

"""
touser	否	成员ID列表（消息接收者，多个接收者用‘|’分隔，最多支持1000个）。特殊情况：指定为@all，则向关注该企业应用的全部成员发送
toparty	否	部门ID列表，多个接收者用‘|’分隔，最多支持100个。当touser为@all时忽略本参数
totag	否	标签ID列表，多个接收者用‘|’分隔。当touser为@all时忽略本参数
msgtype	是	消息类型，此时固定为：text
agentid	是	企业应用的id，整型。可在应用的设置页面查看
content	是	消息内容
safe	否	表示是否是保密消息，0表示否，1表示是，默认0
"""



class WeChatMSG(object):
    def __init__(self,content):
        self.gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'     
        self.gettoken_content = {
                            'corpid' : 'aeef068',#企业号
                            'corpsecret' : 'T9Ac65Nltx7yDOe_ub0kbzqGI7oueedTAAfL01h5gX9Ffq2Ao2WjgIundR' , #管理组凭证密钥
                            }
        self.main_content = {
                            "toparty":"1",
                            "agentid":"3",
                            "msgtype": "text",
                            "text":{
                            "content":content,
                                    }
                            }
                          
    def get_access_token(self,string):
        token_result = json.loads(string.read())
        access_token=  token_result['access_token']
        return access_token.encode('utf-8')

    def geturl(self,url,data):
        data = self.encodeurl(data)
        response = urllib2.urlopen('%s?%s' % (url,data))
        return response.read().decode('utf-8')
        

    def posturl(self,url,data,isjson = True):
        if isjson:
            data = json.dumps(data)
        response = urllib2.urlopen(url,data)
        return response.read().decode('utf-8')

    def encodeurl(self,dict):
        data = ''
        for k,v in dict.items():
            data += '%s=%s%s' % (k,v,'&')
        data = data[:-1]
        return data

if __name__ == '__main__':
    if len(sys.argv) == 4:
        touser,notuse,content = sys.argv[1:]        
    else:
        print 'error segments, now exit'
        sys.exit()
    msgsender = WeChatMSG(content)
    access_token_response = msgsender.geturl(msgsender.gettoken_url, msgsender.gettoken_content)
    access_token = json.loads(access_token_response)['access_token']
    sendmsg_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % access_token  
    print msgsender.posturl(sendmsg_url,msgsender.main_content)
