googleカレンダー(iCal)の内容を読み取ってSlackのユーザーステータスを更新する

  • このエントリーをはてなブックマークに追加

Slackでユーザーのステータスを更新できる様になりました。

これを知ったときにカレンダーの予定を読み取って自動的にステータス更新できたら自分の予定を自分に声をかけようとしている人に対して知らせることができるなと思って、APIでも更新できることを知ったので雑に社内で使っている自分のGoogleカレンダーの予定をiCal経由で読み取ってSlackのステータスを更新してみるのを試してみました。

もしこれができると、自分が社内の用事で離席をしていたり外出しているときなどにSlackで何らか声をかけていただいても反応できないときに状況を把握してもらえたり、外部から御電話いただいたときも代表電話を受け付けていただいた方がわざわざ自分のカレンダーを開いて予定を確認していただくといった手間も多少は緩和できそうだな。と。

ということで、こういうときの実験台には当方作成のevacで実験をします。入力をiCal、出力をPOSTリクエスト指定すればよさそう。

なお、出力で指定しているtokenはこのページで取得できます。

以下の様なYAMLを用意して、evacで実行。

in:
ical:
url: https://calendar.google.com/calendar/ical/hideack〜/basic.ics
within: 1
out:
httpPost:
url: "https://slack.com/api/users.profile.set"
body:
form:
token:profile: '{"status_emoji":":clock2:", "status_text":"__word__"}'

これを定期的に実行すると実行時から1時間以内の予定があればSlackのステータスが更新されます。

例えば、下は4月16日 12:00〜 「slackステータス更新試してみるテスト」という予定があった場合。

ステータスを示すアイコンにマウスカーソルを合わせると

f:id:hideack:20170416113246p:plain

といった感じで表示されますし、DMを送ろうとすれば入力欄に

f:id:hideack:20170416113310p:plain

と表示される様になるので当方がいま外出しているかだったり、ミーティング中なのかだったりはお知らせできそうな感じがします。

Slackはこういった形で基本的なコミュニケーションツールとしての基礎の上にプログラマブルに拡張できたりしていく仕掛けを備わっているのが本当に素敵だなぁ。といつも思う。

参考

qiita.com

(Visited 193 times, 1 visits today)
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*