pythonエンタープライズ微信警報サービス

3097 ワード

1.企業の微信バックグラウンドにログインする
登録できない場合:https://work.weixin.qq.com/wework_admin/register_wx?from=myhome_mp_home
 2.部門の作成:連絡先--部門の追加(この部門のメンバーにアラームメッセージを提供)--メンバーの追加--部門idの記録
 3.≪アプリケーションの作成|Create Application|ldap≫:≪管理の適用|Apply Management|ldap≫:≪セルフ・ビルド|Self-Build|ldap≫:≪アプリケーションの作成|Create Application|ldap≫:作成した部門を選択する情報を入力してagent_を記録します.id,secret
 4.企業id:私の企業記録企業id
demo:wechat.py
import logging
import requests

logger = logging.getLogger(__name__)


class Wechat(object):
    """
             
    """

    def __init__(self, appid, secret, party_id, agent_id):
        self.appid = appid
        self.secret = secret
        #    
        # self.get_token_api = "https://api.weixin.qq.com/cgi-bin/token"
        #     
        self.get_token_api = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
        self.send_msg_api = "https://qyapi.weixin.qq.com/cgi-bin/message/send"
        self.token = self.get_token()
        self.party_id = party_id
        self.agent_id = agent_id

    def get_token(self):
        """
          token,            
        """
        params = {
                "corpid": self.appid,
                "corpsecret": self.secret
        }
        resp = requests.get(self.get_token_api, params=params)
        data = resp.json()
        token = data.get("access_token")
        if not token:
            raise UserWarning("get token error detail: %s" % data)
        logger.info("get token successed")
        return token

    def send_msg(self, msg, party_id, agent_id):
        """
                  
        @party_id:      id
        @agent_id:      id
        @msg:        
        """
        params = {
            "access_token": self.token,
        }
        body = {
            "toparty": party_id,        
            "msgtype": "text",
            "agentid": agent_id, 
            "text": {
                "content": msg,
            },
        }
        resp = requests.post(self.send_msg_api, params=params, json=body)
        data = resp.json()
        code = data.get("errcode")
        if code == 0:
            logger.info("send msg successed")
            return
        if code == 42001:
            logger.warning("token expires")
            self.token = self.get_token()
            return self.send_msg(party_id, agent_id, msg)
        else:
            logger.error("send msg error detail: %s" % data)

    def alarm(self, msg):
        """
                
        """
        self.send_msg(msg, self.party_id, agent_id)


#   id
appid = "ww9f17adaf3"
#   id
agent_id = "1000002"
#   id
party_id = 2
#      
secret = "uJW07AcQFaK7cSwk9Du0o6FTnOTtz2IiMs8h"
wechat = Wechat(appid=appid, secret=secret, party_id=party_id, agent_id=agent_id)


if __name__ == '__main__':
    wechat.alarm("This is a test")