Python3调用企业微信用于告警

摘要:
关于代码实现,请参考前段时间py crawler捕获的一些网页信息,并决定通过探测(bai)、搜索(du)Python来调用微信企业账号;在开发之前,我们应该仔细研究企业微信的API文档。2.创建应用程序。1.管理员进入企业微信。3.获取access_token。开发者可以使用access_token访问企业微信的界面。机密用于企业应用程序以确保数据安全”

代码实现请见文末

前段时间利用py爬虫抓取一些网页信息,然后通过wxpy发送到微信群,以用作日常告警,感觉还是很方便。

但好景不长,我的小号微信被腾讯封了(很常见咯), 显示无法登录网页版微信,至今已经有半个多月了。

image

怎么办,已经体验过微信告警的方便后,无法回归原始人工查看了。思来想去,决定探(bai)索(du)Python调用微信企业号试试看;

一、申请企业微信

具体见企业微信官网:https://work.weixin.qq.com/wework_admin/register_wx?from=myhome_mp_home

反正比较麻烦,我是怎么申请的?我当了一次伸手党,前期有同事申请过微信公众号,后来直接升级为企业微信。经过深层次的沟通,同事给我加了个管理员权限,哈哈!

开发之前还是要认真研究一下企业微信的API文档

二、创建应用

1、管理员进入企业微信“管理后台” — “企业应用”创建应用
Python3调用企业微信用于告警第2张


2、设置应用logo、名称、描述、可见范围等。

开发阶段“应用可见范围”可先选择小范围可见,待开发完成后再开放给企业员工。

三、获取access_token

开发者可以使用access_token来访问企业微信的接口。需要注意的是,所有的接口需使用Https协议、Json数据格式、UTF8编码。

请求方式:GET(HTTPS
请求URL:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

image

权限说明:

每个应用有独立的secret,所以每个应用的access_token应该分开来获取

术语介绍

  • corpid:每个企业都拥有唯一的corpid,获取此信息可在管理后台“我的企业”-“企业信息”下查看(需要有管理员权限)
  • secret:secret是企业应用里面用于保障数据安全的“钥匙”,每一个应用都有一个独立的访问密钥,为了保证数据的安全,secret务必不能泄漏。通讯录接口的密钥在“管理工具”-“通讯录同步”里面查看,企业自定义的应用的密钥可以在企业应用的详情里面手动生成
  • access_token:access_token是企业后台去企业微信的后台获取信息时的重要票据,由corpid和secret产生。所有接口在通信时都需要携带此信息用于验证接口的访问权限

corpid:

2017-09-04_171908

secret:

image

四、发送消息

应用支持推送文本、图片、视频、文件、图文等类型。

请求方式:POST(HTTPS
请求地址:https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN

Python3调用企业微信用于告警第6张

五、代码实现

import urllib.request
import json

#--------------------------------
# 获取企业微信token
#--------------------------------

def get_token(url, corpid, corpsecret):
    token_url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (url, corpid, corpsecret)
    token = json.loads(urllib.request.urlopen(token_url).read().decode())['access_token']
    return token

#--------------------------------
# 构建告警信息json
#--------------------------------
def messages(msg):
    values = {
        "touser": '@all',
        "msgtype": 'text',
        "agentid": 1000002, #偷懒没有使用变量了,注意修改为对应应用的agentid
        "text": {'content': msg},
        "safe": 0
        }
    msges=(bytes(json.dumps(values), 'utf-8'))
    return msges

#--------------------------------
# 发送告警信息
#--------------------------------
def send_message(url,token, data):
        send_url = '%s/cgi-bin/message/send?access_token=%s' % (url,token)
        respone=urllib.request.urlopen(urllib.request.Request(url=send_url, data=data)).read()
        x = json.loads(respone.decode())['errcode']
        # print(x)
        if x == 0:
            print ('Succesfully')
        else:
            print ('Failed')

##############函数结束########################

corpid = 'wx***********************'
corpsecret = 'Iwy******************************'
url = 'https://qyapi.weixin.qq.com'
msg='test,Python调用企业微信测试'

#函数调用
test_token=get_token(url, corpid, corpsecret)
msg_data= messages(msg)
send_message(url,test_token, msg_data)

免责声明:文章转载自《Python3调用企业微信用于告警》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery 绑定事件到动态创建的元素上iOS UI-线程(NSThread)及其安全隐患与通信下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

yii2 下的redis常用命令集合

<?php Yii::$app->redis->set('user','aaa'); Yii::$app->redis->set('user2','bbb'); Yii::$app->redis->set('user3','ccc'); Yii::$app->redis->set('us...

Python基础之列表

列表初识 列表的作用和定义 列表是python中使用最频繁的数据类型,在其他语言中一般称为数组; 用一个变量存储多个数据; 列表存储多个数据时,在中括号之间用逗号分隔多个数据; 语法定义: 变量名 = [数据1, 数据2, 数据3,...] eg: name_list = ["zhangsan", "lisi", "wangwu"] 列表存储数据的方式和...

js-ajax方法详解以及封装

本文主要从使用ajax请求的步骤、ajax状态码和http响应状态码以及ajax封装三个方面阐述 一、使用ajax请求的步骤 // 一、创建 XMLHttpRequest 对象 var xhr = new XMLHttpRequest(); // 二、规定请求的类型、URL 以及是否异步处理请求。 // method:get/post // url:请求地...

unittest自定义封装与应用

和大家分享一个自己二次封装uniitest的方法,大家可以在评论区多多指教,一起分享学习; 一、unittest基类封装 import osimport unittestfrom common.log_print import Logfrom common.get_config import getconfigfrom common.base_page_i...

微博内容中的短地址 分析

引自 http://www.nowamagic.net/webdesign/webdesign_ShortUrlInTwitter.php 短网址应用已经在全国各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.cn/2hytQx...

sqlite3 语法

https://www.sqlite.org/index.html  官网 http://tutlane.com/tutorial/sqlite/sqlite-case-statement     http://www.runoob.com/sqlite/sqlite-data-types.html http://www.w3school.com.cn/s...