Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions app/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from flask import Flask, request, jsonify
import os
import slack_sdk
from slack_sdk.web import WebClient
from slack_sdk.signature import SignatureVerifier
from rag_model import get_rag_response


app = Flask(__name__)

slack_token = "xoxb-8848313668450-8848330175890-NxONtME4RybfiHlAZfIDsJVf"
signing_secret = "165bb0d941425645b37d1ff7a6d77f30"

client = WebClient(token=slack_token)
verifier = SignatureVerifier(signing_secret)


@app.route("/slack/events", methods=["POST"])
def slack_events():
if not verifier.is_valid_request(request.get_data(), request.headers):
return "Request verification failed", 403

event_data = request.json

if "challenge" in event_data:
return jsonify({"challenge": event_data["challenge"]})

if "event" in event_data:
event = event_data["event"]

if event.get("type") == "app_mention":
user = event["user"]
text = event["text"]
channel = event["channel"]

# Change this to your RAG model's response function
# This is where you would call your RAG model
# For example, if you have a function `get_rag_response`:
response_text = get_rag_response(text)

# Respond to Slack
client.chat_postMessage(
channel=channel,
text=f"<@{user}> {response_text}"
)

return "OK", 200

@app.route("/slack/commands", methods=["POST"])
def slack_commands():
data = request.form
command = data.get("command")
if command == "/ping":
return jsonify({
"response_type": "in_channel",
"text": "Pong! 🚀"
})
return "Unknown command", 200

if __name__ == "__main__":
app.run(debug=True,port=3000)
11 changes: 10 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,13 @@ pyyaml
llama-index-llms-ollama
llama-index-embeddings-huggingface
llama-index-readers-file
PyMuPDF
PyMuPDF
argcomplete==3.6.2
blinker==1.9.0
click==8.1.8
Flask==3.1.0
itsdangerous==2.2.0
Jinja2==3.1.6
MarkupSafe==3.0.2
slack_sdk==3.35.0
Werkzeug==3.1.3