V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
JustSong
V2EX  ›  分享创造

搭建专属于你的微信消息推送服务

  •  2
     
  •   JustSong ·
    songquanpeng · 2021-01-17 18:53:52 +08:00 · 8596 次点击
    这是一个创建于 1166 天前的主题,其中的信息可能已经有所发展或是发生改变。

    描述

    利用测试号来给自己的微信推送消息,不依赖他人的公众号和服务。

    例如可用于监控 Githhub star 数量 :D 推送截图

    项目地址: https://github.com/songquanpeng/message-pusher

    在线预览: https://wechat-message.herokuapp.com/

    截图

    首页 配置页面

    搭建步骤

    域名设置

    先去你的云服务提供商那里添加一个子域名,解析到你的目标服务器。

    服务器端配置

    1. 配置 Node.js 环境,推荐使用 nvm
    2. 下载代码:git clone https://github.com/songquanpeng/message-pusher.git
    3. (可选)修改根目录下的 config.js 文件,在其内可以修改监听的端口,也可配置是否选择开放注册,注意 href 字段不仅仅是域名,后面要加 /。
    4. 安装依赖:npm i
    5. 安装 pm2:npm i -g pm2
    6. 使用 pm2 启动服务:pm2 start ./app.js --name message-pusher
    7. 使用 Nginx 反代我们的 Node.js 服务,默认端口 3000 (你可以在 config.js 中进行修改)。
      1. 修改应用根目录下的 nginx.conf 中的域名以及端口号,并创建软链接:sudo ln -s /path/to/nginx.conf /etc/nginx/sites-enabled/message-pusher.conf注意修改这里的 /path/to/nginx.conf,且必须是绝对路径,当然如果不想创建软链接的话也可以直接将配置文件拷贝过去:sudo mv ./nginx.conf /etc/nginx/sites-enabled/message-pusher.conf
      2. 之后使用 certbot 申请证书:sudo certbot --nginx
      3. 重启 Nginx 服务:sudo service nginx restart

    微信公众平台端配置

    1. 首先前往此页面拿到 APP_ID 以及 APP_SECRET 。
    2. 使用微信扫描下方的测试号二维码,拿到你的 OPEN_ID 。
    3. 新增模板消息模板,模板标题随意,模板内容填 {{text.DATA}},提交后可以拿到 TEMPLATE_ID 。
    4. 填写接口配置信息,URL 填 https://你的域名 /前缀 /verify,TOKEN 随意,先不要点击验证。(前缀默认和用户名相同)
    5. 现在访问 https://你的域名 /,默认用户为 admin,默认密码为 123456,登录后根据系统提示完成配置,之后点击提交按钮。
    6. 之后回到微信公众平台测试号的配置页面,点击验证。

    验证是否配置成功

    访问 https://你的域名 /前缀 /Hi,如果你的微信能够收到一条内容为 Hi 的模板消息,则配置成功。

    其他

    1. 后续将支持推送邮件消息,webhook 以及 Markdown 消息,敬请关注。
    2. 如果只是个人使用的话可以考虑使用 v0.1.1 版本,更加轻量。
    3. 项目地址: https://github.com/songquanpeng/message-pusher
    38 条回复    2021-01-22 09:52:09 +08:00
    Blanke
        1
    Blanke  
       2021-01-17 20:12:26 +08:00
    得服务号才可以吧?
    JustSong
        2
    JustSong  
    OP
       2021-01-17 20:24:13 +08:00 via Android
    @Blanke 不需要,直接用测试号,详见 README
    daben1990
        3
    daben1990  
       2021-01-17 20:26:01 +08:00
    厉害,mark 一个
    Alwaysonline
        4
    Alwaysonline  
       2021-01-17 20:31:01 +08:00
    可以替换 openwrt 的 severchan 不?
    xctcc
        5
    xctcc  
       2021-01-17 20:32:30 +08:00
    这个测试号是直接显示在聊天列表里还是要点订阅号进去看的
    nuk
        6
    nuk  
       2021-01-17 20:45:14 +08:00
    刚刚弄了推送 UPS 的消息到微信企业号。。
    JustSong
        7
    JustSong  
    OP
       2021-01-17 21:20:35 +08:00
    @Alwaysonline 没用过 OpenWRT,如果只是调用接口的话都是发送 HTTP 请求,应该没啥问题;如果是部署的话,这个是 Node.js 写的,没试过。

    @xctcc 要点进去
    fox0001
        8
    fox0001  
       2021-01-17 23:11:36 +08:00 via Android
    只能给自己推送吗?可以指定家庭成员接收推送吗?
    JustSong
        9
    JustSong  
    OP
       2021-01-17 23:41:39 +08:00
    @fox0001 支持多用户的,不同用户对应不同前缀
    lniwn
        10
    lniwn  
       2021-01-18 08:44:41 +08:00 via iPhone
    server 酱?
    JustSong
        11
    JustSong  
    OP
       2021-01-18 09:01:13 +08:00 via Android
    @lniwn 类似其测试号版本
    cat9life
        12
    cat9life  
       2021-01-18 09:22:15 +08:00
    这个不错啊 微信测试号用了几年了
    ychost
        13
    ychost  
       2021-01-18 09:30:29 +08:00   ❤️ 1
    这个太麻烦了,必须关注公众号,还是钉钉机器人或者 telegram 机器人方便点,
    JustSong
        14
    JustSong  
    OP
       2021-01-18 09:33:34 +08:00
    @ychost 关注的是自己的测试号,不会有其他人的推送
    justin2018
        15
    justin2018  
       2021-01-18 09:44:28 +08:00
    很简约 啥时候支持 markdown 😁
    elfive
        16
    elfive  
       2021-01-18 09:48:09 +08:00 via iPhone   ❤️ 2
    用了这么多……还是 bark 用起来最舒服,安装也简单,一个容器就搞定了
    abersheeran
        17
    abersheeran  
       2021-01-18 09:57:54 +08:00
    很有意思啊。不过我不太懂 node.js ,我晚上写一个 Python 的用好了。感谢分享。
    JustSong
        18
    JustSong  
    OP
       2021-01-18 10:04:17 +08:00
    @justin2018 应该下个周末就会去搞

    @abersheeran Node.js 环境搭建照着 README 来应该不会遇到什么问题,我感觉写得还算详细
    henryhu
        19
    henryhu  
       2021-01-18 10:14:19 +08:00   ❤️ 1
    不错哦,支持一个
    draguo
        20
    draguo  
       2021-01-18 10:59:21 +08:00
    测试号是收在订阅号里面的,外面不能第一时间看到,就自己使用完全没必要上公众号,直接微信里开启 qq 邮箱提醒,然后程序发邮件就行,维护简单还有记录
    zitup
        21
    zitup  
       2021-01-18 11:10:00 +08:00
    可以接收 webhook 吗
    JustSong
        22
    JustSong  
    OP
       2021-01-18 11:12:17 +08:00
    @draguo 点击通知也能直接跳转过去,对我而言还算可以接受,发送邮件消息的功能后续就会加上,主要是调用简单,一个 GET 请求搞定
    abersheeran
        23
    abersheeran  
       2021-01-18 11:12:52 +08:00
    @JustSong 没没没。我写一个 Python 版本的,万一以后真有项目要用可以直接用。Node.js 我只是不太熟它的 web 框架,代码啥的我还是看得懂的。
    JustSong
        24
    JustSong  
    OP
       2021-01-18 11:16:13 +08:00
    @zitup 接收当然是可以的,不过目前消息只能写死在 URL 里,后续版本会提供更加完善的支持
    eason1874
        25
    eason1874  
       2021-01-18 11:17:28 +08:00   ❤️ 3
    自己注册个企业微信就行了,个人也能注册,随便填个企业名字,不用认证。比测试号好用得多。

    在“应用管理”自建应用,每个应用的功能跟服务号差不多。

    然后你的微信列表就多了一个好友,头像名字就是你的企业微信,点进去是应用列表,每个应用就是一个服务号。
    JustSong
        26
    JustSong  
    OP
       2021-01-18 11:33:26 +08:00
    @eason1874 这样的呀,长见识了,谢谢,将来会考虑适配一下
    MEOWwONE
        27
    MEOWwONE  
       2021-01-18 13:55:20 +08:00   ❤️ 1
    不错哦 可以看看
    xdeng
        28
    xdeng  
       2021-01-18 14:16:59 +08:00
    等一个 go 版
    JustSong
        29
    JustSong  
    OP
       2021-01-18 14:38:29 +08:00 via Android
    @xdeng 后续会考虑的
    yanghui1228
        30
    yanghui1228  
       2021-01-18 15:11:18 +08:00 via Android
    太麻烦,直接微信开 qq 邮箱提醒,服务有提醒直接发邮件就行。
    zyq2280539
        31
    zyq2280539  
       2021-01-18 15:58:27 +08:00
    我手上有腾讯企业邮箱,貌似也是习惯了用邮件,感觉都差不多的蛤
    jucelin
        32
    jucelin  
       2021-01-18 16:27:40 +08:00
    @eason1874 #25 用群机器人,更简单
    eason1874
        33
    eason1874  
       2021-01-18 17:47:38 +08:00
    @jucelin #32 纯粹推送消息,群机器人简单,但是应用的功能远不是群机器人能比的。除了推送消息,每个应用还可以独立设置自定义菜单,接收消息和事件,通过这些可以进行快速交互。

    比如,我点下 Nginx 应用菜单就可以快速查询 Nginx 状态和日志,点下安全组应用菜单就可以拿到临时授权链接去把本地 IP 加入白名单,搞完点下删除菜单又可以快速删除,点下 DDNS 应用菜单可以快速开关测试解析,或者给应用发送消息去快速修改。
    xinyana
        34
    xinyana  
       2021-01-18 18:41:30 +08:00
    这个可以
    abersheeran
        35
    abersheeran  
       2021-01-18 21:07:13 +08:00
    @eason1874 我在微信列表没找到我新创建的企业,只有公司的账号。是需要额外配置什么才能在微信列表显示吗?
    eason1874
        36
    eason1874  
       2021-01-18 21:22:22 +08:00   ❤️ 1
    @abersheeran #35 菜单:我的企业 -> 微信插件 -> 邀请关注,扫一下二维码加入企业

    https://work.weixin.qq.com/wework_admin/frame#profile/wxPlugin

    创建应用在菜单:应用管理 -> 应用 -> 自建 -> 创建应用

    https://work.weixin.qq.com/wework_admin/frame#apps
    abersheeran
        37
    abersheeran  
       2021-01-18 23:36:37 +08:00
    @eason1874 感谢。
    NeedforV2
        38
    NeedforV2  
       2021-01-22 09:52:09 +08:00
    感觉会火,收藏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5932 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:36 · PVG 10:36 · LAX 19:36 · JFK 22:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.