欢迎光临散文网 会员登陆 & 注册

Python使用企业微信api文本消息推送到微信

2022-09-01 11:23 作者:zip11  | 我要投稿

如何使用Python实现企业微信发送文件

 

第一步:登录企业微信后台,需要用有管理员权限的微信进行扫码登录。
第二步:获取AgentId和Secret,获取路径:应用管理-创建应用,创建应用后即可看到。
第三步:确认需要接收信息的userid,获取路径:通讯录-选择需要发送的人员-账号。
第四步:获取公司ID,获取路径:我的企业-公司ID。

 

通过上面四步即可获取到:
CORPID # 企业ID
CORPSECRET # 应用Secret
AGENTID # 应用Agentid
TOUSER # 接收消息的UserID多个ID需要用“|”分割

 

import requests

import time

import json

 

 

class WeChat():

    def __init__(self):

        """

        配置初始信息

        """

        self.CORPID = "xxx"  # 企业ID

        self.CORPSECRET = "xxx"  # 应用Secret

        self.AGENTID = "xxx"  # 应用Agentid

        self.TOUSER = "xxx1|xxx2|xxx3" # 接收消息的userid

        self.ACCESS_TOKEN_PATH = "access_token.conf" # 存放access_token的路径

 

    def _get_access_token(self):

        """

        调用接口返回登录信息access_token

        """

        url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={self.CORPID}&corpsecret={self.CORPSECRET}"

        res = requests.get(url=url)

        return json.loads(res.text)['access_token']

 

    def _save_access_token(self, cur_time):

        """

        将获取到的access_token保存到本地

        """

        with open(self.ACCESS_TOKEN_PATH, "w")as f:

            access_token = self._get_access_token()

            # 保存获取时间以及access_token

            f.write("\t".join([str(cur_time), access_token]))

        return access_token

 

    def get_access_token(self):

        cur_time = time.time()

        try:

            with open(self.ACCESS_TOKEN_PATH, "r")as f:

                t, access_token = f.read().split()

                # 判断access_token是否有效

                if 0 < cur_time-float(t) < 7200:

                    return access_token

                else:

                    return self._save_access_token(cur_time)

        except:

            return self._save_access_token(cur_time)

 

    def send_message(self, message):

        """

        发送文本消息

        """

        url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={self.get_access_token()}"

        send_values = {

            "touser": self.TOUSER,

            "msgtype": "text",

            "agentid": self.AGENTID,

            "text": {

                "content": message

            },

        }

        send_message = (bytes(json.dumps(send_values), 'utf-8'))

        res = requests.post(url, send_message)

        return res.json()['errmsg']

 

    def _upload_file(self, file):

        """

        先将文件上传到临时媒体库

        """

        url = f"https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={self.get_access_token()}&type=file"

        data = {"file": open(file, "rb")}

        res = requests.post(url, files=data)

        return res.json()['media_id']

 

    def send_file(self, file):

        """

        发送文件

        """

        media_id = self._upload_file(file) # 先将文件上传至临时媒体库

        url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={self.get_access_token()}"

        send_values = {

            "touser": self.TOUSER,

            "msgtype": "file",

            "agentid": self.AGENTID,

            "file": {

                "media_id": media_id

            },

        }

        send_message = (bytes(json.dumps(send_values), 'utf-8'))

        res = requests.post(url, send_message)

        return res.json()['errmsg']

 

 

 

wx = WeChat()

# 发送信息"test"

wx.send_message("test")

 

 

 

wx = WeChat()

# 发送文件

wx.send_file("1.xlsx")

 

 


Python使用企业微信api文本消息推送到微信的评论 (共 条)

分享到微博请遵守国家法律