この記事は、モバイルファクトリー Advent Calendar 2015 九日目担当の@hiyoko9191です。
はじめに
2015年から、業務もプライベートもSlackを使い始めました。botとか情報収集とかでSlack APIを結構触ったので、途中で得た知見を共有したいと思います。
Slackアプリで困ったこと
Slackアプリのハイライトの仕組み
- ハイライトワードの設定はコンマで切り離します。(知らずにスペースや別のシンボルを使う人はたまにいる)
- ハイライトワードは大文字と小文字を区別しないです。
- ハイライトしたいワードは基本分離符で分離してください。
- (漢字・ひらかな・カタカナ)で挟む英語は分離符で分離しなくても大丈夫。たとえ
「この件は@hogeさんにお願いします」
はちゃんとhogeさんのときに届きます。- 句点、はてなの後ろにうっかり直接
@hoge
でハイライトさせたい場合はたまにあると思うが、ちゃんと分離符で分離しないとダメです。たとえ「この件どうしよう?@hoge」
はハイライトしないです。 - botの発言はアプリ内で見るときはハイライトするけど、実際は通知を飛ばないです。(bot書くときの要注意点)
- 句点、はてなの後ろにうっかり直接
Slackアプリのメンション機能は強いけど、ハイライトメッセージの拾いは若干足りない感じで自分ルールで通知飛ばしたいです。
- 向うのミスでメンションが届いてない場合も気づきたいです。(分離符を使ってなかったとか、約束してない単語を使ったとか)
- 誰かが酒やラーメンや気になる技術のことを話したらすぐ反応したいです。(弊社の先着お土産情報も早めに気づきたい)
- botで流してるalert情報や、タスク情報とか、大事なものが多いけど、人目で確認するのは反応遅いしそしてよく漏れるし、いちいち
@group
とか使ったら多くの人の手を止めるので、プログラムでうまく拾いたいです。
他にSlackアプリに不満なこと
- editedやdeletedの内容が気になります。
- Slackの製作者の意図に反してるかもしれないです。
- でも気になるものは気になります。
- チームやチャンネルが増えると、最新のメッセージを全部チェックするのはすごい手作業になっています。
- まとめにどこかに流したいです。
- 黒い画面で流して、コードを書きながら見たいです。
Slackに関して書いたもの
様々なbot(遊び系やリマインド系とか)
- bot書くときの注意事項についてちょっと話します。
- 前にも話した通りで、botの発言は公式の
@group
や@username
以外はアプリ内で見るときはハイライトしてるけど、実際は通知飛ばないです。どうしても通知を飛ばしたい場合は:- 1、https://api.slack.com/methods/chat.postMessage の
as_user
をtrue
にして、発言するのはbotじゃなくて本人になると、普通にハイライトします。 - 2、公式の
@group
や@username
を使って確実にハイライトさせます。
- 1、https://api.slack.com/methods/chat.postMessage の
- 公式の
@group
や@username
を使うときは<@group>
と<@U11223444>
を使います。- アプリで見るときリンクがついてる
@username
、裏のコードは<@U11223344>
みたいな文字列です。 - 一回ミスして、APIのドキュメントを読んだら分かることです。
- チームメンバーのIDは https://api.slack.com/methods/users.list で分かります。
- 便利に使えるように、ユーザーネームとIDの参照はローカルに保存して、毎日更新する仕組みになっています。
- アプリで見るときリンクがついてる
- ファイルのアップロードとsnippetはbotでできないです。本人でアップロードすることになります。
複数チームの全チャンネルのメッセージをまとめて流します。
- 実現についてはブログを書きました。
- リアルタイムのメッセージをもらうAPI: https://api.slack.com/rtm
- リアルタイムでもらったもの(イベント)の解析: https://api.slack.com/events
- リアルタイムのAPIは割と分かりやすくて、簡単に書けたけど、もらったイベントの解析は大変なことになりました。
- 解析に関してはSlackParserを書きました。解析・表示できるように、必要なものだけパーサーします。基本自分用です。
- 最初はすべての黒い画面で流してみたが、結構見づらいです。流してきたものも思ったよりほとんど見てなかったので、結局アプリのほうで見ています。
- 次はチャンネルを整理して、業務と強く関わったチャンネルの内容だけ流すことになって、そして流してきたものを必ず全部確認します。
- そこそこ使えます。
個人用slackで情報をまとめ
- 特定の内容に関する発言をまとめて個人用Slackに流します。
- botはアイコンとネームが指定できるので、あらかじめユーザーのネームとアイコンのurlをローカルに保存したら、それを使ってもとの発言者を真似することはできます。本物と似すぎてたまに返事したくなります。
- 様々なところからラーメン情報やランチ会情報や勉強会情報などを拾って、個人用slackに流しています。
- 情強感
- おみやげ情報最高
- 天気、毎日のスケジュール、メール通知や自分用のツールとか、個人用Slackがだんだん充実してきました。
まとめ
- Slack APIのドキュメントは充実してて分かりやすいです。
- botを書くのが楽しいです。
- 確実に自分の効率を高めるものを書くのも楽しいです。
- 明日はまた@rymizukiさんです。よろしくお願いします。