はじめに
Corporate Engineering という部署で社内営業組織が業務で使用するSalesforceの運用や社内システム開発を担当している瀧山です。
RevCommではコミュニケーションツールとしてSlack、ドキュメント管理ツールとしてNotionを使用しています。
今回は、Slackで投稿された有益なスレッドにリアクション(以下、「スタンプ」と記載)をつけた際にNotion連携するアプリケーションを社内営業組織向けに作成したので概要や仕組みなどを説明したいと思います。
本ブログ内で書かないこと
- 処理のコーディング
- 使用技術の詳細な説明
想定読者
- Slack Boltを使用したSlack App開発に興味がある方
- Slackに投稿されたスレッドをナレッジ化したいと思っている方
- Notion連携に興味がある方
開発に至る背景
依頼元の営業チームでは、不明点などがあった際にSlackやNotionにて関連のスレッドやページを検索するが情報量が多くて答えに行きつきにくく、検索に時間がかかってしまうという課題がありました。またドキュメント化を行う時間も中々取ることができなくて、以前誰かが経験したナレッジを共有することが上手くできないことから知識が属人化してしまうという課題もありました。
上記2つの課題から、テキストとして記録されているSlackのスレッドにスタンプをつけるだけで、Notionの指定のページに情報が集約される仕組みを作るのと定期的に集約された情報をチームで共有し合う時間を設けることにより知識の平準化を図ることを目的として、今回の開発に至りました。
開発したアプリケーションについて
使用した技術
- Slack Bolt
- ユーザーのSlack内のアクションをトリガーにしてバックエンドで処理を行うために使用
- Python
- Slack からのイベントをハンドリングして処理するバックエンドロジックを実装
- Google Cloud
- Cloud Run を用いてサーバーレスな環境でアプリケーションをホストするために使用
- Notion API
- Notionの指定のページに情報を登録するために使用
処理概要
全体の処理の内容は以下のシーケンスになります。
処理の流れだけだとイメージしづらいと思うので、キャプチャを元に補足したいと思います。
【シーケンス①〜②の処理】
連携したいSlackの投稿にスタンプを付与します。
【シーケンス③〜④の処理】
Notion に新規ページが作成されます。ページはViewとして管理されており、データテーブルとして一覧化しています。デフォルト作成時にはタイトルとタグ(情報を仕分ける際に使用)が適切に設定されていない状態になります。
補足なのですが、自動連携する情報として下記のような情報があります。
- 投稿者:スレッドを投稿したユーザー
- 推薦者:スタンプを付与したユーザー
- URL:スレッドのURL
- AI要約:Notion側で自動でページ情報の要約を生成してくれる
- 内容:スレッドのテキスト
【シーケンス⑤〜⑦の処理】
作成したSlack Appからスタンプを付与したユーザーに対してDMが届きます。 DMの内容には、「作成したNotionページのURL」、「作成したNotionページを更新するためのフォームボタン」があります。
「タイトルとタグを設定する」ボタンを押すと下のキャプチャの様なフォームが開きます。
適宜必要な情報を入力して送信を押下します。
【シーケンス⑧の処理】
フォームで入力した内容でタイトルとタグを更新します。
工夫したところ
営業チームの担当者から「スタンプを押してSlackからNotionへ連携する際に、タイトルとタグは手動で入力する必要があるがNotionページを開いてタイトルとタグを入力することは若干手間のため運用が回らない可能性がある。なんとかSlack内で完結できないか?」という要望をいただきました。
「Slack内で完結すること」と「なるべく手間となる作業がないこと」の二つを意識して仕組みを検討しました。
結果、スタンプを押したユーザーにDMを送信、フォームで必要事項の入力だけであれば運用が回りそうという回答をいただき実装しました。(シーケンス⑤〜⑧の内容)
詳細は割愛しますが、送信されたフォームイベントを受信するためにInteractive messagesを使用しました。
導入後
現在は営業チームだけでなく、Customer Successのチームでも活用されており、日々Slack内の投稿がナレッジとしてNotionへ集約されており、各チームでナレッジの共有時間を設けることで知識の平準化が行われています。
今後
アプリケーションをさらに進化させるために、Vertex AIを活用した自動化を検討しています。具体的には、自然言語処理モデルを用いてSlackの投稿内容からタイトルを自動生成し、分類モデルを用いて適切なタグを自動付与する機能の実装を目指しています。これにより、ユーザーはタイトルやタグを入力する手間が省け、より迅速かつ気軽にナレッジを集約できるようになります。また、要約モデルを活用することで、長文の投稿内容を簡潔に要約し、Notionページに表示することで、ユーザーがより効率的に情報を把握できるようにしていく予定です。