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

# Assistants

> Create and customize AI assistants for your specific use cases

## Main Interface

<Frame>
  <img src="https://voicebot-cdn.s3.eu-central-1.amazonaws.com/dashboard/assistants.png" alt="Assistants Dashboard Overview" />
</Frame>

Create and manage multiple AI assistants, each with their own unique personality, voice, and behavior. Configure every aspect of your assistant through an intuitive interface divided into specialized configuration tabs.

## Configuration Tabs

<Tabs>
  <Tab title="Behavior">
    <Frame>
      <img src="https://voicebot-cdn.s3.eu-central-1.amazonaws.com/dashboard/assistant-behavior.png" alt="Assistant Behavior Configuration" />
    </Frame>

    ### Initial Configuration

    <ParamField path="firstMessage" type="string" label="First Message">
      The opening message your assistant will use. You can enter text for a spoken message or provide an audio file URL (supports mp3, wav formats) for a pre-recorded greeting.
    </ParamField>

    <ParamField path="firstMessageMode" type="select" label="First Message Mode">
      Choose how your assistant starts conversations:

      * Assistant Waits for User: Remains silent until the user speaks first
      * Assistant Speaks First: Begins with the specified first message
      * Assistant Speaks First (Generated): Creates a contextual opening message automatically
    </ParamField>

    ### Context & Knowledge

    <ParamField path="systemMessages" type="textarea" label="System Messages">
      Define your assistant's core behavior and personality. These instructions shape how the assistant understands and responds throughout conversations. Think of it as setting the ground rules for your assistant's behavior.
    </ParamField>

    <ParamField path="knowledgeBase" type="select" label="Knowledge Base">
      Select documents your assistant can reference during conversations. This helps your assistant provide accurate, context-aware responses based on your specific content. Manage your documents in the [Knowledge Base](/quickstart/knowledge-base) section.
    </ParamField>

    ### Response Configuration

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="temperature" type="slider" min="0" max="1" step="0.1" default="0.7" label="Temperature">
        Controls how creative your assistant's responses are:

        * Lower (0.0-0.3): More focused, consistent responses
        * Medium (0.4-0.7): Balanced creativity
        * Higher (0.8-1.0): More varied, creative responses
      </ParamField>

      <ParamField path="maxTokens" type="number" default="250" label="Max Tokens">
        Limits the length of your assistant's responses. A higher number allows for longer, more detailed responses, while a lower number keeps responses concise. One token is approximately 4 characters.
      </ParamField>
    </div>

    ### Advanced Options

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="semanticCaching" type="switch" label="Semantic Caching">
        Improves response speed by remembering answers to similar questions. When enabled, your assistant can quickly provide consistent answers to frequently asked questions.
      </ParamField>

      <ParamField path="detectEmotion" type="switch" label="Emotion Detection">
        Allows your assistant to recognize user emotions (like happiness, frustration, or confusion) and adjust responses accordingly for more empathetic interactions.
      </ParamField>
    </div>
  </Tab>

  <Tab title="Voice">
    <Frame>
      <img src="https://voicebot-cdn.s3.eu-central-1.amazonaws.com/dashboard/assistant-voice.png" alt="Assistant Voice Configuration" />
    </Frame>

    ### Basic Voice Settings

    <ParamField path="voice" type="select" label="Voice Selection">
      Choose the voice that best represents your assistant. Each voice has its own unique characteristics and personality, helping create a distinct identity for your assistant.
    </ParamField>

    <ParamField path="backgroundSound" type="select" label="Background Sound">
      Add ambient sound to make conversations feel more natural:

      * Office: Creates a professional office environment (default for phone calls)
      * Off: No background sound (default for web calls)
    </ParamField>

    ### Speech Processing

    <ParamField path="inputMinCharacters" type="number" label="Input Min Characters">
      Sets the minimum text length before converting to speech. A smaller number means faster responses but potentially more choppy speech, while a larger number means smoother speech but slightly delayed responses.
    </ParamField>

    <ParamField path="punctuationBoundaries" type="multiselect" label="Punctuation Boundaries">
      Choose which punctuation marks will break speech into natural chunks:

      * Period (.): Complete thought breaks
      * Comma (,): Brief pauses
      * Exclamation (!): Emotional breaks
      * Question Mark (?): Question breaks
      * Colon (:): Introductory breaks
      * Right Parenthesis (): Aside breaks
      * Hyphen (-): Soft breaks
      * Vertical Bar (|): Custom breaks
      * Double Vertical Bar (||): Strong custom breaks
    </ParamField>

    ### Natural Conversation Features

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="fillerInjection" type="switch" label="Filler Injection">
        Adds natural speech fillers (like "um", "uh") to make the assistant sound more human-like. This helps create more natural-sounding conversations by mimicking real speech patterns.
      </ParamField>

      <ParamField path="backchanneling" type="switch" label="Backchanneling">
        Enables subtle listener responses (like "mhmm", "yeah") while the user is speaking. This creates more engaging conversations by showing active listening, just like a real person would.
      </ParamField>
    </div>

    ### Voice Quality Settings

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="speakerBoost" type="switch" label="Speaker Boost">
        Enhances voice consistency and character at a slight speed cost. Enable this when voice quality is more important than generation speed.
      </ParamField>

      <ParamField path="stability" type="slider" min="0" max="1" step="0.1" label="Stability">
        Controls voice consistency:

        * Lower (0.0-0.3): More natural, varied speech
        * Medium (0.4-0.7): Balanced consistency
        * Higher (0.8-1.0): Very consistent but might sound monotone
          Tip: Use lower values for longer conversations to sound more natural.
      </ParamField>
    </div>

    ### Advanced Voice Settings

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="claritySimilarity" type="slider" min="0" max="1" step="0.1" label="Clarity + Similarity">
        Balances speech clarity with voice matching:

        * Lower: Prioritizes natural speech flow
        * Higher: Focuses on matching the selected voice
          Find the sweet spot that sounds best for your use case.
      </ParamField>

      <ParamField path="styleExaggeration" type="slider" min="0" max="1" step="0.1" label="Style Exaggeration">
        Adjusts voice personality strength:

        * Lower: More neutral, faster generation
        * Higher: Stronger personality, more expressive
          Start low and increase if you want more character in the voice.
      </ParamField>
    </div>

    ### Performance Optimization

    <ParamField path="streamingLatency" type="slider" min="1" max="4" step="1" label="Optimize Streaming Latency">
      Balance between response speed and voice quality:

      * Level 1: Highest quality, longer delays
      * Level 2-3: Balanced performance
      * Level 4: Fastest responses, might affect quality
        Choose higher levels for real-time conversations, lower for pre-recorded messages.
    </ParamField>
  </Tab>

  <Tab title="Transcriber">
    <Frame>
      <img src="https://voicebot-cdn.s3.eu-central-1.amazonaws.com/dashboard/assistant-transcriber.png" alt="Assistant Transcriber Configuration" />
    </Frame>

    ### Basic Settings

    <ParamField path="language" type="select" label="Language">
      Select the main language your users will speak in. This helps the transcriber accurately convert speech to text by focusing on the specific sounds and patterns of your chosen language.
    </ParamField>

    ### Keyword Recognition

    <ParamField path="keywordsBoost" type="custom" label="Keywords Boost">
      Improve recognition accuracy for specific words that matter to your business. Add important terms with their boost factors to help the transcriber catch them correctly.

      <Note>
        **How to use Keywords Boost effectively:**

        1. Enter a word (e.g., "VoiceBot")
        2. Set a boost factor (1.0 - 20.0)
        3. Click Add to include it in your list

        **Examples:**

        * Company name: "VoiceBot:2.0"
        * Product name: "ServicePro:1.5"
        * Technical term: "API:1.8"
      </Note>

      **Best Practices:**

      * Use for important, uncommon words (names, technical terms, brands)
      * Start with lower boost factors (1.2 - 2.0)
      * Avoid boosting common words
      * Limit to 100 most important keywords

      **Boost Factor Guide:**

      * 1.0: Normal recognition
      * 1.5: Moderate boost
      * 2.0: Strong boost
      * 3.0+: Very strong boost (use sparingly)
    </ParamField>

    ### Intelligent Features

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="smartFormatting" type="switch" label="Smart Formatting">
        Automatically formats common patterns in the transcript:

        * Numbers ("twenty three" → "23")
        * Dates ("january fifth" → "January 5th")
        * Times ("three thirty pm" → "3:30 PM")
        * Currency ("five dollars" → "\$5")
          Enable this for cleaner, more readable transcripts.
      </ParamField>

      <ParamField path="languageDetection" type="switch" label="Language Detection">
        Automatically identifies the spoken language during conversations. Useful for:

        * Multi-language support
        * International customers
        * Detecting language switches mid-conversation
          Note: Keep disabled if you only use one language to improve accuracy.
      </ParamField>
    </div>
  </Tab>

  <Tab title="Functions">
    <Frame>
      <img src="https://voicebot-cdn.s3.eu-central-1.amazonaws.com/dashboard/assistant-functions.png" alt="Assistant Functions Configuration" />
    </Frame>

    ### Tool Integration

    <ParamField path="tools" type="select" label="Available Tools">
      Connect your assistant with powerful tools to perform actions during calls. Choose from pre-built tools or integrate your own:

      * Built-in tools from the [Tools](/quickstart/tools) page
      * Custom backend integrations
      * Workflow automations

      **Tip:** Start with essential tools and add more as needed to avoid overwhelming your assistant.
    </ParamField>

    ### Call Control

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="enableEndCall" type="switch" label="Enable End Call Function">
        Allows your assistant to professionally end calls when appropriate:

        * After completing the main task
        * When requested by the user
        * When further assistance isn't needed
          Enable this for more natural conversation endings.
      </ParamField>

      <ParamField path="enableDialKeypad" type="switch" label="Enable Dial Keypad Function">
        Gives your assistant the ability to input numbers during calls:

        * Entering verification codes
        * Navigating phone menus
        * Inputting reference numbers
          Useful for integration with other phone systems.
      </ParamField>
    </div>

    ### Call Routing

    <ParamField path="forwardingNumber" type="tel" label="Forwarding Phone Number">
      Set up a fallback number for transferring calls when needed:

      * Human agent escalation
      * Specialized department transfer
      * Emergency contact routing

      Format: Include country code (e.g., +1 for US numbers)
    </ParamField>

    ### Call Termination

    <ParamField path="endCallPhrases" type="tags" label="End Call Phrases">
      Define phrases that will trigger the assistant to end the call naturally. Add common expressions users might say to conclude their conversation.

      **Example phrases:**

      * "goodbye"
      * "end call"
      * "hang up"
      * "that's all"
      * "we're done"
      * "thank you, bye"

      **Best Practices:**

      * Include variations of common endings
      * Keep phrases short and natural
      * Consider your user base's language preferences
      * Add both formal and informal phrases

      **How to manage:**

      * Press Enter after each phrase to add
      * Press Backspace when empty to remove the last phrase
      * Keep phrases simple and clear
    </ParamField>

    <Note>
      Configure these functions thoughtfully to ensure your assistant can handle calls professionally while maintaining a natural conversation flow.
    </Note>
  </Tab>

  <Tab title="Advanced">
    <Frame>
      <img src="https://voicebot-cdn.s3.eu-central-1.amazonaws.com/dashboard/assistant-advanced.png" alt="Assistant Advanced Configuration" />
    </Frame>

    ### Privacy Settings

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="hipaaCompliance" type="switch" label="HIPAA Compliance">
        Enables healthcare privacy compliance mode:

        * No storage of logs or recordings
        * Automatic disabling of audio recording
        * Organization-wide enforcement
          Essential for healthcare-related applications.
      </ParamField>

      <ParamField path="audioRecording" type="switch" label="Audio Recording">
        Store conversation recordings for:

        * Quality assurance
        * Training purposes
        * Compliance requirements
          Note: Automatically disabled when HIPAA Compliance is on.
      </ParamField>
    </div>

    ### Speaking Behavior

    <ParamField path="waitSeconds" type="slider" min="0" max="2" step="0.1" label="Wait Seconds">
      Fine-tune how long your assistant pauses before responding:

      * 0 seconds: Immediate responses
      * 1 second: Natural conversation pace
      * 2 seconds: More contemplative style
        Tip: Shorter times feel more responsive, longer times feel more natural.
    </ParamField>

    <ParamField path="smartEndpointing" type="switch" label="Smart Endpointing">
      Enable AI-powered conversation timing:

      * Automatically detects when to respond
      * Adapts to user's speaking style
      * Handles pauses intelligently
        Recommended for most use cases.

      Note: When enabled, the manual timing controls below will be hidden as they are automatically managed.
    </ParamField>

    <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
      <ParamField path="onPunctuationSeconds" type="slider" min="0" max="3" step="0.1" label="On Punctuation Seconds">
        Wait time after complete sentences:

        * 0 sec: Quick responses
        * 1-2 sec: Natural pauses
        * 3 sec: Extended reflection
          Note: Only available when Smart Endpointing is disabled.
      </ParamField>

      <ParamField path="onNoPunctuationSeconds" type="slider" min="0" max="3" step="0.1" label="On No Punctuation Seconds">
        Wait time after incomplete thoughts:

        * 0-1 sec: Quick interjections
        * 1.5 sec: Default pause
        * 2-3 sec: Patient waiting
          Note: Only available when Smart Endpointing is disabled.
      </ParamField>

      <ParamField path="onNumberSeconds" type="slider" min="0" max="3" step="0.1" label="On Number Seconds">
        Wait time after numerical input:

        * 0-0.3 sec: Quick confirmation
        * 0.5 sec: Standard pause
        * 1+ sec: Extended verification
          Note: Only available when Smart Endpointing is disabled.
      </ParamField>
    </div>

    ### Interruption Handling

    <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
      <ParamField path="numberOfWords" type="slider" min="0" max="10" label="Number of Words">
        Words needed to interrupt assistant:

        * 0: Any sound interrupts
        * 3-5: Short phrases
        * 7-10: Complete thoughts
      </ParamField>

      <ParamField path="voiceSeconds" type="slider" min="0" max="0.5" step="0.1" label="Voice Seconds">
        Speaking duration to trigger interruption:

        * 0 sec: Instant response
        * 0.2-0.3 sec: Quick acknowledgment
        * 0.5 sec: Confirmed speech
      </ParamField>

      <ParamField path="backOffSeconds" type="slider" min="0" max="10" step="0.5" label="Back Off Seconds">
        Pause after being interrupted:

        * 0-2 sec: Quick recovery
        * 3-5 sec: Polite pause
        * 6-10 sec: Extended waiting
      </ParamField>
    </div>

    ### Call Duration Controls

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="silenceTimeout" type="slider" min="10" max="600" step="10" label="Silence Timeout">
        Automatic call end after silence:

        * 10-30 sec: Quick timeout
        * 60-120 sec: Standard wait
        * 300-600 sec: Extended patience
          Best Practice: Set based on your use case.
      </ParamField>

      <ParamField path="maximumDuration" type="slider" min="10" max="43200" step="60" label="Maximum Duration">
        Longest allowed call duration:

        * 300 sec (5 min): Quick interactions
        * 1800 sec (30 min): Standard calls
        * 43200 sec (12 hrs): Extended sessions
          Tip: Set based on typical conversation length.
      </ParamField>
    </div>

    ### Server Integration

    <ParamField path="serverUrl" type="url" label="Server URL">
      Endpoint for receiving server messages:

      * Must be a secure HTTPS endpoint
      * Handles real-time updates
      * Processes call events
    </ParamField>

    <ParamField path="serverMessages" type="multiselect" label="Server Messages">
      Choose which events to send to your server:

      * End of Call Report: Final call summary
      * Function Call: Tool usage events
      * Conversation Update: Dialog progress
      * Model Output: AI responses
      * Speech/Transcript: Voice-to-text
      * Tool Calls: Integration activities
        Select only the events you need to process.
    </ParamField>

    ### Call Messages

    <ParamField path="voicemailMessage" type="string" label="Voicemail Message">
      Custom message when detecting voicemail:
      Example: "I notice this is a voicemail. I'll end the call now and try again later."
    </ParamField>

    <ParamField path="endCallMessage" type="string" label="End Call Message">
      Polite message before ending calls:
      Example: "Thank you for your time. Have a great day!"
    </ParamField>

    ### Idle Handling

    <ParamField path="idleMessages" type="multiselect" label="Idle Messages">
      Select messages to use during silence:

      * Engagement prompts
      * Helpful suggestions
      * Friendly reminders
        Tip: Choose messages matching your assistant's personality.
    </ParamField>

    <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
      <ParamField path="maxIdleMessages" type="slider" min="1" max="10" label="Max Idle Messages">
        Limit repeated prompts:

        * 1-2: Minimal prompting
        * 3-5: Standard engagement
        * 6-10: Persistent assistance
      </ParamField>

      <ParamField path="idleTimeout" type="slider" min="5" max="10" step="0.5" label="Idle Timeout">
        Seconds before showing idle message:

        * 5-6 sec: Quick engagement
        * 7-8 sec: Natural timing
        * 9-10 sec: Patient waiting
      </ParamField>
    </div>
  </Tab>

  <Tab title="Analysis">
    <Frame>
      <img src="https://voicebot-cdn.s3.eu-central-1.amazonaws.com/dashboard/assistant-analysis.png" alt="Assistant Analysis Configuration" />
    </Frame>

    ### Call Summary

    <ParamField path="summaryPrompt" type="textarea" label="Summary Prompt">
      Configure how your assistant summarizes each call. The summary appears in `call.analysis.summary`.

      **Sample Format:**

      ```
      Summarize the key points, decisions, and action items from the call in 2-3 sentences.
      Focus on customer requirements, solutions provided, and next steps agreed upon.
      ```

      **Tips for effective summaries:**

      * Keep instructions clear and concise
      * Focus on key information
      * Specify desired length and format
      * Include important details to capture
    </ParamField>

    <ParamField path="summaryTimeout" type="slider" min="1" max="20" label="Summary Timeout">
      Maximum time allowed for summary generation:

      * Default: 10 seconds
      * Range: 1-20 seconds

      Note: Request will timeout if processing exceeds this duration.
    </ParamField>

    ### Success Evaluation

    <ParamField path="successPrompt" type="textarea" label="Success Evaluation Prompt">
      Define how your assistant evaluates call success. Customize the prompt to match your quality criteria.

      **Recommended Structure:**

      ```
      Analyze the call for:
      1. Customer satisfaction level
      2. Problem resolution completeness
      3. Protocol adherence and professionalism
      ```

      **Best practices:**

      * Define clear success criteria
      * Include specific metrics
      * Consider customer satisfaction
      * Account for business goals
    </ParamField>

    <ParamField path="successRubric" type="select" label="Success Evaluation Rubric">
      Choose how to measure call success:

      **Available Scales:**

      * **Numeric Scale:** Rate calls from 1-10
        *Example: "7/10 - Good customer service"*

      * **Descriptive Scale:** Excellent → Poor
        *Example: "Good - Resolved issue efficiently"*

      * **Checklist:** Yes/No criteria list
        *Example: "Greeting ✓, Solution ✓, Follow-up ✗"*

      * **Matrix:** Multi-criteria evaluation
        *Example: "Service: High, Knowledge: Medium"*

      * **Percentage Scale:** 0-100%
        *Example: "85% successful interaction"*

      * **Likert Scale:** Strongly Agree → Disagree
        *Example: "Agree - Met customer needs"*

      * **Automatic Rubric:** AI-generated criteria
        *Example: "Communication: 8/10, Resolution: 9/10"*

      * **Pass/Fail:** Simple yes/no outcome
        *Example: "true - Call objectives met"*
    </ParamField>

    <ParamField path="successTimeout" type="slider" min="1" max="20" label="Success Evaluation Timeout">
      Maximum time allowed for success evaluation:

      * Default: 10 seconds
      * Range: 1-20 seconds

      Note: Evaluation will stop if processing exceeds this duration.
    </ParamField>

    ### Structured Data Extraction

    <ParamField path="structuredDataPrompt" type="textarea" label="Data Extraction Prompt">
      Configure how to extract specific data points from calls.

      **Prompt Guidelines:**

      ```
      Extract the following information:
      - Customer contact details
      - Product specifications discussed
      - Service requirements identified
      - Action items and deadlines
      ```

      **Tips for data extraction:**

      * List specific fields to extract
      * Define expected formats
      * Include validation rules
      * Specify required vs optional data
    </ParamField>

    <ParamField path="structuredDataTimeout" type="slider" min="1" max="20" label="Data Extraction Timeout">
      Maximum time allowed for data extraction:

      * Default: 10 seconds
      * Range: 1-20 seconds

      Note: Extraction will terminate if processing exceeds this duration.
    </ParamField>

    ### Schema Properties

    <ParamField path="schemaProperties" type="custom" label="Data Schema">
      Define the structure of data to extract from calls.

      **Property Configuration:**

      1. Click "Add Property" for each data point
      2. Fill in the details:
         * **Name:** Unique identifier (e.g., "customerName")
         * **Type:** Data format
           * `string`: Text (names, descriptions)
           * `number`: Numerical values
           * `boolean`: True/False values
           * `array`: Lists of items
           * `object`: Nested data structures
         * **Required:** Check if mandatory
         * **Description:** Explain the property

      **Example Schema:**

      ```json theme={null}
      {
        "customerName": {
          "type": "string",
          "required": true,
          "description": "Full name of the customer"
        },
        "satisfactionScore": {
          "type": "number",
          "required": false,
          "description": "Rating from 1-10"
        }
      }
      ```

      **Best Practices:**

      * Use clear, descriptive names
      * Add helpful descriptions
      * Mark essential fields as required
      * Choose appropriate data types
    </ParamField>
  </Tab>
</Tabs>

<Note>
  Changes to assistant configurations take effect immediately for new conversations.
</Note>
