Spaces:
Paused
Paused
File size: 2,220 Bytes
7606f4c 1b5d2ca 6e26e1d 8c05e4c c106ebb 8c05e4c c106ebb 6e26e1d 1b5d2ca 8c05e4c 1b5d2ca 8c05e4c 6e26e1d 7606f4c 8c05e4c 1b5d2ca c106ebb 1b5d2ca 8c05e4c 1b5d2ca 8c05e4c 1b5d2ca 8c05e4c 1b5d2ca 8c05e4c 1b5d2ca 8c05e4c c106ebb 8c05e4c c106ebb 1b5d2ca c106ebb 8c05e4c c106ebb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | from fastapi import FastAPI, Request
import json
# Wir laden SQL nur, wenn es da ist (um Abstuerze zu verhindern)
try:
from sqlalchemy import create_engine, text
except ImportError:
pass
app = FastAPI()
@app.get("/")
def home():
return {"status": "Bereit fuer Vapi!"}
@app.post("/search")
async def search_knowledge(request: Request):
# 1. DATEN EMPFANGEN (Vapi-kompatibel)
try:
data = await request.json()
print(f"📥 Vapi Log: {json.dumps(data)}")
except:
return {"result": "Fehler: Kein JSON."}
query_text = ""
# Wir fischen die Frage aus der verschachtelten Vapi-Struktur:
if "query" in data and isinstance(data["query"], str):
query_text = data["query"]
elif "message" in data and "toolCalls" in data["message"]:
try:
# Wir holen uns die Argumente aus der Tool-Liste
args = data["message"]["toolCalls"][0]["function"]["arguments"]
# Manchmal ist es ein String, manchmal ein Dictionary
if isinstance(args, str):
query_text = json.loads(args).get("query", "")
else:
query_text = args.get("query", "")
except:
pass
elif "toolCall" in data:
try:
args = data["toolCall"]["function"]["arguments"]
if isinstance(args, str):
query_text = json.loads(args).get("query", "")
else:
query_text = args.get("query", "")
except:
pass
print(f"🔎 Erkannte Frage: '{query_text}'")
# 2. ANTWORT LOGIK (Hardcoded für deinen Test)
query_lower = query_text.lower()
if "umsätze" in query_lower or "händler" in query_lower:
antwort = "Umsätze sprudeln für Händler, wenn sie genau an dem Ort präsent sind, wo auch ihre Kunden sind."
elif "geo" in query_lower:
antwort = "Geofencing ist eine Technologie, die Aktionen auslöst, wenn ein Gerät eine Zone betritt."
else:
antwort = "Dazu habe ich leider keine Informationen in der Datenbank."
# 3. RÜCKGABE
return {
"result": antwort
} |