Assistenten erstellen
curl --request POST \
--url https://app.famulor.de/api/user/assistant \
--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>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
voice_id: 123,
language_id: 123,
type: '<string>',
mode: '<string>',
timezone: '<string>',
initial_message: '<string>',
system_prompt: '<string>'
})
};
fetch('https://app.famulor.de/api/user/assistant', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.famulor.de/api/user/assistant"
payload = {
"name": "<string>",
"voice_id": 123,
"language_id": 123,
"type": "<string>",
"mode": "<string>",
"timezone": "<string>",
"initial_message": "<string>",
"system_prompt": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/assistant",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'voice_id' => 123,
'language_id' => 123,
'type' => '<string>',
'mode' => '<string>',
'timezone' => '<string>',
'initial_message' => '<string>',
'system_prompt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.famulor.de/api/user/assistant"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"voice_id\": 123,\n \"language_id\": 123,\n \"type\": \"<string>\",\n \"mode\": \"<string>\",\n \"timezone\": \"<string>\",\n \"initial_message\": \"<string>\",\n \"system_prompt\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"message": "Assistant created successfully",
"data": {
"id": 789,
"name": "Sales Assistant",
"status": "inactive",
"type": "outbound",
"mode": "pipeline"
}
}
{
"message": "Validation failed",
"errors": {
"name": ["The name field is required."],
"voice_id": ["The selected voice is not compatible with the chosen engine type."],
"knowledgebase_mode": ["Only function_call mode is available for multimodal assistants."]
}
}
Assistenten erstellen
Einen neuen KI-Assistenten mit spezifizierter Konfiguration erstellen
POST
/
api
/
user
/
assistant
Assistenten erstellen
curl --request POST \
--url https://app.famulor.de/api/user/assistant \
--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>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
voice_id: 123,
language_id: 123,
type: '<string>',
mode: '<string>',
timezone: '<string>',
initial_message: '<string>',
system_prompt: '<string>'
})
};
fetch('https://app.famulor.de/api/user/assistant', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.famulor.de/api/user/assistant"
payload = {
"name": "<string>",
"voice_id": 123,
"language_id": 123,
"type": "<string>",
"mode": "<string>",
"timezone": "<string>",
"initial_message": "<string>",
"system_prompt": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/assistant",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'voice_id' => 123,
'language_id' => 123,
'type' => '<string>',
'mode' => '<string>',
'timezone' => '<string>',
'initial_message' => '<string>',
'system_prompt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.famulor.de/api/user/assistant"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"voice_id\": 123,\n \"language_id\": 123,\n \"type\": \"<string>\",\n \"mode\": \"<string>\",\n \"timezone\": \"<string>\",\n \"initial_message\": \"<string>\",\n \"system_prompt\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"message": "Assistant created successfully",
"data": {
"id": 789,
"name": "Sales Assistant",
"status": "inactive",
"type": "outbound",
"mode": "pipeline"
}
}
{
"message": "Validation failed",
"errors": {
"name": ["The name field is required."],
"voice_id": ["The selected voice is not compatible with the chosen engine type."],
"knowledgebase_mode": ["Only function_call mode is available for multimodal assistants."]
}
}
Einen neuen KI-Assistenten mit spezifizierter Konfiguration erstellenDieser Endpunkt ermöglicht es dir, einen neuen KI-Assistenten mit umfassenden Konfigurationsoptionen zu erstellen.
Engine-Modi
Die API unterstützt drei Engine-Modi mit unterschiedlichen Fähigkeiten:| Modus | Beschreibung | Erforderliche Felder |
|---|---|---|
pipeline | Klassische STT → LLM → TTS Pipeline | llm_model_id |
multimodal | Echtzeit Multimodal-KI | multimodal_model_id |
dualplex | Multimodal “Brain” + Custom TTS-Voice | multimodal_model_id |
Request Body
Erforderliche Kernfelder
string
erforderlich
Der Name des Assistenten (max. 255 Zeichen)
integer
erforderlich
Die Voice-ID für den Assistenten. Verwende den Endpunkt Stimmen abrufen mit dem Query-Parameter
mode, um kompatible Stimmen für deinen Engine-Modus zu erhalten.integer
erforderlich
Die Language-ID für den Assistenten. Verwende den Endpunkt Sprachen abrufen, um verfügbare Sprachen zu erhalten.
string
erforderlich
Der Assistenten-Typ. Optionen:
inbound, outboundstring
erforderlich
Der Engine-Modus. Optionen:
pipeline, multimodal, dualplexstring
erforderlich
Die Zeitzone des Assistenten (z.B. “Europe/Berlin”, “America/New_York”)
string
erforderlich
Die erste Nachricht, die der Assistent beim Start des Anrufs spricht (max. 200 Zeichen)
string
erforderlich
Der System-Prompt, der Verhalten und Persönlichkeit des Assistenten definiert
Modus-spezifische Felder
integer
Die LLM-Model-ID. Erforderlich für den Modus
pipeline.Verwende den Endpunkt Modelle abrufen, um verfügbare Modelle zu erhalten.integer
Die Multimodal-Model-ID. Erforderlich für die Modi
multimodal und dualplex.Verwende den Endpunkt Modelle abrufen, um verfügbare Multimodal-Modelle zu erhalten.integer
Fallback-LLM-Model-ID für Tool-Calls in
multimodal/dualplex. Optional.number
Empfindlichkeit der Turn-Detection in
multimodal/dualplex (0-1). Standard: autoSekundäre Sprachen
integer[]
Array zusätzlicher Language-IDs, die der Assistent sprechen kann. Der Assistent erkennt die Sprache automatisch und wechselt entsprechend.
"secondary_language_ids": [2, 3, 4]
Knowledgebase-Einstellungen
integer
Die Knowledgebase-ID, die an diesen Assistenten angehängt werden soll
string
Wie die Knowledgebase verwendet wird. Optionen:
function_call- Die KI ruft eine Funktion zur Suche auf (erforderlich für multimodal/dualplex)prompt- Wissen wird in den Prompt injiziert (nur pipeline)
Organisation
integer
ID eines Ordners, in den dieser Assistent eingeordnet werden soll. Muss zu deinem Konto gehören. Sende
null, um den Assistenten unkategorisiert zu lassen.integer[]
Array von Label-IDs, die diesem Assistenten zugewiesen werden sollen. Jedes Label muss zu deinem Konto gehören.
"label_ids": [3, 5]
Telefonnummer
integer
Die ID einer Telefonnummer, die dem Assistenten zugewiesen werden soll. Muss zu deinem Konto gehören.
Für
inbound Assistenten darf die Telefonnummer kein Caller-ID Typ sein und darf nicht bereits einem anderen inbound Assistenten zugewiesen sein.Custom Mid-Call Tools
integer[]
Array von IDs für Custom Mid-Call Tools, die angehängt werden sollen. Jedes Tool muss zu deinem Konto gehören.
"tool_ids": [1, 5, 12]
Built-in Tools
array
Array integrierter Tools. Jedes Tool hat ein
type-Feld und tool-spezifische Felder. Bei Assistent aktualisieren ersetzt dies alle bestehenden integrierten Tools — übergib ein leeres Array [], um alle Tools zu entfernen.Anzeigen Tool-Typen
Anzeigen Tool-Typen
call_transfer - Den Anruf an eine andere Telefonnummer weiterleiten
phone_number(erforderlich): Telefonnummer für die Weiterleitungdescription: Wann der Anruf weitergeleitet werden sollcustom: Wenn true, kann die KI die Weiterleitungsnummer dynamisch bestimmentimezone: Zeitzone für die Erreichbarkeit der Weiterleitungwarm_transfer: Nachricht an den Kunden vor der Weiterleitung senden (Standard:false)warm_transfer_message: Prompt, was die KI vor der Weiterleitung sagen soll (z. B. „Sagen Sie dem Kunden, dass der Anruf weitergeleitet wird.“)
supervisor_phone(erforderlich): Telefonnummer für den Warm-Transfer (z. B. „+14155552001“). Bei aktiviertemcustom_sipstattdessen SIP-Adresse oder interne Durchwahl.outbound_phone_id(erforderlich): ID der Telefonnummer, mit der der Supervisor angerufen wird. Siehe Telefonnummern abrufen.description(erforderlich): Wann transferieren — beschreibt, wann die KI den Warm-Transfer auslösen soll (z. B. „An einen menschlichen Supervisor weiterleiten, wenn der Kunde mit einer echten Person sprechen möchte.“)custom_sip: Eigene SIP-Adresse oder interne Durchwahl statt Telefonnummer (Standard:false)caller_id_mode: Welche Nummer der Supervisor beim Anruf sieht. Optionen:outbound_number(Standard — Outbound-Nummer),customer_number(Anrufernummer),custom(eigene Nummer)custom_caller_id: Eigene Nummer für den Supervisor. Nur beicaller_id_mode: custom.hold_music: Audio während des Wartens. Optionen:hold_music(Standard — Standard-Wartemusik),none(Stille)hold_music_volume: Lautstärke der Wartemusik, 0–100 (Standard:80)hold_message: Ansage an den Anrufer vor dem Halten (Standard: „Bitte warten Sie, während ich Sie mit einem Supervisor verbinde.“)summary_instructions: Anweisung, wie die KI den Supervisor briefen soll (Standard: „Stellen Sie das Gespräch aus Ihrer Sicht vor:\n- WER ruft an (Name, Firma falls erwähnt)\n- WARUM sie angerufen haben (Ziel oder Problem)\n- WARUM jetzt ein Mensch nötig ist\n\nHalten Sie es kurz (2-3 Sätze).“)briefing_initial_message: Erste Nachricht der KI an den Supervisor (Standard: „Hallo! Ich habe einen Anrufer in der Leitung, der Ihre Hilfe braucht. Darf ich Sie kurz einweisen?“)connected_message: Ansage an den Anrufer nach Verbindung mit dem Supervisor (Standard: „Sie sind jetzt mit einem Supervisor verbunden. Ich überlasse Sie ihm.“)
description: Wann die KI den Anruf beenden soll
description: Wann DTMF-Eingabe verwendet werden soll (z. B. IVR-Navigation)
timeout: Sekunden bis zur Eingabe, 1–30 (Standard:5)stop_key: Taste zum Beenden. Optionen:#(Standard),*
calcom_api_key(erforderlich): Dein Cal.com API-Schlüsselcalcom_event_slug(erforderlich): Event-Typ-Slug von Cal.comcalcom_team_slug: Team-Slug, wenn der Event zu einem Cal.com-Team gehörtcalcom_endpoint: Cal.com API-Region. Optionen:us(Standard —https://api.cal.com),eu(https://api.cal.eu),custom(nutztcalcom_custom_endpoint)calcom_custom_endpoint: Eigene Cal.com API-Basis-URL. Nur beicalcom_endpoint: custom(z. B.https://my-calcom-instance.com).calcom_booking_fields: Array benutzerdefinierter Buchungsfelder. Pro Feld:slug(erforderlich),type(erforderlich, z. B. „text“, „email“, „phone“, „select“),label(erforderlich),required(Standard:false),options(Optionen für Select-Felder)description: Wann Terminbuchung angeboten werden soll
assistant_id(erforderlich): ID des Ziel-Assistenten. Muss zu deinem Konto gehören und darf nicht der aktualisierte Assistent selbst sein (kein Self-Transfer).description: Wann transferiert werden soll (max. 500 Zeichen, Standard: „Übergeben Sie das Gespräch an diesen Assistenten, wenn es passend ist.“)message_before_transfer: Optionale Nachricht, die die KI vor dem Wechsel spricht (max. 500 Zeichen).speak_transfer_greeting: Wenn true, spricht der Ziel-Assistent nach dem Transfer seine konfigurierte Erstnachricht (Standard:true)
"tools": [
{
"type": "dtmf_input",
"description": "IVR bei Bedarf navigieren"
},
{
"type": "warm_call_transfer",
"supervisor_phone": "+1234567890",
"outbound_phone_id": 7,
"description": "An einen menschlichen Supervisor 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 Supervisor verbinde.",
"summary_instructions": "Stellen Sie das Gespräch aus Ihrer Sicht vor:\n- WER ruft an (Name, Firma falls erwähnt)\n- WARUM sie angerufen haben (Ziel oder Problem)\n- WARUM jetzt ein Mensch nötig ist\n\nHalten Sie es kurz (2-3 Sätze).",
"briefing_initial_message": "Hallo! Ich habe einen Anrufer in der Leitung, der Ihre Hilfe braucht. Darf ich Sie kurz einweisen?",
"connected_message": "Sie sind jetzt mit einem Supervisor verbunden. Ich überlasse Sie ihm."
},
{
"type": "collect_keypad",
"timeout": 5,
"stop_key": "#"
},
{
"type": "assistant_transfer",
"assistant_id": 14765,
"description": "An den Support-Assistenten übergeben, wenn der Kunde technische Hilfe braucht.",
"message_before_transfer": "Gerne — ich verbinde Sie mit unserem Support-Spezialisten.",
"speak_transfer_greeting": true
},
{
"type": "end_call",
"description": "Anruf beenden wenn fertig"
}
]
In der Assistenten-Liste wird jedes konfigurierte Tool als
{ "type": "...", "data": { ... } } zurückgegeben — dieselben Feldnamen wie im Request, aber unter data verschachtelt (nicht top-level).Voice- und TTS-Einstellungen
boolean
Standard:"true"
Ob emotionale Text-to-Speech Synthese aktiviert ist
number
Standard:"0.70"
Voice-Stability (0-1). Höher = konsistenter
number
Standard:"0.50"
Voice-Similarity (0-1). Höher = näher am Original
number
Standard:"1.00"
Sprechgeschwindigkeit-Multiplikator (0.7-1.2)
number
Standard:"0.10"
LLM-Temperatur (0-1). Niedriger = deterministischer
integer
Custom TTS Provider-ID. Wenn nicht gesetzt, wird anhand der Sprache automatisch ausgewählt. Siehe Synthesizer-Provider abrufen.
integer
Custom STT Provider-ID. Wenn nicht gesetzt, wird anhand der Sprache automatisch ausgewählt. Nur
pipeline. Siehe Transcriber-Provider abrufen.Call-Behavior-Einstellungen
boolean
Standard:"true"
Ob Unterbrechungen durch den Anrufer erlaubt sind.
Kann für
multimodal und dualplex nicht deaktiviert werden.boolean
Standard:"false"
Ob Filler-Audio während der Verarbeitung verwendet werden soll (z.B. “äh”, “einen Moment”).
Nur verfügbar im Modus
pipeline.object
Benutzerdefinierte Füller-Profile pro Kategorie. Wenn nicht angegeben, werden sprachabhängige Standardwerte verwendet. Jede Kategorie ist ein Array kurzer Phrasen.
positive: Füller für zustimmende Antworten (z.B. “Super!”, “Perfekt!”)negative: Füller für ablehnende/neutrale Antworten (z.B. “Hmm.”, “Mhm.”)question: Füller beim Verarbeiten einer Frage (z.B. “Hmm.”, “Einen Moment.”)neutral: Füller für neutrale Bestätigungen (z.B. “Ok.”, “Verstanden.”)
"filler_config": {
"positive": ["Super!", "Perfekt!", "Sehr gut!"],
"negative": ["Hmm.", "Verstehe.", "Okay."],
"question": ["Gute Frage.", "Einen Moment.", "Lass mich nachschauen."],
"neutral": ["Ok.", "Verstanden.", "Notiert."]
}
boolean
Standard:"false"
Ob der Anruf aufgezeichnet werden soll
boolean
Standard:"true"
Ob Noise-Cancellation aktiviert werden soll
boolean
Standard:"false"
Wenn true, wartet der Assistent, bis der Kunde zuerst spricht
Timing-Einstellungen
integer
Standard:"600"
Maximale Anrufdauer in Sekunden (20-1200)
integer
Standard:"40"
Maximale Stille-Dauer bis zur Re-Engagement in Sekunden (1-360)
integer
Maximale Stille direkt beim Anrufstart, bevor beendet wird (1-120 Sekunden). Optional.
integer
Standard:"30"
Maximale Klingelzeit, bevor abgebrochen wird (1-60 Sekunden)
Re-Engagement-Einstellungen
integer
Standard:"30"
Re-Engagement Intervall in Sekunden (7-600)
string
Custom Prompt für Re-Engagement-Nachrichten (max. 1000 Zeichen)Beispiel:
"Sind Sie noch dran? Haben Sie noch weitere Fragen?"Voicemail-Einstellungen
boolean
Standard:"true"
Ob der Anruf beendet werden soll, wenn Voicemail erkannt wird
string
Nachricht, die auf der Voicemail hinterlassen wird (max. 1000 Zeichen)
Endpoint-Detection
string
Standard:"vad"
Voice-Activity-Detection-Typ. Optionen:
vad, ainumber
Standard:"0.5"
Endpoint-Sensitivity (0-5)
number
Standard:"0.5"
Interrupt-Sensitivity (0-5)
integer
Mindestanzahl an Wörtern, bevor eine Unterbrechung erlaubt wird (0-10). Zum Aktivieren setzen.
Ambient Sound
string
Hintergrund-Ambient-Sound. Optionen:
off, office, city, forest, crowded_room, cafe, naturenumber
Standard:"0.5"
Ambient-Sound-Lautstärke (0-1)
Webhook-Konfiguration
boolean
Standard:"false"
Ob Webhook-Benachrichtigungen aktiviert sind
string
Die Webhook-URL für Post-Call Benachrichtigungen. Erforderlich, wenn
is_webhook_active true ist.boolean
Standard:"true"
Ob Webhooks nur bei abgeschlossenen Anrufen gesendet werden sollen (nicht bei failed/no-answer)
boolean
Standard:"true"
Ob Recording-URL in der Webhook-Payload enthalten sein soll
Post-Call Evaluation
boolean
Standard:"true"
Ob AI Post-Call Evaluation aktiviert ist
array
Schema-Definition für Post-Call Datenextraktion
Anzeigen post_call_schema Eigenschaften
Anzeigen post_call_schema Eigenschaften
"post_call_schema": [
{"name": "status", "type": "bool", "description": "Wurde das Anrufziel erreicht"},
{"name": "summary", "type": "string", "description": "Kurze Zusammenfassung des Anrufs"}
]
Variablen
object
Key-Value Paare von Custom Variablen, die in Prompts via
{{variable_name}} genutzt werden können"variables": {
"company_name": "Acme GmbH",
"product": "Premium Widget",
"support_email": "support@acme.com"
}
Conversation-Ended-Einstellungen
integer
Standard:"30"
Minuten Chat-Inaktivität, bis die Konversation als beendet gilt (1–1440)
boolean
Standard:"false"
Ob die Konversation nach Inaktivitäts-Ende erneut gestartet werden kann
string
Webhook-URL, die beim Ende einer Chat-Konversation wegen Inaktivität aufgerufen wird. Getrennt vom Anruf-Webhook.
Beispiel-Requests
pipeline Modus Assistent
{
"name": "Sales Assistant",
"voice_id": 1,
"language_id": 1,
"type": "outbound",
"mode": "pipeline",
"timezone": "Europe/Berlin",
"initial_message": "Hallo! Wie kann ich Ihnen heute helfen?",
"system_prompt": "Du bist ein professioneller Sales Assistant...",
"llm_model_id": 2,
"secondary_language_ids": [2, 3],
"knowledgebase_id": 1,
"knowledgebase_mode": "prompt",
"fillers": true,
"filler_config": {
"positive": ["Super!", "Perfekt!", "Sehr gut!"],
"negative": ["Hmm.", "Verstehe."],
"question": ["Gute Frage.", "Einen Moment."],
"neutral": ["Ok.", "Notiert.", "Verstanden."]
},
"tool_ids": [1, 5],
"tools": [
{"type": "dtmf_input", "description": "IVR bei Bedarf navigieren"},
{
"type": "warm_call_transfer",
"supervisor_phone": "+1234567891",
"outbound_phone_id": 7,
"description": "An einen menschlichen Supervisor 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 Supervisor verbinde.",
"summary_instructions": "Stellen Sie das Gespräch aus Ihrer Sicht vor:\n- WER ruft an (Name, Firma falls erwähnt)\n- WARUM sie angerufen haben (Ziel oder Problem)\n- WARUM jetzt ein Mensch nötig ist\n\nHalten Sie es kurz (2-3 Sätze).",
"briefing_initial_message": "Hallo! Ich habe einen Anrufer in der Leitung, der Ihre Hilfe braucht. Darf ich Sie kurz einweisen?",
"connected_message": "Sie sind jetzt mit einem Supervisor verbunden. Ich überlasse Sie ihm."
},
{"type": "collect_keypad", "timeout": 5, "stop_key": "#"},
{
"type": "assistant_transfer",
"assistant_id": 14765,
"description": "An den Support-Assistenten übergeben, wenn der Kunde technische Hilfe braucht.",
"message_before_transfer": "Gerne — ich verbinde Sie mit unserem Support-Spezialisten.",
"speak_transfer_greeting": true
},
{"type": "end_call", "description": "Anruf beenden, wenn der Kunde zufrieden ist"}
],
"reengagement_interval": 20,
"reengagement_prompt": "Sind Sie noch dran?"
}
multimodal Modus Assistent
{
"name": "Support Bot",
"voice_id": 41,
"language_id": 1,
"type": "inbound",
"mode": "multimodal",
"timezone": "America/New_York",
"initial_message": "Hi! Willkommen beim Support.",
"system_prompt": "Du bist ein hilfreicher Support-Agent...",
"multimodal_model_id": 1,
"chat_llm_fallback_id": 2,
"turn_detection_threshold": 0.7,
"knowledgebase_id": 1,
"knowledgebase_mode": "function_call",
"tts_emotion_enabled": false
}
dualplex Modus Assistent
{
"name": "Premium Agent",
"voice_id": 1,
"language_id": 2,
"type": "outbound",
"mode": "dualplex",
"timezone": "Europe/Berlin",
"initial_message": "Guten Tag!",
"system_prompt": "Du bist ein professioneller Assistent...",
"multimodal_model_id": 4,
"chat_llm_fallback_id": 2,
"secondary_language_ids": [1, 3],
"knowledgebase_id": 1,
"knowledgebase_mode": "function_call",
"ambient_sound": "office",
"ambient_sound_volume": 0.3
}
Response
string
Erfolgsmeldung, die die Erstellung des Assistenten bestätigt
object
{
"message": "Assistant created successfully",
"data": {
"id": 789,
"name": "Sales Assistant",
"status": "inactive",
"type": "outbound",
"mode": "pipeline"
}
}
{
"message": "Validation failed",
"errors": {
"name": ["The name field is required."],
"voice_id": ["The selected voice is not compatible with the chosen engine type."],
"knowledgebase_mode": ["Only function_call mode is available for multimodal assistants."]
}
}
Hinweise
- Alle erforderlichen Felder müssen für eine erfolgreiche Erstellung angegeben werden
- Verwende den Endpunkt Stimmen abrufen mit dem Query-Parameter
mode, um kompatible Stimmen zu erhalten - Für
multimodal/dualplexmussknowledgebase_modeauffunction_callgesetzt sein - Für
multimodal/dualplexistallow_interruptionsimmer aktiv fillersist nur im Moduspipelineverfügbar- Neue Assistenten werden standardmäßig mit Status
inactiveerstellt