> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Systeemtools

**Systeemtools** stellen je assistent in staat de interne status van een gesprek bij te werken. Anders dan [webhooktools](/docs/nl/eleven-agents/customization/tools/webhook-tools) of [clienttools](/docs/nl/eleven-agents/customization/tools/client-tools) voeren systeemtools geen externe API-aanroepen uit en activeren ze geen client-side functies. Ze wijzigen de interne status van het gesprek zonder externe aanroepen te doen.

## Overzicht

Voor sommige applicaties moeten agents het verloop of de status van een gesprek kunnen beheren.
Systeemtools bieden deze mogelijkheid doordat de assistent acties kan uitvoeren die betrekking hebben op de status van het gesprek en waarvoor geen communicatie met externe servers of de client nodig is.

### Beschikbare systeemtools

#### [Gesprek beëindigen](/docs/nl/eleven-agents/customization/tools/system-tools/end-call)

Laat je agent een gesprek automatisch beëindigen wanneer aan de juiste voorwaarden is voldaan.

#### [Taaldetectie](/docs/nl/eleven-agents/customization/tools/system-tools/language-detection)

Laat je agent tijdens gesprekken automatisch naar de taal van de gebruiker wisselen.

#### [Agentoverdracht](/docs/nl/eleven-agents/customization/tools/system-tools/agent-transfer)

Draag gesprekken naadloos over tussen AI-agents op basis van ingestelde voorwaarden.

#### [Naar nummer doorverbinden](/docs/nl/eleven-agents/customization/tools/system-tools/transfer-to-number)

Verbind gesprekken door naar externe telefoonnummers of SIP-URI's.

#### [Beurt overslaan](/docs/nl/eleven-agents/customization/tools/system-tools/skip-turn)

Laat de agent beurten overslaan als de LLM detecteert dat de agent nog niet moet spreken.

#### [Toetsbloktoon afspelen](/docs/nl/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)

Laat agents DTMF-tonen afspelen om met geautomatiseerde telefoonsystemen te communiceren en menu's te doorlopen.

#### [Voicemaildetectie](/docs/nl/eleven-agents/customization/tools/system-tools/voicemail-detection)

Laat agents voicemailsystemen automatisch detecteren en optioneel berichten achterlaten.

#### [Status bijwerken](/docs/nl/eleven-agents/customization/tools/system-tools/update-state)

Laat je agent dynamische variabelen midden in een gesprek bijwerken met expressies.

## Implementatie

Wanneer je via de API een agent maakt, kun je systeemtools aan je agentconfiguratie toevoegen. Zo implementeer je zowel de tools voor gesprek beëindigen als taaldetectie:

## Aangepaste LLM-integratie

Wanneer je een aangepaste LLM gebruikt met ElevenLabs-agents, worden systeemtools beschikbaar gesteld als functiedefinities die je LLM kan aanroepen. Elke systeemtool heeft specifieke parameters en activeringsvoorwaarden:

### Beschikbare systeemtools

#### Gesprek beëindigen

**Doel**: Gesprekken automatisch beëindigen wanneer aan de juiste voorwaarden is voldaan.

**Triggervoorwaarden**: De LLM moet deze tool aanroepen wanneer:

* De hoofdtaak is voltooid en de gebruiker tevreden is
* Het gesprek op natuurlijke wijze is afgerond en beide partijen het eens zijn
* De gebruiker expliciet aangeeft het gesprek te willen beëindigen

**Parameters**:

* `reason` (string, vereist): De reden voor het beëindigen van het gesprek
* `message` (string, optioneel): Een afscheidsbericht dat je naar de gebruiker stuurt voordat je het gesprek beëindigt

**Indeling van de functieaanroep**:

```json
{
  "type": "function",
  "function": {
    "name": "end_call",
    "arguments": "{\"reason\": \"Task completed successfully\", \"message\": \"Thank you for using our service. Have a great day!\"}"
  }
}
```

**Implementatie**: Configureer dit als een system tool in de instellingen van je agent. De LLM ontvangt gedetailleerde instructies over wanneer deze functie moet worden aangeroepen.

Meer informatie: [Tool voor gesprek beëindigen](/docs/nl/eleven-agents/customization/tools/system-tools/end-call)

#### Taaldetectie

**Doel**: Tijdens gesprekken automatisch overschakelen naar de gedetecteerde taal van de gebruiker.

**Triggervoorwaarden**: De LLM moet deze tool aanroepen wanneer:

* De gebruiker een andere taal spreekt dan de huidige gesprekstaal
* De gebruiker expliciet vraagt om van taal te wisselen
* Ondersteuning voor meerdere talen nodig is voor het gesprek

**Parameters**:

* `reason` (string, verplicht): De reden voor de taalwissel
* `language` (string, verplicht): De taalcode om naar over te schakelen (moet in de lijst met ondersteunde talen staan)

