リバネスでCIOをやっています、geeorgeyです。
結論から言うと結構時間がかかりました。
開発自体はこちらの投稿あたりからスタートしているので、2ヶ月ほどかかったことがわかります。Vue.js / FlaskアプリにSlack for boltを組み込むには
どんなサービスを作ったのか
詳細はこちらにございます
Slackアシスタント -OYASUMI bot-
簡単に言うと、Googleカレンダーに休暇と入れておけば、その日のSlackメンションは非通知化されるというBotです。
SlackとGoogleWorkspaceを利用されている組織におすすめな機能となっています。
何を使ったか
色々と右往左往しながら開発しましたが
データソースは以下の2つです。API叩きまくりました。
- slack API
- Google API
Webサービスについては以下の構成になっています
- バックエンド:Flask(python)
- フロントエンド:Vue.js
デプロイ先はHerokuです。
処理ロジックは入っていませんが、同様な構成でWebサービスを作るためのテンプレートをこちらで開発中です。もしよろしければ使ってみてください。
pythonを使ってリアクティブなWebアプリを作りたい【開発編5】Slack boltの組み込み
難しかったこと
Google APIについて
こちらは別途記事化しようと思いますが、一般開放でサービス展開するためには、Google側とコミュニケーションを取る必要があります。利用の用途、Webの作成、プライバシーポリシーと利用規約の整備といった準備が必要です。
途中、動画でどんな処理をしているのかを説明する必要があったりと、物理的に時間を結構持っていかれます。
このために利用規約に加筆が必要になったりするのでなおさら時間がかかるのは間違いありません。
Google APIの利用自体は、python用のコードもサンプル提示されるのでかんたんに使えると思います。
Vue.jsからOAuthする部分にはめちゃくちゃハマりました。こちらに書いてあります。
Vue.js から Google OAuthでaccess_token,refresh_tokenを取得する
slack APIについて
こちらは、slack bolt for pythonという開発キットがSlackから提供されているので、それを使っています。
非常にかんたんに実装できるので、pythonでSlack Botを作る場合はこれ一択です。
slackにはたくさんのAPIが備わっていて、知っていればスマートな実装ができるというものばかりです。この辺については、そうはいっても知らないものは使えないのでSlackの @seratch さんには多大な協力を頂きました。ありがとうございます。
slack appについて
自社利用のみであれば、環境変数にbotの情報を入れて使えばよいのですが、配布アプリにする場合はそうは行きません。やり方についてはこの辺を参照してください。
続:Slack Bolt for Pythonを使ってのbot構築 アプリ配信に向けた対応
βテスターを募集しています
ということで、無事にリリースが出来ましたので、現在βテスターを募集しています。
業務の中心にSlackとGoogleカレンダーがあるチームは是非使ってみてください。
導入にあたっての資料はこちらに準備してあります。
Slack botは業務パフォーマンスに直結する
以下は、私の個人的な想いではあるのですが、Slackbotは組織のパフォーマンスに強く貢献すると考えています。
コミュニケーションのハブとして、かなりの時間がSlack上で流れている弊社では、色々な情報をとにかくSlackに集めています。
これらの情報から新しいアクションがスムーズに生むことが出来たり、より大きな動きへと加速させることが出来たらどうでしょう。本当に強い力となると思います。
今回はSlackユーザーをサポートするようなツールを作ってみましたが、より色々なサービスを展開できるような気がしてワクワクしています。まずはリバネスの社内でゴリゴリに使い倒せるようなものを、徐々に外側にリリースしていけると良いのですが。
引き続き、こちらの方向性での開発を進めていきたいと思っています。
人材募集中!
Slack/Salesforce/Heroku/PHP/Nuxt.jsなんかに興味のあるエンジニアを募集しています。
是非お声がけください。
こんな感じで開発してみませんか?https://note.com/geeorgey/n/ncbfc82c87cf8