python实现由通知接口发送企业微信通知

python实现由通知接口发送企业微信通知

  • 问题背景
  • 要点说明
      • 1. 请求接口鉴权并返回token值
      • 2.请求通知接口发送企业微信通知
      • 3.通知内容中传入参数

问题背景

项目中需要通过 python 实现由企业微信接口发送通知的功能,由于实现过程中发现了一些小问题,因此将各种情况总结一下。

要点说明

1. 请求接口鉴权并返回token值

import requests
import json
def request_token():
	param = "{\n\t\"appkey\":\"appkey\",\n\t\"appsecret\":\"appsecret\"\n}"
	headers_token = {
    	'Content-Type': "application/json",
 		'User-Agent': "agent_name"
	}
	response_token = requests.request("POST", url='url', headers=headers_token, data=param)
	dict = json.loads(response_token.text)
	token = dict['data']['token']

注意:

  1. appkeyappsecret 是请求 token 时的账号和密码。
  2. 代理 ‘User-Agent’ 可以根据实际情况选填,由于项目中如果不填则服务器拒绝访问,因此列入。
  3. ‘Content-Type’ 为 json格式,若更改为其他格式,则会返回 400。
  4. 由于项目中请求 token 返回的包含多个字段的字典类型结果,其中 data 包含 tokenexptoken 字段返回的是获取的token值,exp 字段返回该值的有效时间。不同封装库设置不同,返回的字段也不同,需根据实际情况判断。
  5. 在提取返回信息时需要用 json.loads 解码,可通过 dict 提取返回结果中的 token 值。

2.请求通知接口发送企业微信通知

import requests
def send_notice():
    headers_port = {
        'Authorization': token,
        'User-Agent': "agent_name"
    }
    dict_data = {
        'receiver': receiver,
        'message': message
    }
    response = requests.request("POST", url='url', headers=headers_port, data=dict_data)

注意:

  1. headers_port 里,‘Authorization’ 为获取的 token值, ‘User-Agent’ 为代理名。
  2. dict_data 则是按照封装库要求填写的通知主体。

3.通知内容中传入参数

import json
def msg():
	message['title'] = "邮件主题"
	message['content'] = """
    	>事件日期:%(DATE)s
    	>事件内容:%(SCOPE)s
		>
    	>**事件详情**
		>%(CONTENT)s
	""" % dict(
    	DATE=date,
    	SCOPE=scope,
    	CONTENT=content
    	)
	message = json.dumps(message)

注意:

  1. ‘data’‘scope’‘content’ 均为外部传入的参数,可自行定义。
  2. message 主体支持 html类型,因此可以通过 html类型设置不同显示效果,突出通知重点。
  3. 封装库要求中明确 messge 内容为 json类型,因此最后需用 json.dumps 编码。

你可能感兴趣的:(python)