python企業微信報警服務

 1.登錄企業微信後臺

若沒有可進行註冊:https://work.weixin.qq.com/wework_admin/register_wx?from=myhome_mp_home

 2.創建部門:通訊錄--添加部門(給此部門的成員提供報警消息)--添加成員--記錄部門id

 3.創建應用:應用管理--自建--創建應用--填寫信息(選擇剛剛創建的部門)記錄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")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章