Zum Hauptinhalt springen
PUT
/
api
/
user
/
assistant
/
{id}
Assistenten aktualisieren
curl --request PUT \
  --url https://app.famulor.de/api/user/assistant/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "voice_id": 123,
  "language_id": 123,
  "type": "<string>",
  "mode": "<string>",
  "timezone": "<string>",
  "initial_message": "<string>",
  "system_prompt": "<string>",
  "llm_model_id": 123,
  "multimodal_model_id": 123,
  "chat_llm_fallback_id": 123,
  "turn_detection_threshold": 123,
  "secondary_language_ids": [
    123
  ],
  "knowledgebase_id": 123,
  "knowledgebase_mode": "<string>",
  "phone_number_id": 123,
  "tool_ids": [
    123
  ],
  "tools": [
    {}
  ],
  "tts_emotion_enabled": true,
  "voice_stability": 123,
  "voice_similarity": 123,
  "speech_speed": 123,
  "llm_temperature": 123,
  "synthesizer_provider_id": 123,
  "transcriber_provider_id": 123,
  "allow_interruptions": true,
  "fillers": true,
  "filler_config": {},
  "record": true,
  "enable_noise_cancellation": true,
  "wait_for_customer": true,
  "max_duration": 123,
  "max_silence_duration": 123,
  "max_initial_silence_duration": 123,
  "ringing_time": 123,
  "reengagement_interval": 123,
  "reengagement_prompt": "<string>",
  "end_call_on_voicemail": true,
  "voice_mail_message": "<string>",
  "endpoint_type": "<string>",
  "endpoint_sensitivity": 123,
  "interrupt_sensitivity": 123,
  "min_interrupt_words": 123,
  "ambient_sound": "<string>",
  "ambient_sound_volume": 123,
  "is_webhook_active": true,
  "webhook_url": "<string>",
  "send_webhook_only_on_completed": true,
  "include_recording_in_webhook": true,
  "post_call_evaluation": true,
  "post_call_schema": [
    {
      "name": "<string>",
      "type": "<string>",
      "description": "<string>"
    }
  ],
  "variables": {}
}
'
{
  "message": "Assistent erfolgreich aktualisiert",
  "data": {
    "id": 789,
    "name": "Aktualisierter Sales-Assistent",
    "status": "active",
    "type": "outbound",
    "mode": "pipeline"
  }
}
Dieser Endpunkt ermöglicht es Ihnen, die Konfiguration eines bestehenden KI-Assistenten zu aktualisieren. Alle Felder sind optional – es werden nur die angegebenen Felder aktualisiert. Für ausführliche Feldbeschreibungen und Optionen siehe Assistent erstellen.

Path Parameter

id
integer
erforderlich
Die eindeutige Kennung des zu aktualisierenden Assistenten

Request Body

Kernfelder

name
string
Der Name des Assistenten (max. 255 Zeichen)
voice_id
integer
Die zu verwendende Stimmen-ID für den Assistenten. Verwenden Sie den Endpunkt Stimmen abrufen mit dem Parameter mode, um kompatible Stimmen für Ihren Engine-Modus zu erhalten.
language_id
integer
Die Sprach-ID für den Assistenten. Verwenden Sie den Endpunkt Sprachen abrufen, um verfügbare Sprachen zu erhalten.
type
string
Der Assistenten-Typ. Optionen: inbound, outbound
mode
string
Der Engine-Modus. Optionen: pipeline, multimodal, dualplex
Das Ändern des Modus setzt modusspezifische Einstellungen auf die Standardwerte für den neuen Modus zurück.
timezone
string
Die Zeitzone für den Assistenten (z. B. “Europe/Berlin”, “America/New_York”)
initial_message
string
Die erste Nachricht, die der Assistent beim Anrufstart sprechen wird (max. 200 Zeichen)
system_prompt
string
Der System-Prompt, der das Verhalten und die Persönlichkeit des Assistenten definiert

Modusspezifische Felder

llm_model_id
integer
Die zu verwendende LLM-Modell-ID. Gilt nur für den Modus pipeline.Verwenden Sie den Endpunkt Modelle abrufen, um verfügbare Modelle zu erhalten.
multimodal_model_id
integer
Die multimodale Modell-ID. Gilt nur für die Modi multimodal und dualplex.Verwenden Sie den Endpunkt Modelle abrufen, um verfügbare multimodale Modelle zu erhalten.
chat_llm_fallback_id
integer
Fallback-LLM-Modell-ID für Tool-Aufrufe in den Modi multimodal/dualplex. Auf null setzen zum Entfernen.
turn_detection_threshold
number
Empfindlichkeit der Sprecherwechselerkennung für multimodal/dualplex Modi (0-1). Auf null setzen für Automatik.

Sekundärsprachen

secondary_language_ids
integer[]
Array mit zusätzlichen Sprach-IDs, die der Assistent sprechen kann. Ersetzt bestehende Sekundärsprachen. Übergeben Sie ein leeres Array [], um alle Sekundärsprachen zu entfernen.
"secondary_language_ids": [2, 3, 4]

Knowledgebase-Einstellungen