**Indeling voor functieaanroepen**:

```json
{
  "type": "function",
  "function": {
    "name": "language_detection",
    "arguments": "{\"reason\": \"User requested Spanish\", \"language\": \"es\"}"
  }
}
```

**Implementatie**: Configureer ondersteunde talen in de agentinstellingen en voeg de systeemtool voor taaldetectie toe. De agent schakelt automatisch van stem en antwoorden om overeen te komen met gedetecteerde talen.

Meer informatie: [Tool voor taaldetectie](/docs/nl/eleven-agents/customization/tools/system-tools/language-detection)

#### Agentoverdracht

**Doel**: Gesprekken overdragen tussen gespecialiseerde AI-agents op basis van gebruikersbehoeften.

**Triggervoorwaarden**: De LLM moet deze tool aanroepen wanneer:

* Het verzoek van de gebruiker gespecialiseerde kennis of andere agentmogelijkheden vereist
* De huidige agent de vraag niet goed genoeg kan afhandelen
* De gespreksstroom aangeeft dat een ander agenttype nodig is

**Parameters**:

* `reason` (string, optioneel): De reden voor de agentoverdracht
* `agent_number` (integer, vereist): Nummer vanaf nul van de agent waarnaar moet worden overgedragen (op basis van geconfigureerde overdrachtsregels)

**Indeling van functieaanroep**:

```json
{
  "type": "function",
  "function": {
    "name": "transfer_to_agent",
    "arguments": "{\"reason\": \"User needs billing support\", \"agent_number\": 0}"
  }
}
```

**Implementatie**: Definieer overdrachtsregels die voorwaarden aan specifieke agent-ID's koppelen. Configureer naar welke agents de huidige agent kan overdragen. Agents worden in de overdrachtsconfiguratie aangeduid met nummers vanaf nul.

Meer informatie: [Tool voor agentoverdracht](/docs/nl/eleven-agents/customization/tools/system-tools/agent-transfer)

#### Naar nummer doorverbinden

**Doel**: Gesprekken naadloos doorverbinden met menselijke medewerkers wanneer AI-ondersteuning niet toereikend is.

**Triggervoorwaarden**: De LLM moet deze tool aanroepen wanneer:

* Er complexe kwesties zijn die menselijk oordeel vereisen
* De gebruiker expliciet om menselijke hulp vraagt
* De AI voor het specifieke verzoek de grenzen van zijn mogelijkheden bereikt
* Escalatieprotocollen worden geactiveerd

**Parameters**:

* `reason` (string, optioneel): De reden voor de doorverbinding
* `transfer_number` (string, vereist): Het telefoonnummer waarnaar wordt doorverbonden (moet overeenkomen met geconfigureerde nummers)
* `client_message` (string, vereist): Bericht dat aan de klant wordt voorgelezen tijdens het wachten op de doorverbinding
* `agent_message` (string, vereist): Bericht voor de menselijke medewerker die het gesprek ontvangt

**Indeling van de functieaanroep**:

```json
{
  "type": "function",
  "function": {
    "name": "transfer_to_number",
    "arguments": "{\"reason\": \"Complex billing issue\", \"transfer_number\": \"+15551234567\", \"client_message\": \"I'm transferring you to a billing specialist who can help with your account.\", \"agent_message\": \"Customer has a complex billing dispute about order #12345 from last month.\"}"
  }
}
```

**Implementatie**: Configureer telefoonnummers en voorwaarden voor doorverbinden. Definieer berichten voor zowel de klant als de menselijke medewerker die het gesprek ontvangt. Werkt met zowel Twilio als SIP trunking.

Meer informatie: [Tool voor doorverbinden naar nummer](/docs/nl/eleven-agents/customization/tools/system-tools/transfer-to-number)

#### Beurt overslaan

**Doel**: De agent toestaan te pauzeren en op invoer van de gebruiker te wachten zonder te spreken.

**Triggervoorwaarden**: De LLM moet deze tool aanroepen wanneer:

* De gebruiker aangeeft een moment nodig te hebben ("Geef me even", "Laat me nadenken")
* De gebruiker om een pauze in de gespreksstroom vraagt
* De agent detecteert dat de gebruiker tijd nodig heeft om informatie te verwerken

**Parameters**:

* `reason` (string, optioneel): Vrije reden die uitlegt waarom de pauze nodig is

**Indeling voor functieaanroepen**:

```json
{
  "type": "function",
  "function": {
    "name": "skip_turn",
    "arguments": "{\"reason\": \"User requested time to think\"}"
  }
}
```

**Implementatie**: Geen aanvullende configuratie nodig. De tool geeft de agent eenvoudig het signaal om stil te blijven totdat de gebruiker weer spreekt.

Meer informatie: [Tool voor beurt overslaan](/docs/nl/eleven-agents/customization/tools/system-tools/skip-turn)

#### Toetsbloktoon afspelen

**Parameters**:

* `reason` (string, optioneel): De reden voor het afspelen van de DTMF-tonen (bijv. "naar een extensie navigeren", "pincode invoeren")
* `dtmf_tones` (string, verplicht): De af te spelen DTMF-reeks. Geldige tekens: 0-9, \*, #, w (pauze van 0,5 s), W (pauze van 1 s)

**Indeling voor functieaanroepen**:

```json
{
  "type": "function",
  "function": {
    "name": "play_keypad_touch_tone",
    "arguments": "{"reason": "Navigating to customer service", "dtmf_tones": "2"}"
  }
}
```

Meer informatie: [Tool voor toetsbloktoon afspelen](/docs/nl/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)

#### Voicemaildetectie

**Parameters**:

* `reason` (string, verplicht): De reden voor het detecteren van voicemail (bijvoorbeeld "geautomatiseerde begroeting gedetecteerd", "geen menselijke reactie")

**Indeling van functieaanroep**:

```json
{
  "type": "function",
  "function": {
    "name": "voicemail_detection",
    "arguments": "{\"reason\": \"Automated greeting detected with request to leave message\"}"
  }
}
```

Meer informatie: [Tool voor voicemaildetectie](/docs/nl/eleven-agents/customization/tools/system-tools/voicemail-detection)

#### Status bijwerken

**Doel**: Laat de agent een of meer dynamische variabelen bijwerken op basis van het gesprek, zonder een externe API aan te roepen.

**Triggervoorwaarden**: De LLM moet deze tool aanroepen wanneer:

* Het gesprek informatie bevat die moet worden vastgelegd (bijvoorbeeld een escalatievlag, een gekozen optie of een waarde die de gebruiker heeft opgegeven)
* Een geconfigureerde statusupdate afhankelijk is van een waarde die de LLM uit het gesprek moet beoordelen of extraheren

**Parameters**:

De parameters van de functie zijn afhankelijk van hoe de tool is geconfigureerd. Elke geconfigureerde statusupdate die een door een LLM geëxtraheerde waarde gebruikt, voegt één eigenschap toe aan het schema. Deze eigenschap is vernoemd naar de dynamische variabele van die update en heeft het type `string`, `number` of `boolean`. Statusupdates die alleen uit constanten of andere dynamische variabelen zijn opgebouwd, voegen geen parameters toe.

**Indeling van functieaanroep**:

```json
{
  "type": "function",
  "function": {
    "name": "update_state",
    "arguments": "{\"should_escalate\": true}"
  }
}
```

**Implementatie**: De agent evalueert elke geconfigureerde expressie met de geëxtraheerde parameters en de huidige dynamische variabelen van het gesprek, en wijst de resultaten vervolgens toe aan de bijbehorende dynamische variabelen. Er wordt geen externe request gedaan.

Meer informatie: [Tool voor status bijwerken](/docs/nl/eleven-agents/customization/tools/system-tools/update-state)

```python
from elevenlabs import AgentConfig, ConversationalConfig, ElevenLabs

elevenlabs = ElevenLabs(api_key="YOUR_API_KEY")

# Each system tool is keyed by name under built_in_tools.
# Leave "description" blank to use the default, tool-specific prompt.
response = elevenlabs.conversational_ai.agents.create(
    conversation_config=ConversationalConfig(
        agent=AgentConfig(
            prompt={
                "built_in_tools": {
                    "end_call": {
                        "type": "system",
                        "name": "end_call",
                        "description": "",
                        "params": {"system_tool_type": "end_call"},
                    },
                    "language_detection": {
                        "type": "system",
                        "name": "language_detection",
                        "description": "",
                        "params": {"system_tool_type": "language_detection"},
                    },
                }
            },
        ),
    ),
)
```

```javascript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient({
  apiKey: "YOUR_API_KEY",
});

// Each system tool is keyed by name under builtInTools.
// Leave "description" blank to use the default, tool-specific prompt.
await elevenlabs.conversationalAi.agents.create({
  conversationConfig: {
    agent: {
      prompt: {
        builtInTools: {
          endCall: {
            type: "system",
            name: "end_call",
            description: "",
            params: { systemToolType: "end_call" },
          },
          languageDetection: {
            type: "system",
            name: "language_detection",
            description: "",
            params: { systemToolType: "language_detection" },
          },
        },
      },
    },
  },
});
```

## Veelgestelde vragen

#### Kunnen systeemtools worden gecombineerd met andere soorten tools?

Ja, systeemtools kunnen in dezelfde assistent worden gebruikt naast webhooktools en clienttools.
Dit maakt uitgebreide functionaliteit mogelijk die intern statusbeheer combineert met
externe interacties.

```
```