Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?

ziho-bot

ziho-botはhubot-slack連携のSNS機能を有したライフログアプリです。

ziho-botの概要イメージ

ziho-botは1時間おきに、その時間に何をしていたか(時報)を投稿するよう促してきます。 投稿した時報は、ziho-bot内にタグ付きで保存され、いつでも過去の時報を確認することができます。 また、ziho-botを使用しているユーザのうち、気になるユーザをフォローする事で、他人の時報をリアルタイムに受け取ることもできます。

ziho-botと上手につきあうことで、1日の終わりに自分が何を考えて、どう動いていたかを振り返ることができるようになります。 また、1時間ごとに時報を投稿しなくてはならないという制限がつくので、作業をより効率的に行おうという気持ちになれます。

更に自分が気になるユーザをフォローすることで、フォローしたユーザの1日の活動内容を追うことができるため、 メンバー間の開発ラインの情報共有も効率的に行えます。 また、有用な時報を投稿する人をフォローしておくことで、自然と新しい知識を得たりすることもできます。

ziho-botのセットアップ

slack-hubotの連携

slackのintegrationでhubotを追加します。 HUBOT_SLACK_TOKENを発行し、ziho-botに適当に名前をつけてあげます。

ziho-bot専用チャンネルの作成

ziho-botのチャンネルはprivateでもpublicでも可能ですのでいずれかのチャンネルを作成し、 先ほど登録したziho-botをチャンネルに招待します。

ziho-botの起動

このレポジトリをcloneしてください。 bin/hubotにて以下の環境変数を設定します。

変数 説明
HUBOT_SLACK_TOKEN 先ほど発行したトークン
ZIHO_MAIL_SENDER ziho-botの時報をメール送信APIのURL ※1
AUTO_LEAVE_HOUR 会社の退社時間
ZIHO_DB_DIR ziho-botのデータストア(sqlite)のDB格納先

設定後はbin/hubotよりziho-botを実行してください。

./bin/hubot

起動できているか確認するために、ziho-botを招待した部屋でhelpコマンドを実行してみてください。 ziho-botのhelpが表示されれば、セットアップが問題なく終わっています。

ziho-bot-help

補足

メール送信API

メール送信サーバをたててメール送信APIをたてるのは手間なので、 下記を参考にherokuのsendgridを利用するのが楽です。

https://github.com/hakamata-rui/ziho-bot-mailer

なお、ziho-botからは下記パラメータのHTTPのPOSTが行われます。

変数 説明
sendFrom email address.
sendTo email address comma separeted.
subject mail title.
content mail content. (HTML)

hubot-slack間のバグ対応

hubot-slack間で時々接続が切れてしまい、以降slackへの再接続が行われないというバグがあります。 https://github.com/github/hubot/issues/1013

このワークアラウンドとして、hubot-slack間で接続が切れた場合に、hubotを再起動出来るよう、 bin/ziho-bot-hc.shをcron等で定期実行しておく事をおすすめします。

使い方

以下にziho-botの主な使い方を紹介します。 以下で紹介していないコマンドも多数あるので、ziho-botのhelpコマンドにて確認してください。 また、help postのように、helpの後にコマンド名をつけることで、各コマンドのマニュアルを閲覧できます。

ziho-bot-help2

専用チャンネルの作成

slackのチャンネルを作成します。 CHANNELSの右にある+ボタンからPublic、Privateいずれかで作成可能です。 Channelの名前は適当に決めてください。 ziho-botを使うために、ziho-botをこのチャンネルに招待してください。

ziho-bot-new-slack-room

ziho-botへの参加

先ほど作成したチャンネルでsignupと発言してください。 signupと発言したユーザとチャンネルをziho-botに登録することができます。

ziho-botを辞めたい場合やchannelを別の場所に変えたい場合は、 withdrawと発言することでチャンネルとユーザの情報を消去できます。 ただし、ziho-botをやめた場合、過去の時報は消えません。

PC環境設定(Macの場合)

Macではテキストエディットで半角ハイフン二つを、ダッシュに変換する機能があるのでこれを解除します。 [システム環境設定]→[キーボード]→[ユーザ辞書]より、 「スマート引用符とスマートダッシュを使用」のチェックボックスを外してください。

時報の投稿

2通りの方法でziho-botに時報をを保存することができます。

方法1 時報の投稿(簡易版)

`tag1`,`tag2`,... [message] 

方法2 時間指定できる時報の投稿方法

post [--yesterday] [--hour|-h 1~23] [--tag|-t tag1,tag2,...] (改行) [message]

時間指定をせずに現時刻の時報を投稿する場合、は方法1の簡易形式で投稿できます。

ziho-bot-post1

毎時50分に時報のリマインドがあるので、50分から59分59秒の間に間に時報を投稿することが望ましいのですが、 数分遅れ時刻が変わってしまい、過去の時間に遡って投稿したい場合はpostを使います。

ziho-bot-post2

