IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    通过微信订阅号发送Memos

    1900发表于 2022-08-26 14:22:28
    love 0

    现在的Memos

    之前有介绍过Memos这款类flomo的卡片笔记工具,不过那个时候的Memos还是在早期阶段,各方面的功能都有欠缺,如:

    • 没有本地化,不懂英文的朋友可能会苦手
    • 不能对上传的图片进行管理,比较容易浪费储存空间
    • 没有第三方发送渠道,手机上只能通过网页版,略微麻烦
    • 发送的消息不能更改默认的显示方式(全是不公开的)
    • ...

    但是经过开发者们一段时间的迭代和社区的扩大,现在已经是 0.4.0 版本现在很多问题都得到了改善,并且已经有配套的微信订阅号后端组件。

    • 已经做了本地化,现在中文化程度90%左右
    • 有了专门的资源管理功能
    • 可以更改Memos的默认可见属性
    • ...等等其他我没发觉的改进。

    现在的Memos已经初具规模,我个人觉得拿来日常使用已经完全没有问题了,想搭建的朋友可以看我以前的文章。


    微信订阅号发送Memos

    今天的重点当然不是说Memos有多好而已,这次想说下发送Memos的第三方手段。

    我们知道Flomo是可以通过很多种渠道发送内容的,之前也Memos的作者提过这个事情,因为微信是平时用的最多、打开频次最高的软件了,如果能通过微信发Memos肯定会变得相当方便。但是他表示早期的Memos版本他们的确实现了通过微信公众号来发送Memos的功能,但是觉得这个功能太鸡肋所以给砍了...,不过他们表示后续如果用户的确有需求的话他们会考虑重新做进来。

    alt

    虽然官方没有,但是——峰回路转。

    这种需求其实不只有我有,今天在TG群发现又有朋友询问如何通过微信来发送Memos,作者这次丢了一个issue出来,就是这个:https://github.com/usememos/memos/discussions/148 ,里面有提到另外一个项目:Memos-proxy 作者ZhaoUncle通过python实现了一个微信订阅号发送Memos的功能,并配置好了Docker,可以通过很简单的配置即可使用上这个功能,不过作者的安装手册写的稍微有些凌乱,我踩了很多坑才配置好(部分问题是因为我看的不够仔细),所以这里记录一下折腾的过程。

    👉
    项目地址:https://github.com/ZhaoUncle/memos-proxy

    注意事项

    • 你首先需要搭建好一个Memos,怎么搭建可以看我的教程
    • 你需要有一个微信公众号(个人的也可以)
    • 你需要有一个域名
    • 需要用到域名的80或者443端口。
    • 你要有一台vps或能挂载docker的服务

    安装Memos-Proxy

    作者打包好了docker,直接拉取,如有定制需要求则更改数据存放路径、端口号即可。

    docker run -d -p 5000:5000  -v "/data/go/memos-proxy/config.ini:/app/config.ini" --name memos-proxy zhaoweiping/memos-proxy
    docker命令
    version: '3'
    
    services:
      memos:
        image: zhaoweiping/memos-proxy:latest 
        container_name: memos-proxy
        ports:
          - 5000:5000
        volumes:
          - /data/go/memos-proxy/config.ini:/app/config.ini
    docker-compose

    配置Config.ini

    ⚠️
    配置文件修改后必须 重启 docker容器才会生效
    ⚠️
    docker镜像好像不会自动生成config.ini文件,请手动创建后在重新restart容器

    配置文件默认存放在 /data/go/memos-proxy/config.ini  里,内容格式如下,我们根据Memos的数据填写 memos_url 、 memos_openid  、 wechat_token 即可 :

    [prod]
    ### 你的memos域名
    memos_url = https://memos.test.com  
    
    ### memos的openid,在Memos>设置>openapi里,复制openid=号之后的字符
    memos_openid = memos_openid 
    
    ### 微信公众号文件缓存是否删除,默认删除 yes,不删为no
    files_del = yes 
    
    ### 配置需要部署完之后,用订阅号随便发送一条消息,通过docker logs memos-proxy即可看到日志信息,日志会提示发送消息的用户的微信openid是【】,括号中间的就是用户的微信openid
    ### 默认允许所有用户,all表示;
    ### 多用户用英文;分隔,不需要有空格,比如:openid1;openid2
    wechat_open_id = 
    
    ### 微信公众号后台设置的token
    wechat_token = memos
    
    ### 执行后的提示语
    messages_success = memos 写入成功
    messages_failed = memos 写入失败
    
    ### 本地的ip、端口
    flask_host = 0.0.0.0
    flask_port = 5000
    配置文件各项参数说明

    微信公众号后台设置

    登录你的微信公众号,在后台根据以下路径点击左侧的列表菜单进入设置页:

    设置与开发 > 基本配置 > 右侧内容区域:[服务器配置(已启用)] > 修改配置

    这里我踩了个坑,所以说下各个参数要怎么填:

    • URL:填写你Memos的域名地址,记得后面要加上 /wecaht ,比如 http://memos.text.com/wechat (我因为没加折腾了很久...)
    • Token:填写前文 config.ini 里设置的token值
    • EncodingAESKey:使用默认生成的即可。
    alt

    设置完后提交,启用即可。

    设置微信发送权限

    默认情况下如果 config.ini 里的 wecaht_openid 为 all 的情况下是所有人都可以通过你的公众号给你的Memos发消息,如下图。

    alt

    如果你按我的配置文件设置,那么默认情况下你自己是没有发送Memos的权限的。

    这个时候用你的微信号随便给自己的公众号发一条消息,不出意外的情况下系统会自动回复一条消息  该用户没有权限 ,这个时候进入你的vps,通过执行命令 sudo docker logs memos-proxy 能得到容器的运行日志,里面会有该发送消息用户的 openid 复制添加到 config.ini 即可,如下图:

    alt
    alt
    图1:发送测试消息。 图2:后台通过日志命令获取到程序输出的微信openid

    结束语

    到这里应该整个配置流程就走完了,在这里感谢Steve、ZhaoUncle 、以及其他所有贡献开源代码的人。

    我爱开源,开源万岁。

    Enjoy~!❤️❤️❤️



沪ICP备19023445号-2号
友情链接