👨‍💻 只是玩玩 | JUST FUN

通过微信订阅号发送Memos

现在的Memos

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

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

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

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

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


微信订阅号发送Memos

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

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

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

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

注意事项

  • 你首先需要搭建好一个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_urlmemos_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:使用默认生成的即可。

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

设置微信发送权限

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

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

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

结束语

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

我爱开源,开源万岁。

Enjoy~!❤️❤️❤️