最近社内でにわかに Slack ブームが来ている。 今まで Google Hangouts を使っていたけど、Slack の方がなんだか便利そうじゃない? というぐらいの話。
Slack の方が便利そう、という根拠の一つが外部のものと連携できる機能にある。 じゃあ何かやってみよう。 AWS Lambda で、とりあえず Slack のスラッシュコマンドを追加してみる。 もちろん Python で。
やり方は基本的に 【新機能】AWS LambdaにSlack連携のBluePrintが登場。ChatOpsがより手軽に という記事を読んで slack-echo-command の代わりに slack-echo-command-python を選べば Python で書いたコマンドが追加できる。
何を書いたか、とかはおいておくことにして。
あとは、そこに書いていなかった(そして AWS Official Blog の New – Slack Integration Blueprints for AWS Lambda にも書いていなかった)細かい点をいくつか。
- 返すのは辞書
- text はひとまとめに来る
サンプルコードは文字列を返す形で書いてあるので、結果も文字列で返せばいいのかと思いきや、{"text": "foo bar"}
という辞書で返す方が良い。
正しくは Slack API 文書の
Slash Commands
に書いてある JSON ペイロードに相当するものということになるのだろうが、
ともかく、文字列を返してしまうと、前後に引用符が付いて改行も \n と表示されてしまうので注意。
text というのはスラッシュコマンド /spam の後ろの引数として使う部分。 サンプルコードで params['text'][0] とか書いていたので空白で分割して送ってくれたりするのかと思ったが、そんなことはなかった。 必要なら自分でパースすることになる。