企业微信内部应用消息推送——Python

在学习开发企业微信内部应用的时候碰到很多问题,比如调用api、发送POST请求、POST请求上传文件等诸多问题,对于一个没有学过网络编程的小白来说,真的很崩溃!!!

以前没有接触过网络编程的小白碰到这些问题可能会焦头烂额,所以今天就把我写的应用消息推送代码分享出来,希望能够帮助到大家。

access_token的获取

在使用企业微信的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文档来进行探索。本人为刚入门的小白,希望我的文章能对大家有帮助,如果有错误之处欢迎指正! 

  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
可以实现微信小程序消息推送Python代码编写。微信小程序提供了一套接口文档,其中包括了消息推送的相关接口,可以通过调用这些接口实现消息推送。 在Python中,可以使用第三方库requests来发送HTTP请求,以调用微信小程序提供的接口。首先,需要通过微信开放平台获取到小程序的AppID和AppSecret,用于生成access_token。然后,使用生成的access_token构建请求,并发送到微信服务器,即可实现消息推送消息推送的代码示例: ```python import requests import json def send_wechat_message(appid, secret, template_id, openid, form_id, message): # 获取access_token url = f'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}' response = requests.get(url) access_token = json.loads(response.text)['access_token'] # 构建请求参数 data = { 'touser': openid, 'template_id': template_id, 'form_id': form_id, 'data': { 'keyword1': {'value': message} } } # 发送消息推送请求 url = f'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token={access_token}' response = requests.post(url, json=data) # 解析返回结果 result = json.loads(response.text) if result['errcode'] == 0: print('消息推送成功') else: print(f'消息推送失败:{result["errmsg"]}') # 调用函数发送消息 send_wechat_message('your_appid', 'your_secret', 'your_template_id', 'receiver_openid', 'form_id', 'Hello, World!') ``` 需要注意的是,消息推送前需要先通过小程序获取用户的openid和form_id。此外,由于微信接口的权限限制,每天的消息推送次数也是有限的。 以上是一个简单的微信小程序消息推送Python代码实现示例。实际应用中,可以根据具体需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

街边摆摊的宅男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值