一、前言
之前写过python实现钉钉机器人发送消息的脚本,如今又写了下python机器人给企业微信发送消息的脚本,发现实现企业微信机器人发送消息还是简单一些,钉钉稍微复杂一些。
二、实现代码以及实现过程中遇到的问题
刚开始是把图片转码与与图片md5的获取写在一个with open 下,以为这样简便一些,少些一行代码,即如下代码形式:
import requests
import base64
import hashlib
def send_image_message():
with open('./pictures/bug.png','rb') as f:
# 转换图片为base64格式
base64_data = base64.b64encode(f.read())
image_data = str(base64_data,'utf-8')
# 获取图片的md5值
md = hashlib.md5()
md.update(f.read())
image_md5 = md.hexdigest()
# 企业微信机器人发送图片消息
url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx'
headers = {"Content-Type":'application/json'}
data = {
'msgtype':'image',
'image':{
'base64':image_data,
'md5':image_md5
}
}
# 发送请求
r = requests.post(url,headers=headers,json=data)
发现这样写之后执行脚本,脚本执行成功了但是机器人没发送消息,后面发现图片转码与与图片md5的获取不能写在一个with open 下,正确的代码实现应该是下面贴出的代码:
import requests
import base64
import hashlib
def send_image_message():
with open('./pictures/bug.png','rb') as f:
# 转换图片为base64格式
base64_data = base64.b64encode(f.read())
image_data = str(base64_data,'utf-8')
with open('./pictures/bug.png','rb') as f:
# 获取图片的md5值
md = hashlib.md5()
md.update(f.read())
image_md5 = md.hexdigest()
# 企业微信机器人发送图片消息
url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx'
headers = {"Content-Type":'application/json'}
data = {
'msgtype':'image',
'image':{
'base64':image_data,
'md5':image_md5
}
}
# 发送请求
r = requests.post(url,headers=headers,json=data)
三、实现效果图