PHPでiCal×Confluence×Chatwork連携

はじめに

こんにちは!冬も本番って感じで寒い今日この頃ですね。

皆様はお正月はゆっくり休めましたでしょうか??

 

さて今回は以下のような要件を社内のツールと連携して自動化しましたよっていうお話をしたいと思います。

要件

  • 毎日決まった時間に夕会の通知をChatworkでメンバに通知したい
  • 通知にはConfluence上の夕会用のページのURLを載せたい
  • 休日は通知を流したくない

Confluence連携

サムザップ社内では各種ドキュメントを記載するのにConfluenceを利用しています。

Confluenceでは、様々なRestAPIが提供されており、便利にページの情報が取得できるようになっています。

 

 

今回は特定のページ(例としてContentID:1234)配下のページ一覧を取得し、title(固定の名前+日付で構成される)から夕会用のページを特定し、該当ページのURIを取得しています。

※実際には、ContentIDを取得し、URIを構築しました。

 

以上で、目的の日々の夕会用ページのURIが取得出来ましたので、続いてこのURIをChatworkで通知します。

Chatwork連携

以前の「リリース管理をGoogle Apps Scriptとチャットワークの連携で通知する」ではGAS上でChatwork用のライブラリを利用して通知しましたが、今回は例によってChatworkが提供するRestAPIを直接叩いてみました。

curlで叩く場合は、こんな感じ。

ここまでで大体やりたいことは出来ました。

あとはjenkinsなり、cronなりを設定して、毎日決まった時間に通知するようにすれば、OKです!!そのはずです!!

 

が、今や各種通知がバンバン飛んでくる時代。休日の余計な通知は減らしたい…土日だけじゃなくて、祝日もちゃんと判定して、不要な通知はそもそも送りたくない!

iCalender連携

そこでGoogleさんが提供してくれているカレンダーから日本の祝日を取得して、平日のみ通知されるようにしました…ホスピタリティ大事、うんうん。

 

以下のようにすると、指定したCalenderIDのカレンダー情報がiCalenderフォーマットで返ってくる。今回は、CalenderIDには、日本の祝日である「japanese__ja@holiday.calendar.google.com」を指定。

BEGIN:VEVENT~END:VEVENT内にイベント情報(祝日カレンダーであれば祝日の)が記載されているので、PHPでキーワードを処理してあげて、祝日情報を取得します。

指定したカレンダーは祝日情報なので、上記に加え、土日も除外してあげることで、平日のみ目的の通知を飛ばすことが出来るようになります。

最後に

今回は社内向けのサーバとの連携のため、社内でサーバを用意し、PHPを使って連携をしましたが、こういったツールは今後GAS(GoogleAppsScript)やAWS Lambda、Google Cloud Functions等、お手軽にサーバレスで構築すると良さそうです。

今後もどんどん便利なものは取り入れ、共有し、社内の自動化を進めて、お仕事を楽にしていきたいですね。

 

あと全くもって余談ですが、最近ShareMouseというマウス&キーボードの共有ツールを知りました。仕事上WindowsとMacを両方使っているのですが、キーボードを使い分けるのが面倒だったのですが、このツールを使ってからはほぼMacのキーボードのみで操作出来るので大変便利です。

 

参考文献

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