はじめに
こんにちは。GMOアドパートナーズのs-tです二回目の投稿になる今回は内製の社内システムでSlack APIを使ったDM(ダイレクトメッセージ)送信機能をリリースしたので、紹介していきます
背景
GMOアドパートナーズ 連結では昨年より社内のコミュニケーションツールとしてSlackを導入しております昨年は初期導入のフェーズで基本的な使い方がメインでしたが、今年から徐々に活用していくフェーズに入っています
どんなことをやったか
Slackが提供しているAPIを活用して、大きく2つの機能を作りました。- SlackのユーザーID一覧の作成(日次バッチ)
- 使ったAPI→conversations.members、users.info
- 通知機能の作成(随時)
SlackのユーザーID一覧の作成
それぞれの処理を詳細に見ていきたいと思います。まずはSlackユーザーIDの一覧化です
- 弊社では全員が参加するチャンネルがあるため、そのチャンネルIDを conversations.members に渡してメンバーIDを一覧化します。
- そして一覧化したメンバーIDを users.info に渡してメールアドレスを取得します。その結果としてメンバーIDとメールアドレスの一覧化ができました
通知機能の作成
続いてはアプリとSlackユーザーの1対1でのDM通知機能です1対1のDM以外にもチャンネルや複数人DMなどメッセージの送り先は選択可能です
直接 chat.postMessage にユーザIDを渡してメッセージを送ることもできますが、APIの仕様を見ると非推奨のようなので、DM用のチャンネルIDを特定してからメッセージを送る作りにしました
- conversations.openにSlackのユーザIDを渡すことでDMのチャンネルIDが取得できま
- ※一度もDMしていない場合は新規でチャンネルIDが作成され、そのIDが戻されます
- chat.postMessageに1で取得したチャンネルIDを渡すことで該当のユーザーにメッセージを送れます
最後に
今回の開発では1対1でのDM送付という機能でしたが、Slackへの通知やSlackからメッセージを送信することをトリガーとした処理などSlackで実現可能なことはまだまだあるので開発の機会があればまた紹介させていただきます ここまで読んでいただきありがとうございましたGMOアドパートナーズで社内システムの開発をしています。
LT大会の運営もやってます。