すこし泥臭いカレンダーとSlackbotの話

キャッチアップではスケジュール共有にGoogle Calendarを利用しています。
5年くらい利用していて、大体入力フォーマットも決まってきました。
「用件なになに@場所(担当者A・担当者B)」のような形です。

現在ではG Suiteを導入していますが、以前は個人のgmailアカウントを利用していたため、スケジュール共有の連絡やリマインドはカレンダーにユーザを登録する必要があり、手間がかかるため誰も使っていませんでした。

またキャッチアップでは「カレンダーに予定が入れられていなければその人の予定をカレンダーにて押さえることが出来る」というルールになっていました。

朝礼等で毎日カレンダーを確認するのですが、それでも他人が入れたスケジュールを見落とすことが発生していました。
その解決策で、ある程度の特定フォーマットで入れたものはSlackで通知が来るようなbotを作成したのですよ。

基盤

・Slack
・Google カレンダー
・VPS/Linux (PHP)

仕組み

[VPS/Linux] -- 監視 --> [Google カレンダー]
  |
  検知
  |
  通知 --> [Slack]

問題点

・Google カレンダーに登録するのはGoogleユーザ、SlackはSlackのユーザー
・Google カレンダーの担当者名称が手動入力のため表記ゆれがある
・PHPを用いてGoogle_Client APIでのアクセスはカレンダーに対して新規に追加したのか更新したのか不明

自分で決めた最低要求

・カレンダーに登録されたら対象者のみにSlackにて通知がくる
・カレンダーの予定が変更されたら対象者のみにSlackにて通知がくる
・自分が自分の為だけに登録しても通知は来ない。
・通知は重複して来ない
・手動入力のため多少の表記ゆれは吸収する

問題点の解決

・ユーザ分離の問題、表記ゆれの問題
泥臭く対象変換テーブルを手作業で作ってます。
新入社員が入ったら更新です。
例えば「中村元気」という人の場合、中村、元気、げんき、などの複数の対象を判別するようにしています。

・追加と更新が不明
登録日時と更新日時があるので時間にて判別するが、コンマ数秒ずれているため、しきい値を用いて新規と更新を判別する。

 

出来たのはこんな感じのものです。
表記ゆれありますがいい感じで吸収してますね。

結果としては、自分で入力していない自分の予定が来るのでいい感じです。

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

NEW POSTS

RELATED