使用python推送消息至手机微信最全版(搭建自己的Server酱推送平台)

使用python推送消息至手机微信最全版(搭建自己的Server酱推送平台)

摘要

本文共包含以下三个部分:

  1. 使用Server酱推送消息(免费版基于模板消息,未来可能无法使用;付费版是月付模式)
  2. 使用“微信测试号”搭建类似Server酱的推送平台(基于模板消息,未来可能无法使用)
  3. 使用“企业微信”搭建类似Server酱的推送平台(完全免费,力荐!!!)

需求分析

经常会有这种需求,已经写好了程序挂在服务器后台,希望程序报错停掉的时候,可以在手机上及时收到通知;亦或者是写好了秒杀程序,监控商品何时上线(比如在线抢疫苗),想要在程序抓取到商品上架的时候,手机能得到通知;再或者是学校里的打卡,打卡成功或者失败能得到推送(比如平安复旦自动打卡)。

当然比较常用的方式是用邮箱给自己发邮件,这样手机上也能有提示,但那样着实不太酷。下面,我将先介绍使用Server酱进行推送消息至手机微信,然而由于Server酱即将不提供免费服务,付费服务还要月付,所以我将在本文介绍如何自己动手搭建Server酱推送平台,共采用两种方式:测试微信订阅号和企业微信,都很简单,并且完全免费,由于微信团队未来会下线“模板消息”这一服务,因此本文推荐直接自己手动搭建“企业微信”推送平台,相信按照文中的步骤操作,大家都能顺利配置成功。

方案一:使用Server酱推送消息(免费版基于模板消息,未来可能无法使用;付费版是月付模式)

  • Server酱·免费版:https://sc.ftqq.com/
  • Server酱·Turbo版:https://sct.ftqq.com/

免费版的使用方法在Server酱的官网已经有完备的叙述,总归分成,Github登陆(此处需要科学上网,有时候Github会被墙)。微信扫码,关注微信公众号,

  • 然后向下述网址POST数据即可:
    https://sc.ftqq.com/[SCKEY(登入后可见)].send
  • 分别接收下述两个参数
    • text:消息标题,最长为256,必填。
    • desp:消息内容,最长64Kb,可空,支持MarkDown。

下面是python推送消息封装好的示例代码

import requests
def send_message_fangtang(_item, _message):
    PUSH_KEY = '这个'
    _d = {
        "text": _message,
        "desp": _item
    }
    response = requests.post(f"https://sc.ftqq.com/{PUSH_KEY}.send", data=_d)
    print("方糖:", response.text)

Turbo版的使用方法在Server酱的官网也有完备的叙述,总共分为下述步骤:

  1. 第一步,注册企业
    用电脑打开企业微信官网,注册一个企业

  2. 第二步,创建应用
    注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」
    应用名称填入「Server酱」,可见范围选择公司名。
    创建完成后进入应用详情页,可以得到应用ID( agentid ),应用Secret( secret )。

  3. 第三步,获取企业ID
    进入「我的企业」页面,拉到最下边,可以看到企业ID。
    推送UID直接填 @all ,推送给公司全员。

  4. 第四步,推送消息到微信
    进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。

最后,向下述网址POST数据即可:
https://sctapi.ftqq.com/****************.send?title=messagetitle

总结一下,就是免费注册一个企业微信,然后创建一个应用,最后获得“企业ID”,“应用ID( agentid )”,“应用Secret”,填进Server酱·Turbo版官网

方案二:使用“微信测试号”搭建类似Server酱的推送平台(基于模板消息,未来可能无法使用)

  1. 首先,打开微信公众平台测试帐号官网,申请一个公众号的测试账号,下图是我的测试账号信息,记住AppID
    测试号信息

  2. 然后,微信扫码关注该账号,接着,你的昵称就会出现在图右侧那个“微信号”栏目,记住此处你自己的微信号id,当然这里不是微信号,只是一个识别码(当然,你后面也可以让朋友扫码关注,给朋友推送消息)
    测试号二维码及模板消息

  3. 再后来,如上图找到模板消息接口,点击新增测试模板,标题输入推送通知,或者你喜欢的啥都行,内容如下,当然这里是为了兼容“Server酱”,记住这里的模板ID

{{title.DATA}}
{{content.DATA}}
--By 爱你的鹏鹏酱

PS:上面这张图里的接口大家也可以自己点进去阅读,还有许多其他功能,笔者写此文的时候,还有模板消息这个接口

  1. 最后,就是python发送消息
    下面是python推送消息封装好的示例代码,逻辑是先request获取一个token,然后用该token给自己微信号发消息
import requests
def send_message_ceshiVX(_item, _message, userid = '前文说的微信号id'): # 默认发送给自己
    appid = '前文说的appid'
    secret = '前文说的appsecret'
    template_id = '前文说的模板id'
    title = _item
    content = _message

    # 获取token
    response = requests.get(
        f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret)
    data = json.loads(response.text)
    access_token = data['access_token']

    payload = {'touser': userid, 'template_id': template_id,
               'data': {'title': {'value': title}, 'content': {'value': content}}}

    headers = {'header': "Content-Type: application/json;charset=utf-8"}
    url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' + access_token

    json_template = json.dumps(payload)
    response_send = requests.post(url, headers=headers, data=json_template)
    print("测试公众号:", response_send.text)

总结一下,就是免费注册一个公众平台测试帐号,然后创建一个模板消息,最后获得“appid”,“appsecret”,“模板id”,和“微信号id”,添加到POST的数据里面,再附加自己需要的文本一并POST即可

此方式的缺点是,公众平台测试账号被折叠在了“订阅号”栏目,需要手动点进去才能看见消息,而且未来模板消息下架,可能无法再用!!!

方案三:使用“企业微信”搭建类似Server酱的推送平台(完全免费,力荐!!!)

该方法类似于“Server酱·Turbo版”,只不过变成自己搭建平台,发送应用消息

  1. 第一步,注册企业
    用电脑打开企业微信官网,注册一个企业
  2. 第二步,创建应用
    注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」
    应用名称填入「鹏鹏的忠实粉丝」(此处可以用自己喜欢的名字),可见范围选择公司名。
    创建应用

创建完成后进入应用详情页,可以得到应用ID( agentid )应用Secret( secret )
获取agentid和secret

  1. 第三步,获取企业ID
    进入「我的企业」页面,拉到最下边,可以看到企业ID

  2. 新增的第四步!!,进入「通讯录」页面,再点击自己的名字,可以看到账号(即为userid)
    通讯录获取userid
    通讯录获取userid

  3. 第五步,推送消息到微信
    进入「我的企业」 → 「微信插件」,拉到下边扫描二维码,关注以后即可收到推送的消息。

  4. 最后,就是python发送消息
    下面是python推送消息封装好的示例代码(函数范围是否发送成功),逻辑是先request获取一个token,然后用该token给自己微信号发消息。

def send_message_QiYeVX(_message, useridlist = ['前面的userid']): # 默认发送给自己
    useridstr = "|".join(useridlist)
    agentid = 应用ID( agentid )

    corpid = '前面的企业ID'
    corpsecret = '前面的应用Secret(secret)'
    response = requests.get(f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={corpsecret}")
    data = json.loads(response.text)
    access_token = data['access_token']

    json_dict = {
       "touser" : useridstr,
       "msgtype" : "text",
       "agentid" : agentid,
       "text" : {
           "content" : _message
       },
       "safe": 0,
       "enable_id_trans": 0,
       "enable_duplicate_check": 0,
       "duplicate_check_interval": 1800
    }
    json_str = json.dumps(json_dict)
    response_send = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={access_token}", data=json_str)
    return json.loads(response_send.text)['errmsg'] == 'ok'

总结一下,就是免费注册一个企业微信,然后创建一个应用,最后获得“企业ID”,“应用ID( agentid )”,“用户ID”,然后填入POST的数据里面,再附加自己需要的文本一并POST即可

PS:企业微信自建应用还有许多其他酷炫功能,大家可以自己阅读相关文档

Q&A:有可能会出现,发送成功,但是手机微信无法收到消息的情况,如何解决?

手机下载企业微信,打卡「我的」栏目,选择「设置」,再选择「新消息通知」,把「仅在企业微信中接收消息」里面的「应用消息」选项给关掉

  • 10
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值