タグは後々情報検索時に使用するため、わかりやすいタグをつけるように心がけましょう。 1時間に一回投稿する時報のタグは「ziho」とするのが一般的です。 また、showtagより過去の投稿タグ一覧が見ることができます。

ziho-bot-showtag

時報リマインドの開始

attendと発言してください。ziho-botに対して出社した事を伝える事で、毎時50分に時報のリマインドを開始します。

ziho-bot-attend

また、attendと発言していなくとも、5時から13時の間に時報を投稿した場合は出社したとみなされます。

時報リマインドの終了

leaveと発言してください。ziho-botに対して退社した事を伝える事で、時報のリマインドを停止します。 ただし、就業時間後に時報を投稿しない場合は退社したとみなされます。

時報の確認

confirmのコマンドより、過去のziho-botへの投稿を確認できます。 ziho-bot-confirm

自分の当日分の投稿内容を確認したい場合はオプションを指定せずにconfirmとだけ発言します。 投稿の絞り込み条件を変更したい場合は、期間、タグ、メンバー等の指定をします。

confirm [--showid|-s] [--start (yyyy-)mm-dd] [--end (yyyy-)mm-dd] [--date|-d (yyyy-)mm-dd] [--yesterday] [--name|-n (@)name] [--tag|-t tag,tag,...] [--message|-m message]
option 説明
--showid or -s 投稿IDの確認を行います。投稿のidは投稿の更新(update)や削除(remove)で使用します。
--date or -d (yyyy)-mm-dd 確認したい日付を指定します。指定しない場合、当日を表示対象にします。
--tag or -t tag1,tag2,... 検索対象のタグを指定します。タグは複数指定した場合はOR検索になります。
--message or -m message 検索ワードを指定します。
--name or -n (@)name 検索対象のユーザを指定します。@の有無は検索結果に影響しません。未指定の場合はコマンド実行者になります。全ユーザを検索対象にしたい場合は@allを指定します。
--start (yyyy)-mm-dd 検索対象の期間の開始日を指定します。
--end 検索対象の期間の終了日を指定します。
--yesterday (yyyy)-mm-dd 検索対象を昨日で指定します。なお、上記検索条件はAND検索になります。

時報の編集、削除

投稿した内容の追加と削除はslackのUI上で操作可能です。

ziho-bot-update

また、confirm-sオプションで確認した投稿IDを用いてupdateremoveからも同様に操作可能です。

他人の時報のフォロー

relationより、登録済みのメンバーをフォローする事ができます。 登録済みメンバーはmember -lで確認できます。

relation [--remove|-r @name] [--add|-a @name] [--list|-l]

メンバーをフォローすることでメンバーの時報をリアルタイムに確認できるようになります。

ziho-bot-relation

なお、過去の投稿はフォローしていなくてもconfirmより確認できます。

option 説明
--remove or -r フォロー中のユーザを削除できます。
--add or -a フォローするユーザを追加できます。
--list or -l フォロー中のユーザおよび、フォローされているユーザの一覧を確認できます。

時報のメール送信

mailconfigコマンドを使って自分専用のメールテンプレートを作成します。 メールテンプレートは以下のフォーマットで作ります。

mailconfig [--sendto host@mail.to] [--sendfrom host@mail.from] (改行) subject (改行) template

テンプレートの中に時報のタグを埋め込む事が可能です。 mailコマンドを実行した際に、メール内で指定したtagを時報から抽出してメール本文にバインドします。 メールのテンプレートを登録する場合、1行目はコマンド名および、送受信先を記入します。 2行目にはメールタイトルを記入します。 なお、このタイトルにdateのタグを記入することで、YYYY-MM-DDのフォーマットの当日の日付がdateの箇所にバインドされます。 3行目移行はメールのテンプレートになります。

(使用例) ziho-taro@ziho.co.jpからnippo@ziho.co.jpに対して日報を送るためのテンプレートを作成する。

mailconfig --sendfrom ziho_taro@ziho.co.jp --sendto nippo@ziho.co.jp
【日報】`date` 時報太郎
template: 皆様
お疲れ様です。
本日の日報を送ります。

<b>本日の予定</b>
`task`

<b>ひとこと</b>
`report`

<b>本日の時報</b>
`ziho`

-- 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
エンジニア 時報 太郎
--------------------------------------------------------------------
TEL:080-xxxx-xxxx (私用)
MAIL:ziho_taro@ziho.co.jp
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

分報との併用

分報を既にやっている場合、ziho-botと連携すると分報がより便利に使えます。 ziho-botを通して過去の分報の投稿の確認や、メール送信機能を使用できるようになります。 ziho-botと連携する場合は分報の窓にziho-botを招待してsignupします。 member --silentを実行する事でそのチャンネルに対して、ziho-botのemoji reaction以外の発言が基本的に禁止されます。

silentモードではziho-botのコマンド結果を見る事が出来ないため、 コマンド実行用のチャンネルを別途作成し、ziho-botを招待してそこでもsignupして、そのチャンネル内でziho-botのコマンドを実行してください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment