kawafuchieirin / LINE-BOT

LINE-BOT
0 stars 0 forks source link

LINEとSlackのマルチチャネル対応を実現する #8

Closed kawafuchieirin closed 3 weeks ago

kawafuchieirin commented 3 weeks ago

@claude 📌 概要 現在はLINE BOTのみ対応しているが、同じ「晩御飯提案BOT」をSlackからも使えるようにする。 LINEとSlackで共通のレシピ生成処理(Claude 3.5 Sonnet)を再利用できるようにし、チャネルごとの受信・返信部分のみ切り替えられる構成にする。

🎯 目的 LINEだけでなく、Slack上のスラッシュコマンドやメンションでもBOTが利用できるようにする

複数のフロントチャネルに対して、共通の「メニュー提案AI」を活用

✅ タスクリスト 🧱 共通構成へのリファクタリング core/claude_client.py:Claude 3.5へのリクエスト処理(LINE/Slackで共通化)

core/recipe_service.py:気分・材料からレシピ提案を生成するロジックの共通化

handlers/line_handler.py:LINE用のWebhookイベント受信と応答処理

handlers/slack_handler.py:Slackのイベント(スラッシュコマンド、メンション)を処理

🟢 Slack BOT の設定・実装 Slack App を作成(https://api.slack.com/apps

スラッシュコマンド /dinner を作成し、LambdaなどのURLをWebhook登録

Slackのイベント(command or event)を受け取り、共通処理に渡す

応答フォーマットをSlack向けに整形して返す(Block Kit or Text)

🧪 テスト例(Slack) text コピーする 編集する /dinner キャベツと卵があるんだけど何がいい?

👉 鶏むね肉とキャベツの味噌炒め 👉 卵とキャベツの中華スープ 🧠 拡張性のある構成案 bash コピーする 編集する app/ ├── core/ │ ├── claude_client.py # Claude 3.5共通呼び出し │ ├── recipe_service.py # 食材・気分→メニュー生成 ├── handlers/ │ ├── line_handler.py # LINE Webhook用 │ └── slack_handler.py # Slack Command/Event用 ├── utils/ │ ├── config.py │ └── logger.py 🔄 関連Issue

3 Claudeによるレシピ生成処理

6 気分ベースの提案モード追加

8 Claude 3.5 Sonnetへの対応

✨ 期待される効果 Slackでも /dinner やメンションで簡単にメニューを聞ける

LINEを使っていないチーム・企業でも活用可能

将来的にはTelegram / Discordへの展開も容易

毎回CLAUDE.mdも更新してください

claude[bot] commented 3 weeks ago

Claude finished @kawafuchieirin's task —— View jobclaude/issue-8-20250622_062830Create PR ➔


Task List

🎉 Multi-Channel Support Implementation Complete!

I've successfully refactored the LINE-only bot into a multi-channel architecture that supports both LINE and Slack. Here's what was accomplished:

🏗️ Architecture Changes

📁 New Files Created

✨ Key Features

📝 Documentation

🔧 Next Steps for Deployment

  1. Set up Slack App at https://api.slack.com/apps
  2. Configure environment variables for both LINE and Slack
  3. Deploy updated Lambda function
  4. Test both channels

The codebase is now ready for multi-channel operation! 🚀

Co-authored-by: kawafuchieirin kawafuchieirin@users.noreply.github.com