介绍

注意:南博v2.1已经不在支持此插件了,南博已经使用了第三方推送服务,后续将给出新版南博的推送HTTP接口
注意:南博v2.1已经不在支持此插件了,南博已经使用了第三方推送服务,后续将给出新版南博的推送HTTP接口
注意:南博v2.1已经不在支持此插件了,南博已经使用了第三方推送服务,后续将给出新版南博的推送HTTP接口

南博v1.8开始,写入了消息推送功能。
当前:消息推送版本 1.0

什么是消息推送呢?
消息推送,让博主使用接口在需要的地方调用发消息给南博
比如博客哪里出故障了,调用发送给南博
比如博客有新评论,在评论完成的回调中调用消息推送至南博
插件:https://github.com/kraity/Messages

注意:如果你要实时推送,需要在南博->个性设置->消息推送->设置轮询时间间隔。建议每10分检测有无消息
注意:同时,需要给南博有通知权限,开启后,南博检测也没有通知权限,没有权限就弹出弹窗,指导授予南博通知权限

后续中,会完善更多,会和自己的微信公众号对接

温馨提示: 如果你是php小白,建议等待大佬造轮子

那么我们开始吧。

准备

  • 下载软件 南博v1.8
  • 下载插件 消息推送 插件点击下载

安装

  • 安装南博
  • 安装插件

警告

Messages 插件的文件夹名必须为Messages

静态调用

注意是PHP代码
注意是PHP代码
注意是PHP代码

1.在需要的地方调用

 Messages_Plugin::send("不好了,你的博客出问题了,快来解决");

这里可以使用三个参数 msgdestroyauthorId

msg 是推送消息的内容
例如

Messages_Plugin::send("今天访客超过1000人啦");

destroy 是消息经过多少时间后过期,注意是时间戳是秒级
如果不填,表示默认1个小时
但是插件不会自动摧毁过期的消息,需要在南博app->点击消息图标->同步和摧毁

//一小时
Messages_Plugin::HOURS

//一分钟
Messages_Plugin::MINUTE

//一天
Messages_Plugin::DAY

//七天
Messages_Plugin::DAY * 7

//使用方式  表示这条消息一个小时后过期(不会自动摧毁)
Messages_Plugin::send("不好了,你的博客出问题了,快来解决",Messages_Plugin::HOURS);

authorId 该条消息的作者是谁,默认是1
例如

Messages_Plugin::send("不好了,你的博客出问题了,快来解决", Messages_Plugin::HOURS, 1);

也可以调用后获取该消息的mid

$mid = Messages_Plugin::send("今天访客超过1000人啦");

接口调用

当然,支持http接口调用。
接口地址会在Messages插件配置的Secret描述下,打印
一般为 https://domain.com/messages/send

1.请求方式,GET,POST均可

2.获取Secret
在Messages插件配置里,启用时,随机设置一一段字符。
再接口中调用需要用到这个Secret,进行验证,为啥?,安全啊。

3.请求构造
获取了接口地址https://domain.com/messages/send
timestamp sign msg authorId msg destroy 参数
其中timestamp sign msg是必须的参数,缺少会抛出异常

msg
是需要推送的内容

使用
timestamp
表示请求发送时的时间戳,比如 2020/3/31 9:56:16 时间戳 就是 1585619776是秒级
如果timestamp的时间加上10秒后,小于了接口响应时的当前时间戳,就会抛出异常,防止接口泄露,别人循环利用

sign
md5 32位
表示验证权限。
计算方式: md5(secret+timestamp) 注意secret+timestamp是字符串拼接,不是相加。
比如secret是7eca689f0d3389d9dea66ae112e5cfd7,请求发送的时间戳是1585619776
然后计算md5(secret+timestamp) 即 md5(7eca689f0d3389d9dea66ae112e5cfd71585619776)
那么请求的的sign参数就是c67bb49895a0d06f31a7b2d86438ed82

那么基本的get接口就是
https://domain.com/messages/send?msg=服务器挂了&timestamp=1585619776&sign=c67bb49895a0d06f31a7b2d86438ed82

返回内容是json类型

{"code":0,"msg":"mid"}

其中code,是表示状态,0表示成功,100表示异常即失败
如果成功 msg就是返回mid,失败就msg就是错误日志。

其他的参数自己类比

post请求更简单,类比

注意:请勿泄露secret

消息摧毁

插件不会自动摧毁过期的消息

方式1
南博app->点击消息图标->同步和摧毁

方式2
在自己的开发中调用php代码

Messages_Plugin::destroy();

删除特定的消息,
需要知道该消息的mid,
然后调用

Messages_Plugin::delete(
    array(
        1,3,44
    )
);

使用频率

千万不要,每分每秒的调用
千万不要,每分每秒的调用
千万不要,每分每秒的调用

写入权限

插件启用后默认是开启写入的权限。
可以在插件配置里,关闭写入能力。

PR

欢迎PR
Github: https://github.com/kraity/Messages