Help us understand the problem. What is going on with this article?

Slackと連携させたHubotに毎朝今日の予定をお知らせしてもらう

More than 3 years have passed since last update.

現在研究室内でSlackを使用しており、せっかくなのでHubotを導入して遊んでいる。
また、研究室内で予定の共有のため、Googleカレンダーで研究室カレンダーを作成し、運用している。

しかしながら、Googleカレンダーに複数のカレンダーを表示させると見辛かったり、そもそもGoogleカレンダーを確認しない等の理由から「今日ミーティングあったっけ?」など予定を把握できていないメンバーが発生する。

そこでHubotに毎朝予定を教えてもらうようにした。

使用イメージ

  • 画像の用に毎朝9:00にHubot(miku)が今日の予定を教えてくれる
  • 時間設定があるとき
    • HH:MM:SSにXXX
  • ないとき
    • XXX
  • これらを\n区切りでつなげた文字列を発言させている スクリーンショット 2015-05-28 20.16.26.png

hubot

導入については

などの記事を参考にした。

また、foreverを使用して常駐させている。
参考: http://qiita.com/n_morioka/items/837967c0e2711198bd74

Google Calendar API

公式: https://console.developers.google.com/flows/enableapi?apiid=calendar

認証情報の取得

  • https://console.developers.google.com/start/api?id=calendar より、アプリケーションを登録する
  • 「新しいクライアントIDを作成」
    • インストールされてるアプリケーションを選択 → サービス名を入力 → その他を選択
    • 作成後JSONをダウンロードする

ダウンロードしたJSONはこんな感じ

{"installed":{
    "auth_uri":"https://accounts.google.com/o/oauth2/auth",
    "client_secret":"YOUR CLIENT SECRET",
    "token_uri":"https://accounts.google.com/o/oauth2/token",
    "client_email":"",
    "redirect_uris":["urn:ietf:wg:oauth:2.0:oob",
    "oob"],
    "client_x509_cert_url":"",
    "client_id":"YOUR CLIENT ID",
    "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"}}

パッケージのインストール

$ npm install googleapis --save
$ npm install google-auth-library --save
  • ついでに時間指定発言のためにcron、タイムゾーン指定のためにtimeもいれます
$ npm install cron time --save

CoffeeScript

ソース: https://gist.github.com/tk3fftk/42966c00eeeabf164e4e

  • したこと
    • Google公式のNode.js用サンプルをCoffeeScriptにした(それ以外は認証まわりほぼそのまま)。
    • JSONファイルから読み込んでいた認証情報をハードコードした(.coffeeだけで完結させたかったため)。
    • 既存関数の引数にHubot発言用の変数を追加して、カレンダーからの予定取得とともに発言させるようにした。
    • moment.jsを使用するようにしました
  • 初回実行時のみ、使いたいカレンダーを持っているGoogleアカウントでログインしてブラウザ上で認証し、トークンを生成する必要があります。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした