💬

Slackでチャットbotをつくる方法

2023/10/04に公開

Slackでチャットbot

Discordを使うことが多かったので、Discordでチャットアプリをつくっていたのですが、Slackを使う機会が最近増えてきたので、Slackでチャットbotを作ってみました。

Slackは色々な使い方ができる分、設定が多くて結構ハマったので、やり方をメモしておきます。個人的メモなので、自分の使い方に特化していることはご承知おきください。

作ったSlackのチャットボットは以下のGitHubリポジトリに格納しました。

https://github.com/karaage0703/ai-karaage-sensei-bot/tree/main/chat_bot

なお、botとインタラクション不要で、単純にSlackの特定のチャンネルにメッセージをおくるだけなら、Webhookを使うのが簡単なので、そちらをオススメします。

OpenAIの初期登録

Webで調べて実施してください(さらなる手抜き)。ChatGPT以外の大規模言語モデル(LLM)を使いたい場合は登録不要です(というかこの記事が不要でしょう)。

Open AI Keyを取得しましょう。

Slackの設定

Slackの初期登録やSlackアプリの導入の説明は割愛します。よしなにしてください(いきなりの手抜き)。ある程度Slackは使ったことある人前提となります。

Slackを登録したら、以下のサイトでSlackのアプリをつくれます。「Create New App」からSlackアプリを作りましょう。

https://api.slack.com/apps/

botを作るSlackの設定も色々あるのですが、今回は比較的簡単かつ高セキュリティなソケットモードを使います。ngrokでトンネル掘ったりしなくて使えて便利です。

上記のソケットモードも含めて、Slackのアプリは設定項目が多くて憤死しそうになりますが、マニフェストファイルという設定ファイルがあります。今回はこれを読み込んで設定します。

「Features → App Manifest」でJSONやYAMLファイルで設定をテキスト形式で扱えます。

Slackでうまく動かないとき、設定が間違っているのか、アプリが間違っているのか、はたまた両方間違っているのかを切り分けるために重要ですね。今回使ったSlackのマニフェストは以下です。

https://github.com/karaage0703/ai-karaage-sensei-bot/blob/main/chat_bot/config/slack_manifest.yml

Slackアプリの「Features → App Manifest」のところで、マニフェストをコピペしましょう。

マニフェストをコピーした後は、Basic Informationの「Generate Token and Scopes」をクリックしてから、以下のとおりToken Nameを入力して「connections:write」を設定してからGenerateをクリックして、APP LevelのTokenを取得します。

続けて、OAuth & Permissionsで「Install to Workspace」で動かしたいワークスペースにBotをインストールしてから「Bot User OAuth Token」を取得します。

BotのIDはSlackアプリのチャンネルでbotを招待して、botのプロフィールから「メンバーIDをコピー」を実施しましょう。

最後にsetting.shに今まで得た必要な情報を記載しましょう。

Botアプリ

ソフトとしては、PythonとBOLTというSlackアプリに対応したフレームワークを使用します。

以下のREADMEの通り設定してください。

https://github.com/karaage0703/ai-karaage-sensei-bot/blob/main/chat_bot/README.md

Dockerを準備していますので、MacでもLinuxでも動きます。家のPCでも、AWSでも簡単に動かせます。Devcontainerも準備しているので、VS Codeでの開発もラクラクです。

AWSの構築に関しては、この本がまとまっていて非常に分かりやすかったです。

作りながら学ぶ Webシステムの教科書

まとめ

チャットボット、ChatGPTのおかげで、ちょっとしたものはサクッとできるのがよいですね。SlackとLLMは非常に相性良いです。色々実験してみたいなと思っています。

Slackも最初は複雑ですが、一回ベースを作り上げて開通してしまえば、色々できること増えていくのかな?と思っています。

参考リンク

https://note.com/yamayafumiteru/n/nf7aaadfa3555

https://slack.dev/bolt-python/ja-jp/tutorial/getting-started

https://zenn.dev/mokomoka/articles/6d281d27aa344e

https://github.com/seratch/ChatGPT-in-Slack

https://zenn.dev/yukiueda/articles/ef0f085f2bef8e

https://qiita.com/tomoasleep/items/030e42b5e3853c609cf9

https://zenn.dev/enterrocken/articles/d4f04e842eba2f

https://zenn.dev/jj/articles/sql-generate-with-openai

https://qiita.com/Cartelet/items/f64787cd0ae57c0a6830

https://qiita.com/sifue/items/275cf6aaee29e16aa2eb

関連記事

https://zenn.dev/karaage0703/articles/c8baa66c40f9b7

https://zenn.dev/karaage0703/articles/926f18ba04e093

Discussion