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
    }