需求

有时候重启 vps,需要登录在网页上操作,很麻烦,查了下有相关的 api 做这个事,最好是我在 slack 里发条消息(重启 xx 主机),然后自动重启.

重点

实现的重点是 怎么让 Huginn 收到 slack 的消息,huginn 上的 slack agent 是发送消息到 slack, 而不能反过来,查了下 slack 文档,能实现的是 botapp,决定采用 app

实现

首先在 huginn 创建 WebhookAgent,options 如下:

1
2
3
4
5
6
7
{
"secret": "123456",//这里随便填
"expected_receive_period_in_days": 1,
"payload_path": ".",
"code": "200",
"response": "{{challenge}}"
}

response 必须是,然后创建,可以看到 webhook api url ,一般是这种形式 http://1.2.3.4/users/1/web_requests/1/123456, 记下来,下一步会用.
然后在 slack 创建 app, 然后创建 Event Subscriptions,

image.png
image.png

然后填上上一步的 url, 添加 event, 填写 url 后会检查,如果失败,请检查上一步创建的 agent.
image.png
image.png

install APP, 然后授权下
image.png
image.png

以上步骤就 ok 了,然后你在公共 channel 里发条消息,检查下 agent events 有没有相关 event,类似这样:
image.png
image.png

然后写一个 trigger agent 过滤出重启 的消息,然后传递给一个 Post agent去调用 vps 的 API,测试下就 ok 了.