Référence de l’environnement PrismVox
Chaque clé de PrismVox/.env.example est décrite ci-dessous. Les exemples sont des valeurs de départ, pas des identifiants à réutiliser. Gardez votre .env privé et limitez ses permissions.
Environnement, réglages sauvegardés et mises à jour
Les réglages SIP, dictionnaire et niveaux de modèles initialisent PostgreSQL au premier démarrage. Modifiez ensuite leurs valeurs enregistrées dans la console. Les réglages vocaux sauvegardés remplacent leurs défauts d’environnement pour les nouveaux appels. Les identifiants et paramètres réseau propres à l’environnement exigent de recréer les conteneurs concernés.
chmod 600 .env
docker compose up -d --buildDéploiement et identifiants
COMPOSE_PROJECT_NAME
- Exemple / défaut
prismvox- Rôle
- Identité du projet Docker Compose et préfixe des volumes.
- Utilisation
- Gardez-le lors des mises à jour. Un nouveau nom crée un autre déploiement et d’autres volumes ; il ne renomme ni ne migre la base.
COMPOSE_FILE
- Exemple / défaut
docker-compose.yml- Rôle
- Fichiers Compose utilisés par les commandes dans ce dossier.
- Utilisation
- Utilisez le fichier de base seul pour ElevenLabs ou les API vocales externes. Sous Linux, ajoutez :docker-compose.llm-local.yml uniquement pour le modèle de langage local optionnel. Les anciens overlays STT/TTS intégrés sont retirés.
ARI_USER
- Exemple / défaut
phoneagent- Rôle
- Compte Asterisk REST Interface utilisé par l’agent et la console.
- Utilisation
- Gardez le compte cohérent entre Asterisk, l’agent et l’interface. Ce n’est ni l’identité du trunk SIP ni le compte de la console web.
ARI_PASS
- Exemple / défaut
(generate; replace change_me_ari)- Rôle
- Mot de passe de l’API Asterisk interne.
- Utilisation
- Générez une valeur unique avant le démarrage. Compose la transmet aux composants contrôlant les appels. Ne publiez pas le port ARI d’Asterisk sur Internet.
DB_PASS
- Exemple / défaut
(generate; replace change_me_db)- Rôle
- Mot de passe du compte PostgreSQL phoneagent.
- Utilisation
- Définissez-le avant la création du volume de base. Sur un volume existant, changer l’environnement seul ne change pas le mot de passe PostgreSQL : faites évoluer le compte de base et ses clients ensemble.
UI_USER
- Exemple / défaut
admin- Rôle
- Identifiant Basic Auth de la console d’administration.
- Utilisation
- Choisissez un identifiant opérateur. Utilisez le même comme VOX_USER dans Prism lors de la connexion des projets.
UI_PASSWORD
- Exemple / défaut
(generate; replace change_me_ui)- Rôle
- Mot de passe de la console et de son API d’administration.
- Utilisation
- Gardez l’authentification active même sur un réseau de confiance. Vide supprime cette protection Basic Auth. En mode connecté, Prism utilise ce mot de passe pour relayer l’API d’administration.
AGENT_API_KEY
- Exemple / défaut
(empty)- Rôle
- Jeton Bearer distinct pour agent-chat et les endpoints de conversation compatibles OpenAI.
- Utilisation
- Définissez-le lorsqu’une autre application appelle ces API conversationnelles. Ce n’est ni le mot de passe de la console ni la clé ElevenLabs, et il ne donne pas accès aux API d’administration.
UI_BIND
- Exemple / défaut
127.0.0.1- Rôle
- Interface hôte de publication des ports console 7860 et 7861.
- Utilisation
- Gardez la boucle locale en local ou derrière un proxy sur l’hôte. Pour une autre adresse, restreignez l’accès réseau et configurez HTTPS ; 0.0.0.0 écoute sur toutes les interfaces IPv4.
UI_TLS_SAN
- Exemple / défaut
(empty)- Rôle
- Nom alternatif facultatif dans le certificat auto-signé de la console.
- Utilisation
- Utilisez un SAN comme IP:192.0.2.20 pour une adresse de laboratoire. Cela ne crée pas de certificat publiquement approuvé. Le microphone navigateur exige un contexte sécurisé comme localhost ou HTTPS approuvé.
Trunk SIP et transport
SIP_REGISTRAR
- Exemple / défaut
sbc.example.com- Rôle
- Nom du registrar/SBC fourni par votre opérateur SIP ou PBX.
- Utilisation
- Utilisez le véritable nom fourni. Les valeurs initialisent le trunk enregistré au premier démarrage ; les changements suivants se font dans Configuration → SIP / Telephony.
SIP_REGISTRAR_IP
- Exemple / défaut
192.0.2.10- Rôle
- IP de signalisation de l’opérateur utilisée par Compose pour la correspondance hôte de SIP_DOMAIN et, par défaut, l’identification du SIP entrant.
- Utilisation
- Remplacez l’adresse documentaire par celle fournie par votre opérateur. Vérifiez les changements de DNS/IP avec lui ; l’adresse d’exemple ne peut pas transporter vos appels.
SIP_REGISTRAR_MATCH
- Exemple / défaut
192.0.2.10- Rôle
- Adresse source ou expression de correspondance autorisée pour identifier le SIP entrant.
- Utilisation
- Le défaut suit SIP_REGISTRAR_IP. Faites correspondre les sources de signalisation de l’opérateur ; n’élargissez pas à tout Internet pour faire fonctionner l’enregistrement.
SIP_DOMAIN
- Exemple / défaut
example.com- Rôle
- Domaine SIP utilisé dans la signalisation et les adresses de contact.
- Utilisation
- Utilisez le domaine fourni avec le compte SIP, qui peut différer du domaine du site ou du registrar. Le Compose fourni le fait aussi correspondre à SIP_REGISTRAR_IP.
SIP_USERNAME
- Exemple / défaut
phoneagent- Rôle
- Identité d’authentification du compte ou trunk SIP.
- Utilisation
- Copiez l’identifiant d’authentification, qui peut différer du numéro public. Il est distinct de UI_USER et ARI_USER.
SIP_PASSWORD
- Exemple / défaut
(empty)- Rôle
- Secret utilisé pour authentifier le trunk SIP.
- Utilisation
- Récupérez-le auprès de l’opérateur SIP. Les identifiants SIP enregistrés sont chiffrés ; modifier .env après l’initialisation ne remplace pas le trunk sauvegardé. Utilisez ensuite le formulaire SIP.
SIP_TRANSPORT_MODE
- Exemple / défaut
tls- Rôle
- Transport de signalisation SIP, tls ou udp.
- Utilisation
- Faites correspondre le transport à celui de l’opérateur. Le profil TLS fourni demande aussi le chiffrement média SDES-SRTP ; UDP utilise du RTP en clair. Faites correspondre ces choix aux capacités de l’opérateur et au pare-feu/NAT.
SIP_TLS_PORT
- Exemple / défaut
5061- Rôle
- Port distant de signalisation TLS.
- Utilisation
- Utilisez le port du registrar avec SIP_TRANSPORT_MODE=tls. Le modifier ne change pas les ports publiés sur l’hôte par Compose.
SIP_UDP_PORT
- Exemple / défaut
5060- Rôle
- Port distant de signalisation UDP.
- Utilisation
- Utilisé pour le transport UDP. La stack publie UDP 5060 et RTP UDP 10000–10100 ; adaptez le pare-feu et le NAT à votre trunk.
SIP_TLS_VERIFY_SERVER
- Exemple / défaut
yes- Rôle
- Vérification du certificat du correspondant SIP TLS.
- Utilisation
- Gardez yes avec un certificat opérateur valide. Pour une CA privée, montez son certificat et configurez SIP_TLS_CA_FILE plutôt que désactiver la vérification.
SIP_TLS_CA_FILE
- Exemple / défaut
/etc/ssl/certs/ca-certificates.crt- Rôle
- Chemin du fichier de CA dans le conteneur Asterisk.
- Utilisation
- Le défaut utilise les CA publiques du conteneur. Un fichier personnalisé sur l’hôte nécessite un montage Compose en lecture seule au chemin choisi. Un chemin hôte seul n’est pas visible dans Docker.
Modèle de conversation et connexion à Prism
OPENAI_BASE_URL
- Exemple / défaut
http://host.docker.internal:4000/v1- Rôle
- Racine de passerelle compatible OpenAI pour la conversation locale.
- Utilisation
- Incluez /v1 et rendez l’endpoint accessible depuis les conteneurs. Utilisez un modèle capable d’appels d’outils. Les URL standard/on-call peuvent être remplacées ensuite dans Agent.
OPENAI_MODEL
- Exemple / défaut
your-model-id- Rôle
- Modèle initial pour les deux niveaux de conversation.
- Utilisation
- Remplacez-le par un ID exact de modèle servi. Il initialise standard/on-call seulement si ces réglages sont absents ; les choix déjà enregistrés restent conservés.
OPENAI_API_KEY
- Exemple / défaut
(empty)- Rôle
- Clé de la passerelle de modèles par défaut.
- Utilisation
- Laissez vide seulement pour un endpoint sans clé. La clé de passerelle n’est pas transmise à un endpoint distinct choisi pour un niveau ; configurez ces endpoints en conséquence.
PRISM_URL
- Exemple / défaut
(empty)- Rôle
- Racine interne du serveur Prism en mode connecté.
- Utilisation
- Sur un réseau partagé, utilisez http://prism-server:8080. Nécessite PRISM_TOKEN correspondant et une connectivité dans les deux sens. Vide laisse PrismVox autonome.
PRISM_TOKEN
- Exemple / défaut
(empty)- Rôle
- Identifiant de service Prism pour identifier les appelants et ouvrir les sessions vocales.
- Utilisation
- Copiez le jeton de service du déploiement Prism connecté. C’est un secret d’intégration privilégié, pas le mot de passe d’un utilisateur. Gardez-le privé.
PRISM_PUBLIC_URL
- Exemple / défaut
https://prism.example.com- Rôle
- Adresse Prism accessible au navigateur quand la console est connectée.
- Utilisation
- Utilisez la véritable URL publique ou locale du navigateur. Le nom Docker prism-server n’est généralement pas résolu par le navigateur ; il appartient à PRISM_URL, pas à ce champ.
Reconnaissance et synthèse vocales
STT_PROVIDER
- Exemple / défaut
elevenlabs- Rôle
- Fournisseur de reconnaissance vocale : elevenlabs, openai ou service.
- Utilisation
- ElevenLabs utilise l’intégration directe en streaming. openai vise une API compatible hébergée séparément ; service conserve le contrat historique /transcribe. Ce réglage n’installe aucun moteur vocal.
TTS_PROVIDER
- Exemple / défaut
elevenlabs- Rôle
- Fournisseur de synthèse vocale, indépendant de STT_PROVIDER.
- Utilisation
- Utilisez elevenlabs, openai ou service. Vous pouvez mélanger reconnaissance externe et synthèse ElevenLabs. Les réglages enregistrés dans Speech providers priment et s’appliquent aux nouveaux appels.
ELEVENLABS_API_KEY
- Exemple / défaut
(empty)- Rôle
- Clé API pour la reconnaissance et la synthèse ElevenLabs.
- Utilisation
- Entrez votre clé ici ou dans Speech providers. Elle doit autoriser les modèles et voix choisis. L’audio est transmis à ce fournisseur externe et son utilisation peut être facturée.
ELEVENLABS_VOICE_ID
- Exemple / défaut
(empty)- Rôle
- Identifiant de voix ElevenLabs, distinct de son nom affiché.
- Utilisation
- Choisissez une voix disponible après Connect dans Speech providers ou copiez son ID exact. Sans clé et voix valides, la synthèse ElevenLabs n’est pas prête.
ELEVENLABS_STT_MODEL
- Exemple / défaut
scribe_v2_realtime- Rôle
- ID du modèle de reconnaissance ElevenLabs.
- Utilisation
- Gardez le modèle realtime pour le chemin en streaming. Choisissez un autre modèle de reconnaissance pris en charge dans Speech providers selon votre compte et vos usages.
ELEVENLABS_TTS_MODEL
- Exemple / défaut
eleven_flash_v2_5- Rôle
- ID du modèle de synthèse ElevenLabs.
- Utilisation
- Utilisez un modèle disponible sur votre compte et adapté à la langue. Latence et comportement vocal varient selon le modèle ; l’aperçu effectue une véritable synthèse.
ELEVENLABS_LANGUAGE
- Exemple / défaut
fr- Rôle
- Code de langue vocale.
- Utilisation
- Utilisez par exemple fr pour le français ou en pour l’anglais. Alignez accueil, personnalité, phrases fixes et prononciation sur cette langue. La langue de la console ne change pas celle des appels.
ELEVENLABS_STABILITY
- Exemple / défaut
(empty)- Rôle
- Stabilité facultative de synthèse entre 0 et 1.
- Utilisation
- Vide conserve le défaut du fournisseur. Des valeurs plus grandes recherchent généralement une diction plus stable ; ajustez avec de courts aperçus et des appels réels selon la voix.
ELEVENLABS_BASE_URL
- Exemple / défaut
https://api.elevenlabs.io/v1- Rôle
- Racine de l’API ElevenLabs.
- Utilisation
- Gardez l’URL officielle pour l’usage courant. Ne changez que pour un proxy compatible et approuvé ; n’envoyez jamais une clé de production à un endpoint non fiable.
STT_URL
- Exemple / défaut
http://host.docker.internal:8000/v1- Rôle
- Racine d’API de reconnaissance externe.
- Utilisation
- Utilisée avec STT_PROVIDER=openai ; PrismVox ajoute /audio/transcriptions. Avec service, la route historique /transcribe est utilisée. Ignorée par la reconnaissance directe ElevenLabs.
STT_MODEL
- Exemple / défaut
(empty)- Rôle
- ID facultatif de modèle envoyé à l’API de transcription externe.
- Utilisation
- Utilisez l’ID attendu par votre serveur. Aucun modèle ni serveur Whisper n’est supposé ; la compatibilité dépend du contrat réel de transcription multipart.
TTS_URL
- Exemple / défaut
http://host.docker.internal:8880/v1- Rôle
- Racine d’API de synthèse externe.
- Utilisation
- Utilisée avec TTS_PROVIDER=openai ; PrismVox ajoute /audio/speech et demande du WAV. Avec service, configurez l’URL historique, normalement terminée par /synthesize.
TTS_MODEL
- Exemple / défaut
(empty)- Rôle
- ID de modèle envoyé à l’API de synthèse externe.
- Utilisation
- Utilisez l’identifiant attendu par votre serveur. Ce n’est pas le réglage de modèle ElevenLabs et cela ne télécharge pas de moteur.
TTS_VOICE
- Exemple / défaut
(empty)- Rôle
- ID facultatif de voix envoyé à une API de synthèse externe.
- Utilisation
- Utilisez une voix installée sur ce serveur. Gérez les ajouts/suppressions de voix externes sur le serveur lui-même ; les voix ElevenLabs se choisissent séparément.
SPEECH_SERVICE_API_KEY
- Exemple / défaut
(empty)- Rôle
- Clé Bearer facultative des API vocales externes compatibles OpenAI.
- Utilisation
- Indépendante de ELEVENLABS_API_KEY. Les connexions STT et TTS externes partagent ce secret ; laissez vide seulement si leurs serveurs l’autorisent.
Prononciation, recherche documentaire et audio
WHISPER_HOTWORDS
- Exemple / défaut
(empty)- Rôle
- Indications initiales de reconnaissance des noms et du vocabulaire métier.
- Utilisation
- Nom de variable historique ; il n’exige pas Whisper. Modifiez ensuite le vocabulaire dans Dictionary. La prise en charge des indications dépend de l’API de reconnaissance choisie.
TTS_SPELL_WORDS
- Exemple / défaut
(empty)- Rôle
- Mots ou acronymes initiaux à épeler lettre par lettre.
- Utilisation
- Utilisez des entrées séparées par des virgules, puis gérez-les dans Dictionary. Limitez la liste aux termes réellement mal prononcés par la voix choisie.
TTS_SPELL_EXCEPTIONS
- Exemple / défaut
OK- Rôle
- Termes à ne pas épeler automatiquement.
- Utilisation
- Exceptions séparées par des virgules au traitement des acronymes. Gardez naturelles les abréviations usuelles ; les valeurs enregistrées remplacent les valeurs initiales.
TTS_SPELL_ACRONYMS
- Exemple / défaut
true- Rôle
- Active le traitement automatique des acronymes.
- Utilisation
- Mettez false si l’épellation automatique dégrade la voix ou la langue choisie. Ajustez ce comportement avec le dictionnaire et les réglages du fournisseur.
EMBEDDING_MODEL
- Exemple / défaut
paraphrase-multilingual-MiniLM-L12-v2- Rôle
- Modèle sentence-transformers du service d’embeddings CPU inclus.
- Utilisation
- La base actuelle stocke des vecteurs de dimension 384. Gardez un modèle compatible en dimension 384 ; un modèle d’embeddings quelconque n’est pas interchangeable. Un changement exige aussi de réindexer les documents.
RAG_TOP_K
- Exemple / défaut
5- Rôle
- Nombre maximal de passages de documents récupérés par recherche.
- Utilisation
- Augmentez seulement si des informations utiles manquent régulièrement. Plus de passages augmentent le contexte et peuvent ajouter de la latence ; la qualité des collections et documents compte d’abord.
BARGEIN_MS
- Exemple / défaut
2000- Rôle
- Seuil de parole continue, en millisecondes, pour interrompre la lecture.
- Utilisation
- Une valeur plus basse permet d’interrompre plus vite, mais réagit davantage à l’écho et au bruit. Testez avec votre véritable téléphone et réseau, y compris des réponses longues.
LOG_SENSITIVE_DATA
- Exemple / défaut
false- Rôle
- Active les logs contenant des données d’appel sensibles avec true.
- Utilisation
- Gardez false en fonctionnement normal. Un diagnostic avec données sensibles exige un accès limité aux logs, une rétention courte et une anonymisation avant partage.
DEBUG
- Exemple / défaut
false- Rôle
- Journaux de diagnostic supplémentaires.
- Utilisation
- Activez temporairement pour un problème reproductible, consultez les logs en privé puis désactivez. Ce réglage est distinct de LOG_SENSITIVE_DATA.
Modèle de langage local optionnel
FAST_LLM_MODEL_DIR
- Exemple / défaut
./.dev/models/qwen3.5-9b- Rôle
- Dossier hôte monté en lecture seule dans le service de modèle optionnel.
- Utilisation
- Utilisé uniquement par docker-compose.llm-local.yml. Téléchargez séparément le GGUF et autorisez Docker à lire ce dossier ; l’overlay ne le télécharge pas.
FAST_LLM_MODEL_FILE
- Exemple / défaut
Qwen3.5-9B-Q8_0.gguf- Rôle
- Nom du fichier GGUF dans le dossier de modèles configuré.
- Utilisation
- Faites-le correspondre exactement au fichier téléchargé. L’overlay fourni exige un GPU/runtime NVIDIA et assez de VRAM ; taille de contexte et échantillonnage se définissent dans l’overlay.
FAST_LLM_MODEL_NAME
- Exemple / défaut
qwen3.5-9b- Rôle
- Alias servi exposé par l’API locale optionnelle.
- Utilisation
- Choisissez cet alias avec http://fast-llm:8080/v1 dans les modèles Agent. L’alias est distinct du nom physique du GGUF.
FAST_LLM_PORT
- Exemple / défaut
18120- Rôle
- Port hôte de diagnostic du modèle local optionnel, limité à la boucle locale.
- Utilisation
- L’agent téléphonique utilise le port 8080 sur le réseau Docker. Changez le port hôte en cas de conflit ; cela ne change pas l’URL interne du modèle.
Options Compose supplémentaires et compatibilité
NO_PROXY / no_proxy complètent les exclusions de proxy pour les services Docker internes. SGLANG_URL et SGLANG_MODEL sont d’anciens alias de connexion modèle ; l’ancienne URL est une racine sans /v1. CORTEX_URL et CORTEX_TOKEN sont d’anciens alias de connexion Prism. Préférez OPENAI_BASE_URL, OPENAI_MODEL, PRISM_URL et PRISM_TOKEN pour une nouvelle installation.
Options avancées et câblage interne
Ces options sont lues par les processus mais ne sont pas toutes transmises par le Compose standard. Ajouter un nom au .env ne suffit pas si aucune entrée environment ne le référence. Utilisez un override pour le service concerné puis recréez-le ; préférez les réglages d’interface pour les changements ordinaires.
BARGEIN_VAD_MODE
Agressivité du détecteur de voix pour interrompre la lecture : 0–3. Une valeur élevée rejette plus de bruit. Distinct de BARGEIN_MS ; réglez après tests de parole et d’écho sur un vrai téléphone.
Service : agent · Défaut : 3
SECRET_KEY_PATH
Chemin de la clé persistante commune. Les deux services doivent lire la même clé ; le volume secrets la fournit. Ne remplacez pas la clé à la mise à jour et ne restaurez pas la base seule.
Service : ui and agent · Défaut : /var/lib/prismvox/secret.key
SIP_CALLERID_NAME
Valeur initiale facultative du nom affiché sortant. Le Compose de base ne la transmet pas ; utilisez Display name (From) dans le formulaire SIP. Elle ne change pas l’identité d’authentification.
Service : ui · Défaut : Vide
SIP_TRANSFER_METHOD
Choix initial facultatif, bridge ou refer, pour transfert direct. Utilisez normalement le formulaire SIP ; les transferts annoncés restent bridgés. Ajouter cette variable au .env ne la transmet pas avec le Compose fourni.
Service : ui · Défaut : bridge
ARI_URL
Adresse ARI interne d’administration de la console ; l’agent a son câblage ARI_HOST/ARI_PORT. À changer seulement lors d’une modification du réseau des services.
Service : ui · Défaut : http://asterisk:8088
ASTERISK_DYNAMIC_DIR
Chemin conteneur partagé avec Asterisk pour la configuration SIP générée. Un override doit préserver volume et permissions ; ce n’est pas une nouvelle ligne SIP.
Service : ui · Défaut : /asterisk-dynamic
EMBEDDINGS_URL
URL interne du service d’embeddings. Import et recherche doivent joindre un service compatible avec la même dimension vectorielle.
Service : agent and ui · Défaut : http://embeddings:8002
DATABASE_URL
Connexion PostgreSQL interne construite depuis DB_PASS et le service base. Les deux services doivent utiliser la même base. Ce n’est ni un compte utilisateur distinct ni une URL de fournisseur IA.
Service : agent and ui · Défaut : Géré par Compose
LLM_MODEL
Ancien repli de modèle de la console si OPENAI_MODEL est absent. Préférez OPENAI_MODEL et les modèles standard/on-call enregistrés pour aligner console et agent vocal.
Service : ui · Défaut : Repli de compatibilité