> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ouraicalling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Analyse nach dem Anruf

> Bewerte automatisch Stimmung und Erfolg und extrahiere strukturierte Daten aus jedem Anruf

Nachdem ein Anruf beendet ist, liest ein **LLM-Richter** das Transkript und bewertet es anhand der Analysekonfiguration des Assistenten. Er kann die Stimmung des Anrufers einschätzen, entscheiden, ob der Anruf ein Erfolgskriterium erfüllt hat, und strukturierte Felder herausziehen (eine Rückrufnummer, eine Bestell-ID, eine Ja/Nein-Antwort). Das Ergebnis wird beim Anruf gespeichert und ist in den Verlaufsfiltern, der öffentlichen API und in MCP verfügbar.

## Was die Analyse liefert

Für jeden analysierten Anruf schreibt der Richter ein Ergebnis mit:

* **Sentiment** – `positive`, `neutral` oder `negative` (Gesamtstimmung des Anrufers).
* **Erfolg** – `true` / `false` (oder `null`, wenn die Erfolgsbewertung deaktiviert ist), plus eine kurze **Begründung**, die das Urteil erklärt.
* **Daten** – eine Zuordnung der von dir definierten strukturierten Felder, mit dem Feldnamen als Schlüssel.
* **Modell** und **analyzed\_at** – welches Richtermodell gelaufen ist und wann.

Sentiment und Erfolg werden außerdem als **denormalisierte Spalten** auf dem Anruf gespeichert, damit du große Anruflisten schnell filtern kannst (in der Verlaufsansicht und über `GET /calls?sentiment=&success=`).

<Note>
  Die Analyse läuft **nach** dem Anruf und hat nie Einfluss auf das laufende Gespräch. Schlägt der Richter fehl oder liefert er eine unbrauchbare Ausgabe, bleibt der Anruf unverändert – es wird ein `analysis_failed`-Anrufereignis protokolliert, und in die Analyse des Anrufs wird nichts geschrieben.
</Note>

## Assistenten konfigurieren

Öffne die **Analyse**-Karte des Assistenten und aktiviere die Teile, die du brauchst. Alles ist optional; bei einer leeren Konfiguration läuft keine Analyse.

<Steps>
  <Step title="Sentiment">
    Standardmäßig aktiviert. Schalte es aus, wenn du keine Stimmung pro Anruf brauchst.
  </Step>

  <Step title="Erfolgskriterium">
    Aktiviere **Erfolg** und beschreibe in einfachen Worten, wie ein erfolgreicher Anruf aussieht – zum Beispiel *„Der Anrufer hat einen Termin gebucht"* oder *„Der Anrufer hat seine Lieferadresse bestätigt."* Der Richter gibt einen booleschen Wert plus eine Begründung zurück.
  </Step>

  <Step title="Strukturierte Felder">
    Füge Felder hinzu, die extrahiert werden sollen. Jedes Feld hat einen `name` (snake\_case, eindeutig), einen `type` (`string`, `number`, `boolean` oder `enum`), eine `description`, die dem Richter sagt, was er herausziehen soll (max. 500 Zeichen), ein optionales `required`-Flag und – bei `enum` – eine Liste von `choices`.
  </Step>
</Steps>

### Beispielkonfiguration

```json theme={null}
{
  "sentiment": true,
  "success": {
    "enabled": true,
    "criteria": "The caller booked an appointment"
  },
  "fields": [
    { "name": "callback_number", "type": "string", "description": "Phone number the caller wants a callback on" },
    { "name": "appointment_day", "type": "enum", "description": "Requested weekday", "choices": ["mon", "tue", "wed", "thu", "fri"] },
    { "name": "is_existing_customer", "type": "boolean", "description": "Whether the caller is already a customer", "required": true }
  ]
}
```

Ein resultierendes `calls.analysis` sieht so aus:

```json theme={null}
{
  "sentiment": "positive",
  "success": true,
  "success_reason": "Caller agreed to a Tuesday appointment and gave a callback number.",
  "data": {
    "callback_number": "+493012345678",
    "appointment_day": "tue",
    "is_existing_customer": false
  },
  "model": "gpt-...",
  "analyzed_at": "2026-07-05T09:12:44Z"
}
```

## Ergebnisse nutzen

* **Verlaufsfilter** – filtere die Anrufliste nach Sentiment und Erfolg, um zum Beispiel alle negativen Anrufe zu finden, die *nicht* erfolgreich waren.
* **Öffentliche API** – jeder Anruf in `GET /calls` und `GET /calls/{id}` enthält `analysis`, `sentiment` und `success`. Filtere die Liste mit `?sentiment=negative` und `?success=false`.
* **MCP** – dieselben Anruffelder stehen über die MCP-Tools `list_calls`/`get_call` zur Verfügung.

## Konfiguration über die API

`analysis_config` ist ein beschreibbares Feld des Assistenten, das du programmatisch verwalten kannst:

```bash theme={null}
curl -X PATCH https://app.famulor.io/api/v1/assistants/{id} \
  -H "Authorization: Bearer fam_..." \
  -H "Content-Type: application/json" \
  -d '{
    "analysis_config": {
      "sentiment": true,
      "success": { "enabled": true, "criteria": "The caller booked an appointment" },
      "fields": [
        { "name": "callback_number", "type": "string", "description": "Callback number" }
      ]
    }
  }'
```

Den vollständigen Feldvertrag findest du in der [API-Referenz](/api-reference/introduction) (`PATCH /assistants/{id}` und das `AnalysisConfig`-Schema).
