zoukankan      html  css  js  c++  java
  • 使用Python发送企业微信消息

    准备工作:

        到企业微信官网,注册一个企业;登录企业微信后台,创建一个“自建”应用, 获取企业ID、agentid、secret这3个必要的参数;在企业微信的通讯录中,创建多个测试账号;在手机端安装“企业微信”APP,使用测试账号登录到企业微信,准备接收消息。

    程序代码

        企业微信提供API开发接口,通过HTTPS的GET、POST方法与企业微信后台进行交互,完成获取令牌、发送数据、获取数据的操作。

        Python代码主要使用requests库,将企业微信API进行简单封装,模拟https的GET、POST操作,向指定的用户发送企业微信消息。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import time
    import requests
    import json
    
    
    class WeChat:
        def __init__(self):
            self.CORPID = 'ww2e1234567895498f5498f'  #企业ID,在管理后台获取
            self.CORPSECRET = 'xy11234567898hk_ecJ123456789DhKy4_1y12345OI'#自建应用的Secret,每个自建应用里都有单独的secret
            self.AGENTID = '1000002'  #应用ID,在后台应用中获取
            self.TOUSER = "maomao|dingding"  # 接收者用户名,多个用户用|分割
    
        def _get_access_token(self):
            url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'
            values = {'corpid': self.CORPID,
                      'corpsecret': self.CORPSECRET,
                      }
            req = requests.post(url, params=values)
            data = json.loads(req.text)
            return data["access_token"]
    
        def get_access_token(self):
            try:
                with open('./tmp/access_token.conf', 'r') as f:
                    t, access_token = f.read().split()
            except:
                with open('./tmp/access_token.conf', 'w') as f:
                    access_token = self._get_access_token()
                    cur_time = time.time()
                    f.write('	'.join([str(cur_time), access_token]))
                    return access_token
            else:
                cur_time = time.time()
                if 0 < cur_time - float(t) < 7260:
                    return access_token
                else:
                    with open('./tmp/access_token.conf', 'w') as f:
                        access_token = self._get_access_token()
                        f.write('	'.join([str(cur_time), access_token]))
                        return access_token
    
        def send_data(self, message):
            send_url = '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
                    },
                "safe": "0"
                }
            send_msges=(bytes(json.dumps(send_values), 'utf-8'))
            respone = requests.post(send_url, send_msges)
            respone = respone.json()   #当返回的数据是json串的时候直接用.json即可将respone转换成字典
            return respone["errmsg"]
    
    
    if __name__ == '__main__':
        wx = WeChat()
        wx.send_data("这是程序发送的第1条消息!
     Python程序调用企业微信API,从自建应用“告警测试应用”发送给管理员的消息!")
        wx.send_data("这是程序发送的第2条消息!")

    运行截图:

      

     

      

    参考链接:

    python实现通过企业微信发送消息

    https://www.cnblogs.com/bluezms/p/8948187.html

    python脚本--用企业微信实现发送信息

    https://blog.csdn.net/liyyzz33/article/details/86080936

    企业微信后台管理:

    https://work.weixin.qq.com/

    企业微信API文档:

    https://work.weixin.qq.com/api/doc#90000/90003/90487

  • 相关阅读:
    C++ 11 Lambda表达式
    Hello word!
    nginx 官方文档翻译
    Http读书笔记1-5章
    ROM、RAM、DRAM、SRAM和FLASH的区别
    优化专题
    Typescript学习
    canvas实现的粒子效果
    【转载】js常用方法和片段
    【转载】图解正向代理、反向代理、透明代理
  • 原文地址:https://www.cnblogs.com/rancher-maomao/p/10860069.html
Copyright © 2011-2022 走看看