Skip to main content

Overview

Dynamic configuration allows you to personalize the behavior of your voice agent during the ringing of a call. This feature offers complete flexibility to adapt the agent to the specifics of each interaction.
This configuration is intended for use during pre-call workflows.

Configuration Structure

The configuration revolves around a structured JSON object that defines all of the agent’s operational parameters:
{
    "initialMessage": "Initial message",
    "prompt": "System prompt",
    "synthesizer": {...},
    "callDurationLimit": "600",
    "rag": {...},
    "extractors": [...],
    "classifiers": [...],
    "actions": [...],
    "recordAudio": false
}

Configuration Detail

initialMessage
string
Greeting message that the agent will use to start the conversation with the caller.
prompt
string
required
Main instructions defining the behavior, personality, and guidelines the agent should follow during the call.
synthesizer
object
required
Configuration for the agent’s voice synthesis engine.
callDurationLimit
number
default:"1800"
Maximum allowed duration for the call before hanging up, expressed in seconds.
rag
object
Configuration of the RAG (Retrieval-Augmented Generation) database.
extractors
array
List of extractors of information that the agent should use during the call.
Example
[
    {
        "name": "Client's First Name",
        "description": "Client's First Name"
    },
    {
        "name": "Client's Last Name",
        "description": "Client's Last Name"
    }
]
classifiers
array
List of classifiers to automatically categorize calls.
Example
[
    {
        "name": "Default Classifier",
        "type": "PRIMARY",
        "labels": ["Appointment Booking", "General Information", "..."],
        "description": "Detailed classification prompt..."
    },
    {
        "name": "Processing",
        "type": "SECONDARY",
        "labels": ["Transfer Failed", "Call Forwarded", "..."],
        "description": "Detailed classification prompt..."
    }
]
actions
array
List of actions the agent can perform during the call.
recordAudio
boolean
Enables (true) or disables (false) audio call recording.

Concise Example: Changing Voice and Language

{
    "initialMessage": "Hello! I'm your virtual assistant. How can I help you today?",
    "synthesizer": {
        "voice": {
            "locales": ["en-US"],
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
        }
    }
}
{
    "initialMessage": "Bonjour! Je suis votre assistant virtuel. Comment puis-je vous aider aujourd'hui?",
    "synthesizer": {
        "voice": {
            "locales": ["fr-FR"],
            "id": "24b1c3cc-0d44-4b50-8888-8dd25736052a"
        }
    }
}

Complete Example

{
    "initialMessage": "Initial message",
    "prompt": "Prompt",
    "synthesizer": {
        "voice": {
            "locales": ["fr-FR", "en-US"],
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
        },
        "textNormalizationPatterns": {
            "kg": "kilogram",
            "cm": {
            	"fr-FR": "centimeter",
            	"en-US": "centimeter"
            }
        }
    },
    "callDurationLimit": "600",
    "rag": {
        "datasourceIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a", "4c90c3cc-0d44-4b50-8888-8dd25736052a"]
    },
    "extractors": [
        {
            "name": "Client's First Name",
            "description": "Client's First Name"
        },
        {
            "name": "Client's Last Name",
            "description": "Client's Last Name"
        }
    ],
    "classifiers": [
        {
            "name": "Default Classifier",
            "type": "PRIMARY",
            "labels": ["Appointment Booking", "General Information", "..."],
            "description": "Prompt: You are an expert in classifying phone calls from call transcriptions.\n\nHere are the rules to follow to assign a label to each call:\n\n- \"Appointment Booking\": ..."
        },
        {
            "name": "Processing",
            "type": "SECONDARY",
            "labels": ["Transfer Failed", "Call Forwarded", "..."],
            "description": "Prompt: You are an expert in classifying phone calls from call transcriptions.\n\nHere are the rules to follow to assign a label to each call:\n\n- \"Transfer Failed\": ..."
        }
    ],
    "actions": [
        {
            "type": "TRANSFER_CALL",
            "description": "Prompt: Allows you to transfer the call to another number. Confirm once more with the interlocutor that they agree to be transferred before proceeding with the transfer.",
            "headers": {
                "Volubile-Cli": "12345"
            },
            "ringTimeout": 30,
            "sipOutboundConnectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "availability": null,
            "allowedToPhones": [
                {
                    "phone": "sip-cli",
                    "description": "Prompt to trigger transfer to a sip trunk",
                    "availability": null
                },
                {
                    "phone": "+33612345678",
                    "description": "Prompt to trigger transfer to a specific number, customer service, etc.",
                    "availability":
                    {
                        "MONDAY": [
                            {
                                "startTime": "07:30",
                                "endTime": "12:30"
                            },
                            {
                                "startTime": "13:15",
                                "endTime": "18:00"
                            }
                        ],
                        "TUESDAY": [],
                        "WEDNESDAY":  [],
                        "THURSDAY": [
                            {
                                "startTime": "07:30",
                                "endTime": "12:30"
                            },
                            {
                                "startTime": "13:15",
                                "endTime": "18:00"
                            }
                        ],
                        "FRIDAY": [],
                        "SATURDAY": [],
                        "SUNDAY":  []
                    }
                }
            ]
        }
    ],
    "recordAudio": true
}