こんにちは、trebyです。
この記事はChatOps Advent Calendar 2015の5日目です。昨日はnekobatoさんによる自分だけのためのSlack Teamでした。Slackやhubot、良いですよね。私も活用しています。
個人的には昨年後半あたりからbot作りの面白さに目覚めまして、仕事プライベート問わず何か時間を見つけては作ってきました。__botもChatOpsに含まれるはず!__というわけで今日は、うだうだと自分の今年のbot活動、特に今回はビジネス向けのものを振り返ってみようと思います。
なお、ここでの主なチャットツールはSlackを想定していますが、hubotを使って実装しているものであれば、adapterを変更すれば応用がきくのではないでしょうか。
主にビジネス向けに作ったbot達
KPI bot
こちらの記事を拝見した時に「これは良い!」と取り入れたものです。
使われている方はご存知の通り、Slackでは発言を一方的に流すだけであれば、Incoming Webhookの仕組みを使ってサクッと実現できます。
その実、指定されたエンドポイントにJSONをPOSTするだけでいけるので、共通部分を書いておいて(RailsのActiveJobを例として挙げます)
class NotifySlackJob < ActiveJob::Base
queue_as :slack_notification
def perform(text, data: {}, webhook_url: nil)
webhook_url ||= SLACK_WEBHOOK_URL # webhook_urlを入れる
return if webhook_url.nil?
payload = { text: text }.merge(data)
res = Net::HTTP.post_form(URI.parse(webhook_url), {'payload' => payload.to_json})
# - response codeを見て'200'以外だった場合の処理を書く -
end
end
集計のバッチ処理を走らせる時に以下のコードを差し込んでおけば簡単にできちゃいます。
text = '流したい発言' # ヒアドキュメントなどを使っていい感じに作る
NotifySlackJob.perform_later(text)
コードを差し込めばKPIに限らず何でも流せるので、私のチームでは特定の情報がサービスに入ってきた時にもSlackに流すようにしています。
お掃除当番管理bot
小さいチームあるあるかもしれませんが、私のチームには掃除当番なる概念が存在しています。会社はいわゆるSOHOなので、オフィスのことは基本的に自分たちでやっています。
オフィスの掃除、主にはゴミ捨てもその内の一つでもともとはアナログで運用(「掃除当番札」というものがありました(!))していたのですが、全社全職種横断で当番を回しているのもあってか、当番が有耶無耶になることが少なくありませんでした。
そこで登場したのがこのbotです。今まで人で管理していた掃除当番をbotが管理してくれます。具体的には指定した日時にリマインドを行ってくれる他、週末には自動で掃除当番をローテーションしてくれます。
また、人が増えることも考慮して掃除当番対象のメンバーをSlack上で追加できるようにしています。
実装はhubotを使っています。Gistにはなりますが、コードは次の通りです。開発過程で、<@user_id>
のようにしないとSlack側でメンションを飛ばせないことを知りました(@ninomiya
とするだけじゃただのテキストになっちゃうのです)
掃除当番を管理するのにどれくらい需要があるのかはわかりませんが、例えばレビュー当番とかに応用がききそうですね。
あ、ちなみに隠し機能として会社の住所とか必要になった時に聞くと教えてくれますw
Twitter watch bot
hubotを使ってソーシャルメディアの情報を拾いたいよね、というところで昨日も紹介されていたものをまさにそのまま使っています。
まあ、これはbotを作らずともNotifyのようなサービスを使っても良いのかもしれませんね。あと割と定型なので先ほどのリポジトリ、slackinみたいにHeroku buttonつけたいですね。
まとめ
以上、今年主にビジネス向けに作ってみたbotを紹介しました。実際稼働させてみて思うのは、KPIにしろソーシャル情報にしろ、ある情報から話が広がっていくこともあるなということです。botが発言するルームがそのままコミュニケーションの場になるのが良いな、と感じています。
皆さんのオフィスではどんなbotが稼働していますでしょうか?是非教えてください!
そして明日は……
ara_ta3さんです。よろしくお願いします!