WxPusher 消息推送

第 1 节 概述

问题

如何尽可能简单的说服其他人给他推送消息?

首先,不能安装额外的App,最好就通过微信来推送

其次,操作步骤要足够的无脑,最好扫个码就一键搞定

然后,下班就不能被打扰,最好能够设置消息免打扰

最后,推送的内容要一眼能看懂,最好要比自己去获取消息轻松一万倍

WxPusher (微信推送服务)是一个使用微信公众号作为通道的,实时信息推送平台,你可以通过调用API的方式,把信息推送到微信上,无需安装额外的软件,即可做到信息实时通知。 你可以使用WxPusher来做服务器报警通知、抢课通知、抢票通知,信息更新提示等。

限制说明:

  • WxPusher 会保留 7 天的数据 ,7 天以后不再提供可靠性保证,会不定时清理历史消息
  • 单条消息的数据长度(字符数)限制是:
    • content<40000
    • summary<20
    • url<400
  • 单条消息最大发送 UID<2000 ,单条消息最大发送 topicIds<5
  • 单个微信用户,每天最多接收 2000 条消息
  • 最大 QPS 不能超过 2,比如最多连续 10 秒调用 20 次发送接口,超过这个限制会被系统拦截。

以上都是官网对于这款产品的介绍。当然,这款产品真正吸引我的是,我觉得我终于可以简单的说服其他人给他推送消息了。

失败

我尝试过通过 Web 协议登录微信去推送消息,比如这款项目,很快微信便告知我这是违规的,并且还警告要封我号。

失败

我尝试过通过企业微信的机器人去推送消息,发现对方也必须去下载一个企业微信,并且和我在同一个内部群才可以使用。

失败

我思考过能不能让别人下载一个 App,然后通过 App 推送给他们,可是转念一想,安装教程是我来写,搞不好安装还是我来装。

失败

我查看过各大短信服务商的报价,发现发短信通知并不经济。而且,我明明是消息提供者,居然还要自费推送,简直岂有此理。

第 2 节 WxPusher

2.1 登录管理后台

访问网址,使用微信扫描二维码,新用户首次扫码自动注册,进入管理后台。

2.2 创建新应用

https://img.papergate.top:5000/i/2025/01/6783ce7e6d974.webp

把必要内容填写即可,选填内容用处不是特别大。

  • 回调地址:可以不填写,不填写用户关注的时候,就不会有回调,你不能拿到用户的 UID,参考回调说明

  • 设置地址:可以不填写,填写以后,用户在微信端打开「我的订阅」,可以直接跳转到这个地址,并且会携带 UID 作为参数,方便做定制化页面展示。

  • 关注提示:用户关注或者扫应用码的时候发送给用户的提示,你可以不填写,WxPusher 会提供一个默认文案。你也可以在用户关注回调给你 UID 的时候,再主动推送一个提示消息给用户。

信息

创建应用以后会得到一个 AppToken ,复制下来备用。

2.3 创建主题

https://img.papergate.top:5000/i/2025/01/6783d0438e6b7.webp

创建完应用之后,就可以实现单独发送了,但是为了实现群发,需要创建一个主题。

https://img.papergate.top:5000/i/2025/01/6783d0e0519df.webp

信息

创建完主题以后会得到一个 TopicId,当然,这个也需要复制下来备用。

2.4 发送订阅

https://img.papergate.top:5000/i/2025/01/6783d1cf90935.webp

有两种方式,扫二维码和链接,发送给其他人,让他订阅。

2.5 推送消息

虽然官方提供的 API 还有其他功能,但是大部分时候,能够推送消息就足够了。推送消息的方式是通过 POST 请求发送 JSON 数据到官方 API 服务器即可。

  • topicIdsuids至少一个,可以填两个,填写的topicIds群发,填写的uids单发。
  • contentType1:表示文字,2:表示html,3:表示markdown
  • summary表示推送的标题,可选
  • url表示原文链接,可选
  • verifyPayType是否验证订阅时间,0:不验证,1:只发送给付费的用户,2:只发送给未订阅或者订阅过期的用户
技巧

一般contentType=2就可以,功能最为强大,比如可以放置<iframe>引入其他页面的内容。

使用python实现一下数据推送:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import requests

APP_TOKEN = xxxxx

def send_wxpusher(summary, content):
    headers = {
        'Content-Type': 'application/json'
    }
    data = {
        "appToken": APP_TOKEN,
        "summary": summary,
        "content": content,
        "contentType": 2,
        "topicIds": [
            xxxxx
        ],
        "verifyPayType": 0
    }
    response = requests.post(url=f"https://wxpusher.zjiecode.com/api/send/message", headers=headers,json=data)