slackのステータスアイコンを自動で更新(家かオフィスかをアイコンで表示)

Program & Service

概要

  • 以下のように、自分がどこにいるのかを自動的にSlackのアイコンに表示する方法を紹介します。
  • 2年前(2020年)ぐらいに設定した内容なのでちょっと古いところがあるかもです。

slack-wifi-status

じゃあ、どうやってステータスを変えるのかと言うと、以下のようなロジックです。

  • wifiのSSIDが変更されたときのイベントをhookする
  • SSIDとアイコンの定義を予め用意しておいて、それを元にSlackのAPIを使ってアイコンを変更する。

以下のバイナリをダウンロードします。このバイナリファイルをデーモンとして稼働させてWiFi APの変更を検知してアイコンを変更することになります。

GitHub - polidog/slack-wifi-status
Contribute to polidog/slack-wifi-status development by creating an account on GitHub.

設定ファイルを以下のような感じで書きます。slackのtokenの項目にはユーザトークンを入れます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
% cat ~/.slack-wifi-status.toml
[slack]
token = "xoxp-xxxxx-xxxxx-xxxxxxx-xxxxxxxxxxxx"
[wifi]
[[wifi.list]]
name = "office-wifi-ap"
message = "at office"
emoji = ":office:"
[[wifi.list]]
name = "office-guest-wifi-ap"
message = "at office"
emoji = ":office:"
[[wifi.list]]
name = "my-home-ssid"
message = "at home"
emoji = ":house:"
[[wifi.list]]
name = "starbucks"
message = "at starbucks"
emoji = ":comet:"
% cat ~/.slack-wifi-status.toml [slack] token = "xoxp-xxxxx-xxxxx-xxxxxxx-xxxxxxxxxxxx" [wifi] [[wifi.list]] name = "office-wifi-ap" message = "at office" emoji = ":office:" [[wifi.list]] name = "office-guest-wifi-ap" message = "at office" emoji = ":office:" [[wifi.list]] name = "my-home-ssid" message = "at home" emoji = ":house:" [[wifi.list]] name = "starbucks" message = "at starbucks" emoji = ":comet:"
% cat ~/.slack-wifi-status.toml
[slack]
token = "xoxp-xxxxx-xxxxx-xxxxxxx-xxxxxxxxxxxx"

[wifi]
  [[wifi.list]]
  name = "office-wifi-ap"
  message = "at office"
  emoji = ":office:"

  [[wifi.list]]
  name = "office-guest-wifi-ap"
  message = "at office"
  emoji = ":office:"

  [[wifi.list]]
  name = "my-home-ssid"
  message = "at home"
  emoji = ":house:"

  [[wifi.list]]
  name = "starbucks"
  message = "at starbucks"
  emoji = ":comet:"

/Users/matsu/Documents/slack-wifi-status_darwin_amd64/ にバイナリを保存した前提のplistファイル

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
% cat Library/LaunchAgents/slack-wifi-status.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.slack.slack-wifi-status</string>
<key>ProgramArguments</key>
<array>
<string>/Users/matsu/Documents/slack-wifi-status_darwin_amd64/slack-wifi-status</string>
</array>
<key>StandardOutPath</key>
<string>/var/tmp/slack-wifi-status.log</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
% cat Library/LaunchAgents/slack-wifi-status.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.slack.slack-wifi-status</string> <key>ProgramArguments</key> <array> <string>/Users/matsu/Documents/slack-wifi-status_darwin_amd64/slack-wifi-status</string> </array> <key>StandardOutPath</key> <string>/var/tmp/slack-wifi-status.log</string> <key>RunAtLoad</key> <true/> </dict> </plist>
% cat Library/LaunchAgents/slack-wifi-status.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
  <key>Label</key>
  <string>com.slack.slack-wifi-status</string>
  <key>ProgramArguments</key>
  <array>
     <string>/Users/matsu/Documents/slack-wifi-status_darwin_amd64/slack-wifi-status</string>
  </array>
  <key>StandardOutPath</key>
  <string>/var/tmp/slack-wifi-status.log</string>
  <key>RunAtLoad</key>
  <true/>
 </dict>
</plist>

以下のコマンドで、デーモンとして登録します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
% cd Library/LaunchAgents
% launchctl load slack-wifi-status.plist
% launchctl start slack-wifi-status.plist
% cd Library/LaunchAgents % launchctl load slack-wifi-status.plist % launchctl start slack-wifi-status.plist
% cd Library/LaunchAgents
% launchctl load slack-wifi-status.plist
% launchctl start slack-wifi-status.plist

まとめ

  • 自分のためと言うより、一緒に働いている人に対して自分がどこにいるのかを自動的に表現できる仕組みです。

Comments

タイトルとURLをコピーしました