すこし泥臭いカレンダーと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にて通知がくる
・自分が自分の為だけに登録しても通知は来ない。
・通知は重複して来ない
・手動入力のため多少の表記ゆれは吸収する
問題点の解決
・ユーザ分離の問題、表記ゆれの問題
泥臭く対象変換テーブルを手作業で作ってます。
新入社員が入ったら更新です。
例えば「中村元気」という人の場合、中村、元気、げんき、などの複数の対象を判別するようにしています。
・追加と更新が不明
登録日時と更新日時があるので時間にて判別するが、コンマ数秒ずれているため、しきい値を用いて新規と更新を判別する。
出来たのはこんな感じのものです。
表記ゆれありますがいい感じで吸収してますね。
結果としては、自分で入力していない自分の予定が来るのでいい感じです。