用Alertover实现群晖的实时消息推送
元宵节快乐~!
我们发送接收信息的渠道大多是 Email,短信。特别是服务报警这一块,短信虽好,但是太贵。而 Alertover
很好的解决了这个问题。
什么是Alertover ?
Alertover 是一个高效免费的团队消息中心,可以用来作为中小型创业团队或者公司的消息中心,随时随地,分级别、分组接收来自服务器预警,运营管理后台消息,提高技术团队,运营团队的消息响应速度。
优点:
- 当然是免费!
- 具有简单好用的API,可快速完成接入;
- 全平台支持,具有PC、Android、iOS客户端,也支持浏览器扩展插件;
- 支持多发送源,消息分级,声音提示;
官网(https://www.alertover.com/pages/api) 有详细的使用说明和代码样例。接入很方便的,我之前把它作为了 HomeAssistant
的消息组件,用来每天推送一次天气预报。
而群晖原本只设置了 邮件通知
,本身也挺好用的,只是实时性比较差
对于一些严重的错误,比如磁盘输入/输出错误
、USB 硬盘故障
等等,如果我们想第一时间知道,可行的解决方案就是将 Alertover
封装成短信服务。
注册 Alertover
首先当然是要在 https://www.alertover.com/auth/register 注册账号,并登录后台管理你的相关ID。
Alertover
以组织为单位管理成员、发送源、和接收组。我用于 HomeAssistant
当时建的组织就叫 ha
,因为通知的对象没有变化,所以没有再新建组织,只是添加了发送源 synology
添加成功后
添加 PHP 代码
关于群晖上搭建
WEB
网站,在家庭多媒体中心(5):查询篇 中有简单的介绍,这里不再赘述。
之所以选 PHP ,是因为群晖上配置简单,而且 Alertover
提供了示例代码 ,下面是参考了 synology-pushover.php 修改后的代码。这段代码我放在了 github 上,你可以在 https://github.com/wbsu2003/synology/blob/main/synology-alertover.php 找到。
1 |
|
上述代码添加到 Web
服务器的根目录。确保文件名是 synology-alertover.php
。
配置短信通知
控制面板
–> 通知设置
–> 短信
,勾选 启用短信通知
之后,新增短信服务提供商
会高亮
点击 新增短信服务提供商
,在 测试网址
中输入下面的示例
1 | http://localhost/synology-alertover.php?user=username&pwd=password&to=123456&source=发送源ID&receiver=接收组ID&title=synology&content=Hello+World |
其中
user =username
–> 映射为用户账号
–> 该参数无用,凑数用的,可以随便填,建议不动;
pwd =password
–> 映射为密码
–> 该参数无用,凑数用的,可以随便填,建议不动;
to =123456
–> 映射为电话号码
–> 该参数无用,凑数用的,可以随便填,建议不动;
source =发送源ID
–> 映射为其他参数
–> 该参数需填入发送源ID
,这是一串以s-
开头的字符串;
receiver =用户接受ID
或者接收组ID
–> 映射为其他参数
–> 该参数需填入用户接受ID
或者接收组ID
,用户接受ID
是以u-
开头的字符串;而接收组ID
是以g-
开头的字符串;
title =标题
–> 映射为其他参数
–> 该参数需填入,我固定为了synology
,建议不动;
content =消息内容
–> 映射为短信内容
–> 该参数需填入,映射后会根据事件变化;
所以上面示例内容,除了 source
和 receiver
要根据自己注册的修改外,其他的可以不动,照抄就行
下一步中按下图设置即可
这样我们就创建好了一个自定义的短信提供商,并且指向了本地 Web 服务器上的Alertover 脚本
之所以设置这么多没用的参数,是因为群晖本身的格式需要,所以主界面的 用户账号
、密码
、电话号码
都可以随便填
点 寄送测试短信
,如果一切顺利,您很快会在 Alertover
设备上收到了一条通知。
如果你仔细看会发现内容并不是我们在 content
中填的 Hello World
,这就是需要映射的原因
代码调试
为了安全性,代码是不能在非 localhost
模式下运行的,也就是不能用域名、IP方式运行,所以如果你要调试,可以将 $localOnly
改为 false
,之后就可以在浏览器中运行了
1 | $localOnly = false; |
在浏览器中输入
1 | http://群晖IP/synology-alertover.php?user=username&pwd=password&to=123456&source=发送源ID&receiver=接收组ID&title=synology&content=Hello+World |
如果返回
1 | { "code": 0, "msg": "ok" } |
就说明没问题了,如果返回
1 | invalid options |
那请你检查问号 ?
后的参数,如果返回
1 | Fatal error: Call to undefined function curl_setopt_array() in /volume1/web/synology-alertover.php on line 41 |
就是下一个问题要说的,需要包含 curl
扩展
可能存在的问题
如果设置无误,但是却一直收不到消息,检查下 Web station
的 高级设置
–> 扩展名
中是否包含了 curl
扩展
设置事件通知
控制面板
–> 通知设置
–> 高级设置
,你会发现短信有很多事件是不发送的。
直接勾选 短信
,然后 保存
接下来你就可以实时的收到各种消息推送了
参考文档
Alertover
地址:https://www.alertover.com/Synology Pushover notifications :: Styxit blog
地址:https://styxit.com/2014/05/10/synology-pushover.html