精华内容
下载资源
问答
  • Python版本企业微信开发,下载后通过pychar运行。可实现发送消息,创建群聊,记录log。是一个桌面版本的应用软件! Python 企业微信调试工具,是一个桌面应用。可以发送消息给个人或者群聊。支持创建群聊,只是一个...
  • Python 企业微信机器人 发送微信消息 2021/02/20 Server酱是一个很好用的微信消息推送工具,常用于服务器异常报警、向微信发送消息。 其实企业微信本身就支持机器人,可以使用API发送文本、图片、音频、视频、文件等...

    Python 企业微信机器人 发送微信消息

    2021/02/20

    Server酱是一个很好用的微信消息推送工具,常用于服务器异常报警、向微信发送消息。

    其实企业微信本身就支持机器人,可以使用API发送文本、图片、音频、视频、文件等消息,实现在个人微信中接收消息,无需下载企业微信客户端。

    1. 注册企业微信
      企业微信目前是支持个人注册的,即使没有企业,还是可以使用。
      前往 https://work.weixin.qq.com/ 使用个人微信注册企业微信。进入管理后台,我的企业 > 企业信息,可以看到企业ID。
    2. 创建机器人
      进入管理后台,应用管理 > 自建 > 创建应用,创建一个机器人,得到AgentId和Secret。
    3. 我的企业 > 微信插件 > 邀请关注,用个人微信扫码关注,即可使用个人微信接收消息。
    4. Python代码
    import requests
    import json
    
    
    class wechatbot:
        '''
        企业微信机器人
        '''
    
        def __init__(self, corpid, agentid, secret):
            '''
            corpid: 企业ID
            agentid: 机器人的AgentId
            secret: 机器人的Secret
            '''
            self.corpid = corpid
            self.agentid = agentid
            self.secret = secret
    
        def get_access_token(self):
            get_token_api = f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={self.secret}'
            r = requests.get(get_token_api).json()
            print(r)
            if r["errcode"] == 0:
                self.access_token = r["access_token"]
    
        def upload_file(self, file_type, file_path, file_name):
            upload_api = f'https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={self.access_token}&type={file_type}'
            files = {'media': (file_name, open(file_path, "rb"), '', {})}
    
            # headers = {'Content-Type': 'multipart/form-data'}
            r = requests.post(upload_api,  files=files).json()
            print(r)
            if r["errcode"] == 0:
                return r["media_id"]
    
        def send(self, msgtype, content):
            send_message_api = f'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={self.access_token}'
    
            message = {
                "agentid": self.agentid,
                "touser": "@all",
                "msgtype": msgtype,
                msgtype: content
            }
    
            headers = {'Content-Type': 'application/json'}
            r = requests.post(send_message_api, data=json.dumps(message),
                              headers=headers).json()
            print(r)
            return r["errcode"]
    
    
    if __name__ == "__main__":
        corpid = 'wxxxxxxxxxxxxxxxxx'
        agentid = 1000002
        secret = 'SCXXXXXXXXXXXXXXXXXXXXXXXXXX'
    
        bot = wechatbot(corpid, agentid, secret)
        bot.get_access_token()
        #bot.access_token = '4awAnq'
    
        text = {
            "content": 'test - send from vscode'
        }
    
        news = {
            "articles": [
                {
                    "title": "article 1",
                    "description": "description 1",
                    "url": "https://www.example.com",
                    "picurl": "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
                },
                {
                    "title": "article 2",
                    "description": "description 2",
                    "url": "https://www.example.com",
                    "picurl": "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
                }
            ]
        }
    
        image_id = bot.upload_file('image', './test/src/123+123.png', '123+123.png')
        # image_id = '3Ru536yMS8NKoZ5lC5QBB3GyHktVWEAy8yuEoyJhXXXX'
        image = {
            "media_id": image_id
        }
    
        voice_id = bot.upload_file('voice', './test/src/hello.amr', 'hello.amr')
        # voice_id = '3XOId6MOk_gW1X48x0L0ZXfhHclK72DzUe1ZL-R1XXXX'
        voice = {
            "media_id": voice_id
        }
    
        video_id = bot.upload_file('video', './test/src/test_video.mp4', 'video.mp4')
        # video_id = '37NqJGlKZU3vcvijSO1XoJwmJ9kfyt4Pw3hhG4w2HvbkoVMPco_38BVOg9F0LXXXX'
        video = {
            "media_id": video_id,
            "title": "Title",
            "description": "Description"
        }
    
        file_id = bot.upload_file('file', './test/test.pdf', 'test.pdf')
        # file_id = '3MAsA-EWw0g1iAhlWghUzbHOUp_n_nS1iLYS1uEzXXXX'
        f = {
            "media_id": file_id
        }
    
        textcard = {
            "title": "通知",
            "description": '''
                <div class=\"gray\">gray</div>
                <div class=\"normal\">normal</div>
                <div class=\"highlight\">highlight</div>''',
            "url": "https://www.example.com",
            "btntxt": "More"
        }
    
        markdown = {
            "content": """# Title
                `code`
                **bold**
                > <font color=\"info\">info</font>
                <font color=\"warning\">warning</font>
                <font color=\"comment\">comment</font>
                [link](https://www.example.com)
                """
        }
    
        taskcard = {
            "title": "Title",
            "description": "Description<br>description",
            "url": "https://www.example.com",
            "task_id": "taskid002",
            "btn": [
                {
                    "key": "key1",
                    "name": "name1",
                    "replace_name": "replace_name1",
                    "color": "red",
                    "is_bold": True
                },
                {
                    "key": "key2",
                    "name": "name2",
                    "replace_name": "replace_name2"
                }
            ]
        }
    
        bot.send("text", text)
        bot.send("news", news)
        bot.send("image", image)
        bot.send("voice", voice)
        bot.send("video", video)
        bot.send("file", f)
        bot.send("textcard", textcard)
        # bot.send("markdown", markdown) # 个人微信不支持
        # bot.send("taskcard", taskcard) # 个人微信不支持
        
    
    1. 根据企业ID、机器人的AgentId和Secret获取access_token
    2. 调用发送消息API发送指定格式的数据
    3. 文本型消息可以直接发送,各种文件需要先上传获取media_id
    4. access_token的有效期一般为2小时,media_id的有效期是3天
    

    参考

    1. 企业微信开发文档

    ----------------8<----------------[ end ]----------------8<----------------

    展开全文
  • python企业微信机器人发送文件 import requests #传入文件 def post_file(id_url,wx_url,file): data = {'file': open(file,'rb')} # 请求id_url(将文件上传微信临时平台),返回media_id # id_url = '...
    python企业微信机器人发送文件
    import requests
    
    
    #传入文件
    def post_file(id_url,wx_url,file):
        data = {'file': open(file,'rb')}
        # 请求id_url(将文件上传微信临时平台),返回media_id
        # id_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=xxx&type=file'
        response = requests.post(url=id_url, files=data)
        json_res = response.json()
        media_id = json_res['media_id']
    
        data = {"msgtype": "file",
                 "file": {"media_id": media_id}
                }
        result = requests.post(url=wx_url,json=data)
        return(result)
    
    
    file1 = 'D:\\Py-thon\\pyhon-yunwei\\IP.txt'		#文件路径
    id_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=b40***a-c**-4***-844e-d9******88f&type=file'	#把机器人的key放入
    wx_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b40****-c***-45**-844e-d9******4***f'	#把机器人的key放入
    post_file(id_url, wx_url, file=file1)
    
    print('发送完成')
    
    运行结果:

    在这里插入图片描述

    展开全文
  • 需要的参数 1、通讯用户:touser 或 通讯组:toparty ...企业微信管理员登录企业微信, 应用管理创建应用 可见范围:发给谁 脚本代码 #! /usr/bin/env python # -*- coding: UTF-8 -*- im...

     

    需要的参数

        1、通讯用户:touser 或 通讯组:toparty
    
        2、企业ID:corpid
    
        3、应用ID/密钥:agentId,secret

    获取通讯用户/组

    通讯录 用户的账号或创建组的部门ID

    获取企业ID

    我的企业最下方

    获取应用ID/密钥

    企业微信管理员登录企业微信,

    应用管理创建应用

    可见范围:发给谁

    脚本代码

    #! /usr/bin/env python
    # -*- coding: UTF-8 -*-
    
    import requests, sys
    
    
    class SendWeiXinWork():
        def __init__(self):
            self.CORP_ID = "xxx"  # 企业号的标识
            self.SECRET = "xxx"  # 管理组凭证密钥
            self.AGENT_ID = xxx  # 应用ID
            self.token = self.get_token()
    
        def get_token(self):
            url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
            data = {
                "corpid": self.CORP_ID,
                "corpsecret": self.SECRET
            }
            req = requests.get(url=url, params=data)
            res = req.json()
            if res['errmsg'] == 'ok':
                return res["access_token"]
            else:
                return res
    
        def send_message(self, to_user, content):
            url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % self.token
            data = {
                # "touser": to_user,  # 发送个人就填用户账号
                "toparty": to_user,  # 发送组内成员就填部门ID
                "msgtype": "text",
                "agentid": self.AGENT_ID,
                "text": {"content": content},
                "safe": "0"
            }
    
            req = requests.post(url=url, json=data)
            res = req.json()
            if res['errmsg'] == 'ok':
                print("send message sucessed")
                return "send message sucessed"
            else:
                return res
    
    
    if __name__ == '__main__':
        SendWeiXinWork = SendWeiXinWork()
        SendWeiXinWork.send_message("2", "测试a")
    

    效果

    OK.

    展开全文
  • Python企业微信机器人

    2019-11-15 17:20:29
    #测试的企业微信机器人 tony_bot_txt('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx') tony_bot_txt_markdown('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx') tony_bot_img('...
    # coding=gbk
    import requests
    
    #文字(text)机器人
    def tony_bot_txt(boturl):
        storename='株洲'
        amount=12345.5
        headers={"Content-Type":"text/plain"}
        msg="门店:{}\n销售额:{}元".format(storename,str(amount))
        data={
    
            "msgtype": "text",
    
            "text": {
            "content": msg,
    
            "mentioned_list":["tony","@all"]
            }}
        res=requests.post(url=boturl,headers=headers,json=data)
        print(res.text)
    
    #文字标记(markdown)机器人
    def tony_bot_txt_markdown(boturl):
        weather="下雨"
        temperature="20度"
        headers={"Content-Type":"text/plain"}
        msg="天气:<font color=\"info\">{}</font> \n 气温:<font color=\"warning\">{}</font>".format(weather,temperature)
        data={
            "msgtype": "markdown",
     
            "markdown": {
    
            "content": msg
            }
    }
        res=requests.post(url=boturl,headers=headers,json=data)
        print(res.text)
    
    
    #带图片的机器人
    def tony_bot_img(boturl):
        num=10
        money=1002.5
        headers={"Content-Type":"text/plain"}
        msg="数量:{}\n金额:{}元".format(str(num),str(money))
        data={
            "msgtype": "news",
            "news": {
     
            "articles" : [
    {
     
                 "title" : "庆祝新中国成立70周年",
    
                 "description" : "新中国70周年的阅兵仪式,欢迎收看!",
                 "url" : "https://www.baidu.com",
    
                 "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
    
                 }]
    }
    
        }
        res=requests.post(url=boturl,headers=headers,json=data)
        print(res.text)
    #测试的企业微信机器人
    tony_bot_txt('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx')
    tony_bot_txt_markdown('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx')
    tony_bot_img('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx')
    

     

    pip install -i https://pypi.douban.com/simple pyinstaller
    pyinstaller -F -w -i xxx.ico yy.py
    在dist目录下面生成exe文件

    展开全文
  • python 企业微信 报警

    2019-09-23 15:24:56
    单例 企业微信 报警 """ __instance = None def __int__(self, CORPID, CORPSECRET, AGENTID, TOUSER): super(SinglePolice, self).__init__(CORPID, CORPSECRET, AGENTID, TOUSER) @classmethod def ...
  • 企业微信机器人图片发送: # -*- coding:utf-8 -*- import requests import base64 import hashlib def wx_image(image): with open(image, 'rb') as file: #转换图片成base64格式 data = file.read() encode...
  • 1.登录企业微信后台 若没有可进行注册:https://work.weixin.qq.com/wework_admin/register_wx?from=myhome_mp_home 2.创建部门:通讯录--添加部门(给此部门的成员提供报警消息)--添加成员--记录部门id 3.创建...
  • 注册企业微信账号 在我的企业中获取企业的id corpID = wwfe6edfd511b002e2 应用管理中,推送消息的应用。并获取应用的AgentId和Secret AgentId = 1000003 Secret = 5TbU2fubWcfbGeeAQEs8mgm0ZZAc5FJdaGk20KfeUl0 ...
  • 关于申请企业微信以及在zabbix中的应用:https://www.cnblogs.com/luoahong/articles/7911470.html 调用企业微信用于告警参考1:https://www.cnblogs.com/Eric-Young/p/7474729.html 调用企业微信用于告警参考2:...
  • 最近在使用企业微信的用户交互消息功能时,遇到了企业微信端会三次转发给我用户的消息; 如图: 原因: “”“ 企业微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。如果企业在...
  • 企业微信如何实现应用内的审批状态实时监控呢?之前我也查了很多文档,当然包括企业微信官方的文档,但是给出的文档内部问题多多,因此,我特意写了这篇博客。将企业微信审核项目实时状态反馈到公司的邮箱或者个人...
  • 企业微信在发送中文消息的时候会出现中文数据乱码的情况,解决办法,查看源码,排查出错的代码部分: def send_msg(self, token, user, agent_id, subject, content): url = "... % to...
  • 1.发送微信消息 直接使用第三方库 itchat,其文档中有详细使用方式;https://itchat.readthedocs.io/zh/latest/ 如下实例为 发送群聊信息 # -*- coding: utf-8 -*- # (C) Guangcai Ren, 2019 # All rights ...
  • 发送Django error log 到企业微信python+微信实现即时告警Django的logging系统十分好用,使用file,mail_admins之类的handlers可以快捷地实现保存日志到文件,发送错误日志给管理员的功能。但是,如果能直接将应用...
  • python3发送微信消息 bot = Bot(cache_path=True)可以保持登陆状态 embed()# 堵塞线程可以一直不掉线 代码如下: from wxpy import * bot = Bot(cache_path=True) # 定位好友 boss = bot.search('好友...
  • python发送微信

    2019-02-02 18:13:00
    使用python发送信息到企业微信,同时支持python2与python3环境,需要先申请一个企业微信,然后创建应用,获取以下三个信息 企业IP、Agentid、Secret 网信为创建的应用名称 脚本描述 将以上三个信息替换到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,905
精华内容 1,162
关键字:

python企业微信

python 订阅