Passer au contenu principal

Vue d’ensemble

La configuration dynamique permet de personnaliser le comportement de votre agent vocal pendant la sonnerie d’un appel. Cette fonctionnalité offre une flexibilité complète pour adapter l’agent aux spécificités de chaque interaction.
Cette configuration est destinée à être utilisée pendant les workflows pré-appel.

Structure de la configuration

La configuration s’articule autour d’un objet JSON structuré permettant de définir l’ensemble des paramètres opérationnels de l’agent :
{
    "initialMessage": "Message initial",
    "prompt": "Prompt système",
    "synthesizer": {...},
    "callDurationLimit": "600",
    "rag": {...},
    "extractors": [...],
    "classifiers": [...],
    "actions": [...],
    "recordAudio": false
}

Détail de la configuration

initialMessage
string
Message de salutation que l’agent utilisera pour débuter la conversation avec l’appelant.
prompt
string
requis
Instructions principales définissant le comportement, la personnalité et les directives que l’agent doit suivre pendant l’appel.
synthesizer
object
requis
Configuration du moteur de synthèse vocale de l’agent.
callDurationLimit
number
défaut:"1800"
Durée maximale autorisée pour l’appel avant raccrochage, exprimée en secondes.
rag
object
Configuration de la base de donnée de RAG (Retrieval-Augmented Generation).
extractors
array
Liste des extracteurs d’informations que l’agent doit utiliser pendant l’appel.
Exemple
[
    {
        "name": "Prénom du client",
        "description": "Prénom du client"
    },
    {
        "name": "Nom de famille du client",
        "description": "Nom de famille du client"
    }
]
classifiers
array
Liste des classifieurs pour catégoriser automatiquement les appels.
Exemple
[
    {
        "name": "Classifieur par défaut",
        "type": "PRIMARY",
        "labels": ["Prise de RDV", "Informations pratiques", "..."],
        "description": "Prompt de classification détaillé..."
    },
    {
        "name": "Traitement",
        "type": "SECONDARY",
        "labels": ["Echec transfert", "Appel transféré", "..."],
        "description": "Prompt de classification détaillé..."
    }
]
actions
array
Liste des actions que l’agent peut exécuter pendant l’appel.
recordAudio
boolean
Permet d’activer (true) ou de désactiver (false) l’enregistrement audio de l’appel.

Exemple concis : changer la voix et la langue

{
    "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"
        }
    }
}

Exemple complet

{
    "initialMessage": "Message initial",
    "prompt": "Prompt",
    "synthesizer": {
        "voice": {
            "locales": ["fr-FR", "en-US"],
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
        },
        "textNormalizationPatterns": {
            "kg": "kilogramme",
            "cm": {
            	"fr-FR": "centimètre",
            	"en-US": "centimeter"
            }
        }
    },
    "callDurationLimit": "600",
    "rag": {
        "datasourceIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a", "4c90c3cc-0d44-4b50-8888-8dd25736052a"]
    },
    "extractors": [
        {
            "name": "Prénom du client",
            "description": "Prénom du client"
        },
        {
            "name": "Nom du client",
            "description": "Nom du client"
        }
    ],
    "classifiers": [
        {
            "name": "Classifieur par défaut",
            "type": "PRIMARY",
            "labels": ["Prise de RDV", "Informations pratiques", "..."],
            "description": "Prompt : Tu es un expert en classification d'appels téléphoniques à partir de transcriptions d’appel.\n\nVoici les règles à suivre pour attribuer un label à chaque appel :\n\n- \"Prise de RDV\" : ..."
        },
        {
            "name": "Traitement",
            "type": "SECONDARY",
            "labels": ["Echec transfert", "Appel transféré", "..."],
            "description": "Prompt : Tu es un expert en classification d'appels téléphoniques à partir de transcriptions d’appel.\n\nVoici les règles à suivre pour attribuer un label à chaque appel :\n\n- \"Echec transfert\" : ..."
        }
    ],
    "actions": [
        {
            "type": "TRANSFER_CALL",
            "description": "Prompt : Permet de transférer l'appel vers un autre numéro. Confirme bien avec l'interlocuteur une ultime fois qu'il est d'accord pour être transféré avant d'effectuer le transfert pour de bon.",
            "headers": {
                "Volubile-Cli": "12345"
            },
            "ringTimeout": 30,
            "sipOutboundConnectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "availability": null,
            "allowedToPhones": [
                {
                    "phone": "sip-cli",
                    "description": "Prompt permettant de déclencher le transfert vers un trunk sip",
                    "availability": null
                },
                {
                    "phone": "+33612345678",
                    "description": "Prompt permettant de déclencher le transfert vers un numéro spécifique, service client, 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
}