在学习开发企业微信内部应用的时候碰到很多问题,比如调用api、发送POST请求、POST请求上传文件等诸多问题,对于一个没有学过网络编程的小白来说,真的很崩溃!!!
以前没有接触过网络编程的小白碰到这些问题可能会焦头烂额,所以今天就把我写的应用消息推送代码分享出来,希望能够帮助到大家。
在使用企业微信的api时候首先要知道自己所开发的应用的access_token的值。我们可以通过GET请求来得到access_token的值。
corpid="XXXXXXXXX" #企业id值
corpsecret="XXXXXXXXXXXX" #应用secret值
#获取access_token
def get_access_token():
get_act_url="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={}&corpsecret={}".format(corpid,corpsecret)
act_res=requests.get(url=get_act_url).json()
access_token=act_res["access_token"]
return access_token
需要注意的是,在Python中发送POST、GET等请求需要在前面加上requests库,还有就是处理字符串的时候需要使用到json库。
import requests
import json
其中,corpid为企业id,可以在企业微信网页后台的“我的企业”——>“企业信息”——>“企业ID”中看到。
#发送文本消息
def send_text_message(message):
send_text_url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}".format(get_access_token())
data={
"touser" : "@all", #接收消息的用户
"msgtype" : "text", #消息类型
"agentid" : 1000002, #应用id
"text" : {
"content" : message #消息内容
},
"safe":0, #0为公开信息,1为保密信息
}
text_message_res=requests.post(url=send_text_url,data=json.dumps(data)).json()
return text_message_res
示例:
send_text_message("你好,开发者") #在括号中填入你要发送的消息,一定要加上单引号或双引号,因为这是字符串
#这里是支持使用转义符的
如果返回值中的errcode为0,则代表消息发送成功。如果发送失败,可以打开返回值中的网站,网站会根据你的错误码告诉你发送失败可能的原因。
agentid为应用id,可以在应用的详情界面找到。字典data中的“touser”指的是接收消息的用户id,填写“@all”则代表这个应用的所有用户都能收到消息。如果想给指定的用户发送消息,则需要填写用户id,通过“|”分隔。
示例:
"touser" : "xiaozhang|xiaowang|xiaoli|xiaoming"
用户id查看方法:
点击通讯录中用户右侧的三个点,选择编辑
在编辑页面可以看到用户的账号,也就是用户id,管理员也可以修改用户id
除了使用用户id之外,还可以通过部门id、标签两种方式进行定向推送,使用方法同上,在这里就不再赘述。
附上参数表,即字典data的内容,可以根据实际需要来进行使用。
在使用应用消息推送的api时候,发送图片消息需要我们提供图片的media_id值,以此来获取我们要发送的图片。发送的图片是作为临时素材的,所以我们需要先把图片作为临时素材上传,上传完成后,api会给我们返回图片对应的media_id值。
上传临时素材并获取media_id:
def get_media_id(filetype,path):
upload_file_url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={}&type={}".format(get_access_token(),filetype)
files = {filetype: open(path, 'rb')}
file_upload_result = requests.post(upload_file_url, files=files).json()
return file_upload_result["media_id"]
函数的参数中,“filetype”为文件类型,在这里我们填“image”即可(image一定要加单引号或者双引号!)。path为文件路径,填写绝对路径和相对路径都可以。函数返回值为我们需要的media_id值。
示例:
get_media_id("image","a.jpg") #相对路径
get_media_id("image","C:/users/desktop/a.jpg") #绝对路径
得到media_id后,我们就可以发送图片消息了。
#发送图片消息
def send_picture_message(media_id):
send_picture_url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}".format(get_access_token())
data={
"touser" : "@all",
"msgtype" : "image",
"agentid" : 1000002,
"image" : {
"media_id" : media_id
},
"safe" : 0,
}
picture_message_res=requests.post(url=send_picture_url,data=json.dumps(data)).json()
return picture_message_res
示例:
send_picture_message(get_media_id("image","a.jpg"))
如果在发送消息之后出现了48002的错误代码,那么极有可能是你的通讯录没有同步api。
解决办法:
在管理工具中找到“通讯录同步”
然后编辑权限,设置为API编辑通讯录即可。
以上就是关于企业微信内部应用消息推送的相关内容。其他类型的消息方法大同小异,读者可参考企业微信的api文档来进行探索。本人为刚入门的小白,希望我的文章能对大家有帮助,如果有错误之处欢迎指正!