「SlackからDifyのワークフロー叩きたいんだけど、APIとか面倒くさいんだよね。botでサクッと動かせない?」って思ったことない? 大丈夫、Claude Codeに頼めば、そんなわがままも秒速で解決するよ。
とりあえずコピペで動かしたい人、これ投げとけばOK!
一番雑な投げ方
Slackのスラッシュコマンド `/dify` でDifyのワークフローAPIを呼び出して、結果をSlackに返すPythonのボットを作って。
開発用にngrokを使って、本番デプロイまで見越した構造にして。
必要な環境変数と設定ファイルを教えて。
これだけで、SlackとDifyを連携させるボットの基礎コードと使い方まで一発で作ってくれるんだ。びっくりだろ?
もうちょい具体的に投げるパターン
もうちょっとだけ、自分の環境に合わせた指示を出すなら、こんな感じで投げてみて。
環境変数で管理してほしい時
SlackのトークンとかDifyのAPIキーはコードに直書きしたくないよね。.env ファイルで管理させたいなら、こう言うんだ。
Slackのスラッシュコマンド `/dify` でDifyのワークフローAPIを呼び出して、結果をSlackに返すPythonのボットを作って。
SlackのBot User OAuth Token、Signing Secret、DifyのAPI Key、Base URLは環境変数で管理できるようにして。
ngrokを使った開発方法と、本番デプロイを見据えたDockerfileも作ってほしい。
これで、環境変数をちゃんと使ってくれるコードが出てくるよ。Dockerfileも作ってくれるから、デプロイも捗る。
特定のワークフロー名と入出力で固定したい時
「いつもこのワークフロー使うから、名前決め打ちで」とか、「入力変数と出力変数はこれを使ってね」って明確にしたいなら、具体的な情報を渡してあげるのがベスト。
Slackのスラッシュコマンド `/dify` でDifyのワークフローAPIを呼び出して、結果をSlackに返すPythonのボットを作って。
DifyのワークフローIDは `my-super-workflow`、入力変数は `query`、出力変数は `text` を使ってね。
SlackのBot User OAuth Token、Signing Secret、DifyのAPI Key、Base URLは環境変数で管理できるようにして。
ngrokを使ったローカル開発と、デプロイ用のDockerfileまで全部頼む。
ここまで具体的に指定すると、より自分のユースケースに合ったコードが出てくるから、修正の手間がほとんどなくなるはずだよ。
実践例 / 実録
うちのチームでは、これで実際にSlackから社内FAQのDifyワークフローを叩けるようにしてるんだ。
まず、Claude Codeが生成してくれたPythonコード(例えば app.py)と requirements.txt、.env.example を受け取るよね。
- Slack Appの設定:
- SlackのAPIサイトで新しいアプリを作るんだ。「
/dify」っていうスラッシュコマンドを追加して、Request URLはhttps://YOUR-NGROK-URL.ngrok-free.app/slack/eventsに設定するよ。 chat:writeとcommandsのBot Token Scopesも忘れずにね。OAuth & PermissionsのページでBot User OAuth Token (xoxb-...) とBasic InformationページのSigning Secret (xx...) を控えておくんだ。
- SlackのAPIサイトで新しいアプリを作るんだ。「
- Dify API Keyの取得:
- Difyのワークフローダッシュボードに行って、APIアクセスのページからAPI Key (
app-...) をコピーするだけ。
- Difyのワークフローダッシュボードに行って、APIアクセスのページからAPI Key (
- ローカルでの実行:
- Claude Codeが作ってくれた
.env.exampleを.envにリネームして、そこにSlackのトークン、Signing Secret、DifyのAPI Key、DifyのBase URLを書き込むんだ。 - 別ターミナルで
ngrok http 3000を叩いて、表示されたHTTPSのURLをSlack AppのスラッシュコマンドのRequest URLにコピペするよ。 - あとは
pip install -r requirements.txtで依存パッケージ入れて、python app.pyでボットを起動するだけ。
- Claude Codeが作ってくれた
これでSlackで /dify ちょっとした質問 って打てば、「処理中です...」って出て、数秒後にDifyワークフローの回答が返ってくるようになるんだ。
うちのチームでは、これで毎日のように「〇〇の資料どこだっけ?」とか「先週のミーティングの議事録要約して」みたいなのをDifyのRAGワークフローに投げて、パッと回答を得てるよ。ちょっとしたことでもSlackから手軽にDifyワークフローの恩恵を受けられるのが最高なんだ。
もし「回答はチャンネル全体に見えるようにしたい!」ってときは、Claude Codeが作ってくれた app.py の respond(...) の呼び出し部分に response_type="in_channel" を追加すると、みんなに結果が見えるようになるよ。
つまずきポイント
実際に動かすときによくハマるポイントをいくつか教えるね。
- ngrokのURL更新忘れ:
ngrokを再起動するたびにURLが変わるから、Slack Appのスラッシュコマンド設定も忘れずに更新してね。これを忘れるとSlackからエラーが返ってくるんだ。 - 環境変数の設定漏れ:
.envファイルの設定を間違えたり、起動時に読み込まれてなかったりするとエラーになるよ。特にDifyのAPI KeyやSlackのトークンは必須だから気をつけて。 - Slack Appのスコープ不足:
chat:writeやcommandsの権限がないと、ボットがメッセージを投稿できなかったり、スラッシュコマンドを認識しなかったりするから、しっかり設定を確認してね。 - Difyワークフローの入力・出力変数名: Claude Codeが生成したコードとDifyのワークフロー側の変数名が一致してないと動かないことがあるよ。もしワークフローの入力が
questionで出力がanswerだったら、app.pyのinputs = {"query": query_text}やoutputs.get("text", ...)の部分をちゃんと{"question": query_text}やoutputs.get("answer", ...)に直してあげてね。