Waline评论通知接入记录(二)
📝1174 个字
 | ⌛要看完怎么也得3分钟吧
链接汇总
Waline官网:https://waline.js.org/
Waline官方仓库:https://github.com/walinejs/waline
Qmsg官网:https://qmsg.zendee.cn/
前景提要:
- 书接上回,因为在waline官方文档看到自带推送的功能,所以先是尝试接入了一下smtp邮件提醒,然后就喜提126邮箱封禁。虽然之后手动解封了,但鉴于环境因素,就决定暂时不开启该功能。之后又尝试接入了qmsg消息推送,但也是四面楚歌,始终没有生效。因此,本次继续上次的尝试,看看能否定位不生效的原因,并尝试修复。
心路历程:
-
日志分析:
- 初步怀疑可能是waline在执行对应逻辑时,出现了错误,又或者因为某些配置问题,并没有执行对应的逻辑。因此最简单的定位问题方式,就是查看vecel的服务器日志。
- 先在网站中,添加一条测试评论。然后进入vecel控制台,点击上方的Logs页签,即可看到有关刚刚添加的评论日志信息。

- 从日志信息可知,在评论添加入库后,有一条日志,疑似是已经成功进行了消息推送,虽然实际上并没有生效。因此,如果这条日志没有问题的话,那就可能是qmsg本身出现故障了。
-
qmsg接口测试:
- 好在qmsg官网提供了api文档,通过查询文档可知,qmsg使用方式是通过HTTP请求发送表单或json数据,给指定服务器,然后服务器再转发相关信息至对应推送账号。因此可以直接手动发送一个HTTP请求,看看是否能跑通。
- 测试方式也很简单,直接用浏览器的控制台功能,编写并配置好对应信息后,执行脚本即可。

- 返回信息意外的没有任何问题,对应账号也成功收到推送信息。因此只可能是那条日志,并非我说理解的那个意思,又或者这条日志本身就是有问题的。。。
-
waline源码分析:
- 好在waline本身开源,直接打开官方仓库,即可找到对应的逻辑。通过搜索日志中的关键词,最终定位到qmsg推送的逻辑,是在官方仓库的packages/server/src/service/notify.js文件中。

- 从源码也可以看出,waline本身并没有添加qmsg是否推送成功的日志。因此,要想定位问题,只能自己建立一个分支并部署了。
- 一回生二回熟,有了之前的经验,再重新部署一遍相对就快多了。同时,因为当初我测试的时候使用的是json的接口,因此增加回调日志的同时,顺便也把源码的表单形式改成了json。

- 好消息是,再次评论,成功再vecel上看到了新加的日志。说明配置没啥问题,逻辑确实是执行到qmsg这里。但坏消息是,输出的是新加的错误日志{"success":false,"reason":"未知错误","code":500,"info":{}},说明请求失败了,而且还是未知错误💩💩。。
- 无奈要想继续定位问题,只能试图寻找qmsg官方的帮助了,不过好在官网提供了对应的FAQ群。经过一天的等待,非常幸运等到了回复。不过大伙也不是很明白问题出在哪,但好在成功获取到了未知错误的具体信息,Content type 'text/plain;charset=UTF-8' not supported。
- 错误信息说明了一件事,就是请求的Content-Type,和逻辑代码中实际传入的存在明显的出入,会出现这种情况,难道是vercel对该Http请求进行了二次加工?如果是酱紫的话,那要修复起来就又是雪上加霜。。
- 不过就在大伙一筹莫展的时候,突然意识到了问题所在。和之前本地测试的代码,逐字进行对比后,发现waline源码中header少了一个关键的s。而我在修改表单为json的时候,也并没注意到这里的拼写存在问题,因此也就保留了下来🤡🤡。。。

- 再次修改并重新部署评论后,终于如愿以偿收到了消息推送🎉🎉。到此,qmsg成功接入成功,感谢qmsg官方提供的技术支持。但目前也只能先使用自己修改的源码部署服务器,希望waline官方,能在之后的版本修复该问题吧。。。