knowledgebase_id
integer
Die ID der zu verknüpfenden Knowledgebase. Auf null setzen zum Entfernen.
knowledgebase_mode
string
Wie die Knowledgebase verwendet werden soll. Optionen:
  • function_call - KI nutzt eine Funktion zur Suche (erforderlich für multimodal/dualplex)
  • prompt - Wissen wird in den Prompt injiziert (nur pipeline)

Telefonnummer

phone_number_id
integer
Die ID einer zuzuweisenden Telefonnummer. Auf null setzen zum Aufheben der Zuweisung. Muss zu Ihrem Konto gehören.
Für inbound Assistenten kann die Telefonnummer kein Caller-ID-Typ sein und darf nicht bereits einem anderen Inbound-Assistenten zugewiesen sein.

Benutzerdefinierte Mid-Call Tools

tool_ids
integer[]
Array von benutzerdefinierten Mid-Call Tool-IDs zur Synchronisierung. Ersetzt alle bestehenden Tool-Zuweisungen. Übergeben Sie ein leeres Array [], um alle Tools zu entfernen. Jedes Tool muss zu Ihrem Konto gehören.
"tool_ids": [1, 5, 12]

Integrierte Tools

tools
array
Array von integrierten Tools. Ersetzt alle bestehenden integrierten Tools. Übergeben Sie ein leeres Array [], um alle Tools zu entfernen.
"tools": [
  {"type": "dtmf_input", "description": "IVR bei Bedarf navigieren"},
  {
    "type": "warm_call_transfer",
    "supervisor_phone": "+1234567890",
    "outbound_phone_id": 7,
    "description": "An einen menschlichen Ansprechpartner weiterleiten, wenn der Kunde mit einer echten Person sprechen möchte.",
    "custom_sip": false,
    "caller_id_mode": "outbound_number",
    "hold_music": "hold_music",
    "hold_music_volume": 80,
    "hold_message": "Bitte warten Sie, während ich Sie mit einem Ansprechpartner verbinde.",
    "summary_instructions": "Kurz aus Ihrer Sicht: Wer ruft an, warum, warum wird ein Mensch benötigt. 2–3 Sätze.",
    "briefing_initial_message": "Hallo! Ich habe einen Anrufer, der Unterstützung braucht. Darf ich die Situation kurz schildern?",
    "connected_message": "Sie sind jetzt mit einem Ansprechpartner verbunden."
  },
  {"type": "collect_keypad", "timeout": 5, "stop_key": "#"},
  {"type": "end_call", "description": "Anruf beenden wenn fertig"}
]

Sprach- und TTS-Einstellungen

tts_emotion_enabled
boolean
Ob emotionale Text-to-Speech-Synthese aktiviert werden soll
voice_stability
number
Stimm-Stabilität-Einstellung (0-1). Höher = konsistentere Stimme
voice_similarity
number
Stimm-Ähnlichkeit-Einstellung (0-1). Höher = näher an der Originalstimme
speech_speed
number
Sprechgeschwindigkeits-Multiplikator (0.7-1.2)
llm_temperature
number
LLM-Temperatur-Einstellung (0-1). Niedriger = deterministischer
synthesizer_provider_id
integer
Benutzerdefinierte TTS-Provider-ID. Auf null setzen, um den Sprachstandard zu verwenden. Siehe Synthesizer-Provider abrufen.
transcriber_provider_id
integer
Benutzerdefinierte STT-Provider-ID. Nur Pipeline-Modus. Auf null setzen, um den Sprachstandard zu verwenden. Siehe Transcriber-Provider abrufen.

Anrufverhalten-Einstellungen

allow_interruptions
boolean
Ob Unterbrechungen durch den Anrufer erlaubt werden sollen.
Kann für die Modi multimodal und dualplex nicht deaktiviert werden.
fillers
boolean
Ob Füller-Audio während der Verarbeitung verwendet werden soll.
Nur für den Modus pipeline verfügbar.
filler_config
object
Benutzerdefinierte Füller-Profile pro Kategorie. Ersetzt die bestehende Füller-Konfiguration. Jede Kategorie ist ein Array kurzer Phrasen.
  • positive: Füller für zustimmende Antworten
  • negative: Füller für ablehnende/neutrale Antworten
  • question: Füller beim Verarbeiten einer Frage
  • neutral: Füller für neutrale Bestätigungen
"filler_config": {
  "positive": ["Super!", "Perfekt!"],
  "negative": ["Hmm.", "Verstehe."],
  "question": ["Gute Frage.", "Einen Moment."],
  "neutral": ["Ok.", "Notiert."]
}
record
boolean
Ob der Anruf aufgezeichnet werden soll
enable_noise_cancellation
boolean
Ob Geräuschunterdrückung aktiviert werden soll
wait_for_customer
boolean
Wenn wahr, wartet der Assistent darauf, dass der Kunde zuerst spricht

Timing-Einstellungen

max_duration
integer
Maximale Anrufdauer in Sekunden (20-1200)
max_silence_duration
integer
Maximale Dauer der Stille vor erneutem Engagement in Sekunden (1-360)
max_initial_silence_duration
integer
Maximale Stille zu Beginn des Anrufs vor dem Beenden (1-120 Sekunden). Auf null setzen zum Deaktivieren.
ringing_time
integer
Maximale Klingelzeit vor dem Abbruch (1-60 Sekunden)

Re-Engagement-Einstellungen

reengagement_interval
integer
Intervall für erneutes Engagement in Sekunden (7-600)
reengagement_prompt
string
Benutzerdefinierter Prompt für Re-Engagement-Nachrichten (max. 1000 Zeichen). Auf null setzen, um den Standard zu verwenden.

Voicemail-Einstellungen

end_call_on_voicemail
boolean
Ob der Anruf beendet werden soll, wenn eine Mailbox erkannt wird
voice_mail_message
string
Nachricht, die auf der Mailbox hinterlassen werden soll, bevor aufgelegt wird (max. 1000 Zeichen). Auf null setzen zum Deaktivieren.

Endpunkterkennung

endpoint_type
string
Typ der Sprachaktivitätserkennung. Optionen: vad, ai
endpoint_sensitivity
number
Endpunkt-Sensibilitätslevel (0-5)
interrupt_sensitivity
number
Unterbrechungs-Sensibilitätslevel (0-5)
min_interrupt_words
integer
Mindestanzahl an Wörtern, bevor eine Unterbrechung zulässig ist (0-10). Auf null setzen zum Deaktivieren.

Ambiente-Sound

ambient_sound
string
Hintergrund-Ambiente-Sound. Optionen: off, office, city, forest, crowded_room, cafe, nature
ambient_sound_volume
number
Lautstärke des Ambiente-Sounds (0-1)

Webhook-Konfiguration

is_webhook_active
boolean
Ob Webhook-Benachrichtigungen aktiviert sind
webhook_url
string
Die Webhook-URL für Post-Call-Benachrichtigungen. Auf null setzen zum Entfernen.
send_webhook_only_on_completed
boolean
Ob Webhooks nur bei erfolgreich abgeschlossenen Anrufen gesendet werden sollen (nicht bei fehlgeschlagenen/keine-Antwort)
include_recording_in_webhook
boolean
Ob die Aufzeichnungs-URL in der Webhook-Payload enthalten sein soll

Post-Call-Evaluation

post_call_evaluation
boolean
Ob die KI-basierte Post-Call-Evaluation aktiviert werden soll
post_call_schema
array
Schema-Definition für die Extraktion von Post-Call-Daten. Ersetzt das bestehende Schema.

Variablen

variables
object
Schlüssel-Wert-Paare für benutzerdefinierte Variablen. Ersetzt alle bestehenden Variablen.
"variables": {
  "company_name": "Acme Corp",
  "product": "Premium Widget"
}

Beispiel-Requests

Grundlegende Einstellungen aktualisieren

{
  "name": "Aktualisierter Assistenten-Name",
  "initial_message": "Hallo! Wie kann ich Ihnen heute helfen?",
  "max_duration": 900
}

In multimodalen Modus wechseln

{
  "mode": "multimodal",
  "voice_id": 41,
  "multimodal_model_id": 1,
  "chat_llm_fallback_id": 2,
  "knowledgebase_mode": "function_call"
}

Tools und Knowledgebase aktualisieren

{
  "tool_ids": [1, 5, 12],
  "knowledgebase_id": 3,
  "knowledgebase_mode": "prompt"
}

Re-Engagement und Voicemail aktualisieren

{
  "reengagement_interval": 15,
  "reengagement_prompt": "Sind Sie noch da? Ich bin hier, um zu helfen.",
  "end_call_on_voicemail": true,
  "voice_mail_message": "Hallo, bitte rufen Sie uns bei Gelegenheit zurück."
}

Optionale Einstellungen entfernen

{
  "phone_number_id": null,
  "webhook_url": null,
  "tool_ids": [],
  "secondary_language_ids": []
}

Antwort

message
string
Erfolgsmeldung zur Bestätigung der Assistenten-Aktualisierung
data
object
{
  "message": "Assistent erfolgreich aktualisiert",
  "data": {
    "id": 789,
    "name": "Aktualisierter Sales-Assistent",
    "status": "active",
    "type": "outbound",
    "mode": "pipeline"
  }
}

Hinweise

  • Nur die Felder, die Sie im Request Body angeben, werden aktualisiert
  • Um optionale Felder zu entfernen, setzen Sie diese explizit auf null
  • Um Arrays zu leeren (Tools, Sekundärsprachen), übergeben Sie ein leeres Array []
  • Der Assistent muss dem authentifizierten Benutzer gehören
  • Verwenden Sie den Endpunkt Stimmen abrufen mit dem Parameter mode, um kompatible Stimmen zu erhalten
  • Für multimodal/dualplex Modi muss knowledgebase_mode auf function_call gesetzt sein
  • In den Modi multimodal/dualplex können Unterbrechungen (allow_interruptions) nicht deaktiviert werden
  • Ein Moduswechsel setzt modusspezifische Einstellungen (LLM-Modell, multimodales Modell, Provider) zurück