Passer au contenu
megapromotingDiscutons

Expertise · Agents vocaux

Un agent qui parle — sur votre page et au téléphone — et qui peut être interrompu.

Nous construisons des agents vocaux sur Kallina : rôle rédigé, base de connaissances approuvée, outils qu’ils appellent pendant l’échange et une limite au-delà de laquelle ils transmettent la discussion à un humain. Le roumain est la langue par défaut des nouveaux agents.

Déjà construitTrois implémentations propres, citées ci-dessous. (1) La plateforme Kallina — 472 fonctions edge Deno et 559 migrations de base de données, comptées aujourd’hui dans le dépôt ; `https://app.kallina.info` répond 200. (2) Le composant de ce site, `src/components/agents/KallinaVoiceAgent.tsx`, qui implémente le bon chemin de session et documente les deux façons dont un agent vocal échoue en silence. (3) Le pont `elevenlabs-bridge` et la session `openai-realtime-session`, où se trouvent les vrais paramètres d’interruption et de détection de la parole. La réserve que nous disons : la partie téléphonie dépend d’un hôte SIP, et l’hôte par lequel passent nos lignes de test ne répond pas à la date de rédaction — voir la page de téléphonie. Sur le web, le chemin est vérifiable aujourd’hui.

Un agent vocal, chez nous, n’est pas « un bot qui lit un scénario ». Il a quatre éléments écrits avant le premier appel : un rôle, une base de connaissances approuvée par vous, un ensemble d’outils qu’il a le droit d’appeler, et une limite au-delà de laquelle il passe la conversation à un humain. Ce qui sort de la conversation n’est pas seulement un transcript : l’appel a une durée, un coût détaillé par fournisseur, un enregistrement et une analyse, tous liés au compte de l’entreprise.

Le moteur n’est pas unique, et c’est un choix, pas un accident. Dans la configuration de l’agent, vous choisissez entre ElevenLabs Conversational AI, OpenAI Realtime et Gemini Live, ou vous laissez « auto » et la plateforme choisit selon la langue, la charge et la disponibilité. Par-dessus, vous choisissez séparément le cerveau textuel, dans un catalogue où chaque modèle affiche dans l’interface la latence et le coût par minute. Quand quelqu’un demande « pourquoi répond-il lentement », la réponse a des chiffres, pas des opinions.

La partie que les gens ressentent le plus est l’interruption. Sur OpenAI Realtime, la détection de parole est sémantique, avec un seuil de 0,5, un coussin de 300 ms avant et 500 ms de silence pour considérer que vous avez fini de parler ; l’interrupteur « allow interruptions » est activé par défaut. Sur ElevenLabs, l’événement d’interruption est transmis au central téléphonique, pour arrêter immédiatement la lecture. Et le délai après lequel l’agent considère que votre silence est une réponse est configurable par agent — sur un agent de vente que nous avons écrit, il est serré à 12 secondes, contre 15 par défaut.

L’agent vit dans deux endroits différents, avec des contraintes différentes. Sur la page web, il entre avec une seule ligne de script ou avec un composant propre, et la règle d’or est que la page ne conserve jamais l’identifiant de l’agent ni aucune clé de fournisseur — elle demande à la plateforme une session et reçoit une URL signée, de courte durée. Au téléphone, il entre par un trunk SIP, et là les contraintes sont celles de l’opérateur et du central, pas de l’agent ; nous écrivons à ce sujet séparément, sur la page de téléphonie.

Agents vocaux IA en République de Moldova — comment cela fonctionne, concrètement · vidéo en roumain, avec sous-titres et transcription en français

La transcription complète

Bon, allons directement au sujet. Aujourd’hui, nous faisons une analyse technique extrêmement précise de la manière dont les agents vocaux fonctionnent réellement dans l’environnement des affaires. Nous nous baserons exclusivement sur l’architecture de la plateforme Kallina, développée ici même en République de Moldova, par MEGA PROMOTING S.R.L.. Pas de langage marketing, pas de promesses gonflées, juste des faits, une infrastructure pure et, bien sûr, la réalité opérationnelle. Pour toute équipe qui dirige une entreprise et s’appuie sur des processus clairs, comprendre la technologie sous le capot est, franchement, absolument essentiel. Nous avons un parcours très méthodique aujourd’hui. Nous passons par six points. D’abord, nous abordons le problème, puis le mécanisme de fonctionnement, ensuite l’anatomie d’un échec, la section moteurs et interruptions, les limites techniques et, enfin, l’étape suivante.

C’est un regard totalement transparent sur le système. Alors, première section, le problème, le temps et les demandes. Voyons exactement d’où nous partons. C’est précisément la question qui empêche les managers des opérations de dormir la nuit. Où le temps opérationnel se perd-il exactement et, très important, combien de demandes non vérifiées disparaissent chaque jour. Dans une entreprise ordinaire, le temps s’évapore tout simplement entre les appels manqués, les demandes qui ne sont pas prises en charge à temps et toutes sortes d’interactions qui, eh bien, ne peuvent tout simplement pas être vérifiées ensuite. Et ce n’est pas seulement un petit problème d’inconfort. Nous parlons d’une énorme ressource opérationnelle qui se perd jour après jour dans un flux de travail non optimisé.

Passons à la deuxième partie, le mécanisme, comment cela fonctionne. Entrons dans l’ingénierie proprement dite de la plateforme. Regardez un peu ce chiffre, 472. C’est le nombre exact de fonctions Edge new qui maintiennent actuellement la plateforme debout. Donc, clairement, on ne parle pas d’un prototype de week-end ni d’une jolie interface de façade. C’est une infrastructure massive sur un vrai serveur, conçue pour gérer des routes et des logiques métiers extrêmement complexes. Et, pour souligner le niveau de maturité, il existe exactement 559 migrations de base de données sur l’infrastructure PostgreSQL, hébergée via Supabase. Ces chiffres nous montrent une base super solide, avec des politiques de sécurité mises en place au niveau des lignes. En pratique, c’est un système construit pour passer à l’échelle et pour garder les données dans un ordre impeccable.

Maintenant, regardez à quoi ressemble l’ordre des opérations sur un agent web, parce que ce détail est absolument génial. À l’étape 1, la page demande l’accès au micro. À l’étape 2, le visiteur doit accepter. Et ce n’est qu’à l’étape 3 qu’une demande est envoyée au serveur pour ouvrir une session, en recevant en retour une URL signée valable seulement pour une courte période. Pourquoi est-ce un mouvement stratégique aussi important ? Simplement, si à l’étape 2 le micro est refusé, le système n’avance pas. Mathématiquement, cela signifie 0 minute consommée et 0 argent jeté par la fenêtre pour des sessions fantômes. La section 3 est probablement ma préférée. L’anatomie d’un échec. Parce que rien ne construit davantage la confiance qu’une transparence totale, n’est-ce pas ?

Imaginez cette situation cauchemardesque. Un agent vocal a été implémenté sur une page web, mais quand vous appuyiez sur le bouton, il ne se passait absolument rien. Pas de son, pas de message d’avertissement, pas d’erreur dans la console développeur. Silence complet. Pour n’importe qui, même pour un technicien expérimenté, un tel défaut semblait impossible à localiser au premier coup d’œil. Pourquoi ? Parce qu’il n’existait aucun journal d’erreur. Un échec totalement silencieux. En creusant plus profondément, l’analyse technique a mis au jour deux ennemis complètement invisibles. Premièrement, le serveur envoyait un en-tête qui interdisait complètement l’utilisation du micro. Le navigateur, étant obéissant, respectait la règle et refusait la demande, mais il le faisait sans avertir l’interface visuelle. Deuxièmement, un composant vocal était importé statiquement sur la page.

Le fichier n’était tout simplement pas trouvé, renvoyant une erreur 404. À cause de cela, tout le script s’effondrait en arrière-plan, en silence, bloquant toute configuration ultérieure. Mais regardez à quel point la solution a été élégante. Le problème, évidemment, n’était pas dans l’IA, mais directement dans le réseau. L’en-tête du serveur a été modifié pour permettre le micro depuis sa propre source, voyez là, à l’état réparé, et l’import du code a été déplacé exactement à l’intérieur de l’action d’appui sur le bouton. Le défaut a complètement disparu. Maintenant, si quelqu’un appuie sur le bouton et que le micro est bloqué par le navigateur, l’échec n’est plus silencieux. Un message clair apparaît instantanément en roumain, qui vous explique exactement ce que vous devez changer.

Voilà ce que signifie une ingénierie bien pensée, en éliminant totalement les mauvaises surprises. Nous passons à la quatrième section, moteurs, langues et interruptions. C’est le moment d’examiner exactement de quoi ce système est capable. Ici, nous laissons de côté les avis subjectifs et ne parlons qu’en millisecondes. Quand vous utilisez le modèle Flash, de ElevenLabs, la latence n’est que de 75 millisecondes. Pour vous faire une idée, pour l’oreille humaine, c’est pratiquement instantané. En revanche, si vous préférez une qualité vocale absolument premium, comme celle offerte par le modèle Turbo, la latence monte à environ 250 millisecondes. Dans une conversation téléphonique, chaque milliseconde est critique, et la plateforme vous permet de choisir exactement le moteur que vous voulez, strictement en fonction des besoins opérationnels de l’entreprise.

Une question super fréquente que nous entendons est : bon, mais est-ce que je peux interrompre l’agent pendant qu’il parle ? La réponse est un oui ferme, mais le mécanisme diffère. Par exemple, sur OpenAI Realtime, la détection est sémantique. Elle a un seuil fixé à 0.5 et une marge de sécurité technique de 300 millisecondes. En revanche, pour ElevenLabs, dès qu’une interruption intervient, un événement part directement vers le central téléphonique, le système PBX, pour couper instantanément le son. De plus, la période de silence que l’agent attend avant de répondre à son tour peut être réglée très finement. Elle peut, par exemple, être resserrée à 12 secondes au lieu de la valeur par défaut de 15, ce qui rend la conversation beaucoup plus naturelle et réactive.

Du point de vue des langues prises en charge, la configuration officielle de l’agent couvre avec succès 32 langues différentes. Mais un aspect opérationnel d’importance maximale pour nous ici ? La langue roumaine est définie par défaut pour absolument tous les nouveaux agents créés sur cette plateforme. Nous sommes arrivés à la cinquième section, limites techniques et responsabilités, parce que, parfois, il est tout aussi important de savoir ce qu’un système ne peut pas faire, afin d’avoir les bonnes attentes. Traçons une ligne très claire. L’agent peut exécuter des fonctions externes, peut déclencher des outils internes directement sur le serveur et peut transférer l’appel à un collègue humain sans aucun problème. Mais le système interdit aux agents d’improviser dans des domaines strictement réglementés.

Réfléchissez un instant. Un agent qui commence à improviser là où la législation est extrêmement stricte devient un risque énorme pour l’entreprise, en aucun cas un avantage. De plus, des choses comme l’exécution automatique de la suppression des données à une certaine échéance ne sont tout simplement pas de simples cases à cocher dans un menu. Elles représentent des projets procéduraux distincts qui doivent être mis en œuvre de manière dédiée par l’organisation. La sécurité, quant à elle, est traitée avec une rigueur absolue. Les pages web qui hébergent les agents reçoivent exclusivement cette URL signée dont nous parlions. Jamais, mais absolument jamais, elles ne reçoivent un ID d’agent ou une clé API qui pourrait être volée et utilisée aux frais de l’entreprise.

Du côté vocal, la téléphonie dépend à 100 % d’un trunk SIP externe fonctionnel et, pour être aussi transparents que possible concernant les limitations actuelles, les lignes externes SIP de test ne répondent pas pour le moment. C’est une approche extrêmement honnête de la part des ingénieurs, qui montre que la réalité technique passe toujours en premier, au-delà de toute discussion commerciale. Et nous voici à la sixième section, la dernière d’ailleurs, l’étape suivante dans le processus. Que faisons-nous ensuite avec toutes ces informations ? Toute cette dissection technique devrait nous conduire à une évaluation super objective de vos flux de travail. C’est là le véritable enjeu. Quel processus opérationnel au sein de l’organisation a réellement besoin de fonctionner plus efficacement ?

Nous n’implémentons pas l’intelligence artificielle juste pour être à la mode, n’est-ce pas ? L’objectif est d’identifier l’endroit exact, logique, où un agent vocal peut s’intégrer de manière rationnelle, peut évoluer et peut fonctionner dans des conditions de sécurité maximale. En guise de point final, vous avez ici les coordonnées opérationnelles de l’entreprise MEGA PROMOTING S.R.L. de Chișinău, y compris l’IDNO et l’adresse web ? Cela, pour une éventuelle discussion strictement technique, destinée à clarifier comment ces structures complexes peuvent s’intégrer dans les systèmes que vous utilisez déjà dans votre entreprise. Avant toute décision, je laisserais une question provocatrice à laquelle nous réfléchissions tous. Les processus actuels de gestion des clients dans nos entreprises résisteraient-ils vraiment à une analyse technique aussi dure et transparente que celle que ce système a subie ? Dans un marché défini par l’innovation constante, un regard basé strictement sur des faits et des chiffres reste de loin l’outil le plus puissant dont nous disposons. À la prochaine !

Ce que cela comprend

Le travail, par composantes

La session est demandée à la plateforme, pas au fournisseur de voix

La page envoie `POST /functions/v1/widget-voice-session` avec l’identifiant public du widget et reçoit en retour une URL signée. Elle n’a jamais l’identifiant de l’agent ni aucune clé. La mauvaise variante — `startSession({ agentId })` directement dans le HTML — contourne complètement la couche de session, de crédit et de journal de la plateforme, et expose l’agent à quiconque ouvre la source de la page. C’est le premier contrôle que nous faisons sur toute implémentation que nous reprenons.

Le micro est demandé avant la session, donc un refus ne coûte rien

L’ordre est fixe et compte : demandez le micro avec `getUserMedia({audio:true})`, et seulement si la personne accepte demandez la session. Si le visiteur refuse, aucune URL signée n’est émise et aucune minute n’est consommée. La demande de micro se fait à l’intérieur de l’appui sur le bouton, avant toute attente qui pourrait dépasser le geste — sinon le navigateur ignore la demande.

L’agent peut être interrompu, et cela se règle avec des chiffres

Sur OpenAI Realtime : détection sémantique de la parole, seuil 0,5, coussin de 300 ms, 500 ms de silence, interruption autorisée par défaut. Sur ElevenLabs : l’événement `interruption` est transmis au central pour couper la lecture. Par-dessus cela, `turn_timeout` par agent décide après combien de temps de silence l’agent considère que c’est à lui — par défaut 15 secondes, ramené à 12 sur un agent de vente. Et un « je ne peux pas l’interrompre » signalé par un client a, souvent, une autre cause que les seuils : des réponses trop longues. Celle-là, nous la résolvons dans le prompt et dans le plafond de tokens, pas dans la détection de parole.

Appeler des outils pendant la conversation

L’agent n’est pas enfermé dans ce qu’il sait. Il peut appeler des fonctions sur le serveur tout en parlant — pour lire une disponibilité, écrire un rendez-vous, envoyer un SMS ou interroger un catalogue. Les outils sont déclarés par agent, avec des paramètres typés et un délai d’exécution propre, afin qu’un outil lent ne bloque pas la conversation.

La transmission à un humain fait partie du scénario, pas une exception

En messagerie, la prise en charge par un collègue a son propre état sur le fil — `handoff_status`, le moment de la prise en charge, le motif, la personne affectée, les notes de résolution — implémentée dans un module dédié de 619 lignes. Au téléphone, le transfert est géré par le central : transfert aveugle via `##` et transfert assisté via `*2`, l’appel atterrissant dans un contexte de dialplan écrit pour cela. Ce sont deux mécanismes différents parce qu’il s’agit de deux canaux différents ; nous les écrivons tous les deux dans le scénario.

Le moteur et la voix se choisissent explicitement, pas implicitement

Quatre positions de fournisseur : `elevenlabs`, `openai-realtime`, `gemini-live` et `auto`. Pour la synthèse vocale dans les autres langues que l’anglais, la valeur par défaut est `eleven_flash_v2_5` — 32 langues, environ 75 ms ; la variante de meilleure qualité, `eleven_turbo_v2_5`, est d’environ 250 ms. Sur OpenAI Realtime, il y a dix voix et des moteurs jusqu’à `gpt-realtime-2.1`. Le choix est un champ dans la configuration de l’agent, pas une hypothèse de notre part.

Langues

La configuration de l’agent accepte 32 langues, la carte interne des langues de la plateforme compte 41 entrées, et le panneau d’administration est traduit en 20. Ce sont trois chiffres pour trois choses différentes et ils ne se mélangent pas. Le roumain est la langue par défaut d’un nouvel agent.

Ce qui reste après l’appel

Transcription, enregistrement audio, durée, coût ventilé par fournisseur, plus une analyse après l’appel et un bref résumé de la conversation, généré pour la mémoire du client. L’analyse n’est pas une fin en soi : elle sert de base à la décision de savoir si l’agent a fait ce qu’il fallait ou si le scénario comporte une faille.

La consommation se vérifie avant l’action, pas sur la facture

Avant toute opération payante, la plateforme vérifie le crédit disponible, et la consommation est écrite ventilée par fournisseur et par agent. La gate se trouve avant l’appel. En pratique : un agent laissé dans une boucle ne peut pas consommer indéfiniment sans heurter une limite.

À quoi cela ressemble

Le parcours, étape par étape.

01

Nous choisissons un seul trajet et nous lui traçons les limites

Un scénario avec une entrée claire et une sortie claire : appel reçu à la réception, confirmation de commande, vérification de disponibilité. Nous écrivons explicitement ce que l’agent n’a pas le droit de faire, ce qu’il n’a pas le droit de dire et par quel chemin il transmet la discussion à un humain. Un agent sans limites écrites n’est pas plus capable, il est seulement plus imprévisible.

02

Nous construisons l’agent : rôle, connaissances, outils, limites

Le prompt, la base de connaissances approuvée par vous, les outils qu’il peut appeler et les seuils de conversation — fournisseur, voix, modèle textuel, temps de silence, comportement à l’interruption. Au final, nous avons un agent configuré, pas une démo.

03

Nous le mettons sur le canal et vérifions le trajet sans consommer de minutes

Sur le web : une ligne de script ou un composant propre au-dessus de l’API de démarrage et d’arrêt. Il existe un script qui suit exactement le trajet d’un navigateur — la ligne de la configuration, la configuration du widget, la demande de session — et s’arrête à l’URL signée, sans ouvrir la connexion audio. Il s’exécute sur un widget ou sur tous, renvoie un code de sortie, donc il peut entrer dans une vérification planifiée. Au téléphone : le numéro entre sur le trunk, et les appels entrants et sortants sont testés séparément, parce qu’ils tombent en panne séparément.

04

Nous mesurons ce qui est sorti et corrigeons le scénario

Après les premières conversations réelles, nous lisons les transcriptions et l’analyse après l’appel, pas les impressions. Ce que nous corrigeons le plus souvent n’est pas le modèle, mais la longueur des réponses et les limites du scénario — deux choses qui changent dans le prompt, le même jour.

IntrareVerificareDeciziePublicareRien ne passe plus loin sans vérification.L’ORDRE EST L’ARGUMENT
Le parcours d'une conversation : la page demande le microphone, la plateforme émet une session signée, l'agent parle et peut être interrompu, il appelle un outil, et ce qui dépasse son rôle est transmis à une personne.

Les données

Ce que nous touchons, où elles sont et combien de temps elles restent

Les questions que pose toute personne ayant un délégué à la protection des données — posées ici avant qu'il ne les pose.

Où les données se trouvent
PostgreSQL via Supabase hébergé sur une infrastructure propre, avec 559 migrations versionnées, dont 195 atteignent des politiques de Row Level Security. Les fichiers — enregistrements, documents de connaissances, échantillons de voix — sont stockés dans des dépôts séparés, avec un chemin commençant par l’identifiant de l’espace de travail, afin que l’isolation soit dans la structure, et pas seulement dans la requête.
Ce qui n’arrive jamais sur votre page
La clé du fournisseur vocal et l’identifiant de l’agent. La page ne reçoit qu’une URL signée, de courte durée, émise par la plateforme. Conséquence pratique : quelqu’un qui lit la source de votre page ne peut pas utiliser votre agent à vos frais.
Ce qui est enregistré à partir d’un appel
Audio, transcript, durée, numéro de l’appelant, résultat de l’appel et analyse après coup. Pour les cas où l’agent se souvient du client entre les appels, un bref résumé de la conversation précédente est aussi enregistré. Tout est lié à un espace de travail ; il n’existe pas de dépôt commun entre clients.
La suppression sur demande existe ; la suppression automatique à terme, pas encore
Nous le disons tel quel, parce que c’est la différence entre une promesse et une fonction. La suppression sur demande est implémentée : une fonction dédiée supprime les objets du dépôt de fichiers, appelle la procédure de suppression dans la base et invalide les sessions ; il existe séparément un export de données et une fonction pour les données d’appel. Ce qui n’est pas implémenté : les durées de rétention configurables par espace de travail. Elles sont conçues dans un document interne d’avril, mais la colonne de configuration n’apparaît dans aucune migration — donc, aujourd’hui, la suppression à terme se fait par procédure, pas par horloge. Si votre projet a besoin d’une suppression automatique, cela entre dans le travail, pas dans un réglage.
Qui est informé qu’il parle à un agent
L’annonce indiquant que l’interlocuteur parle à un système automatisé, la base de l’enregistrement de la conversation et le texte lu au début de l’appel sont définis avec vous et entrent dans le scénario. Ce n’est pas un réglage technique : c’est une décision de l’opérateur de données, donc la vôtre.

Un cas

Le bouton qui ne faisait rien — et ne donnait même pas d’erreur

La situation

Un agent vocal placé dans une page web. À l’appui, il ne se passait absolument rien : pas de son, pas de message, pas d’erreur dans la console qu’un non-initié puisse voir. Le genre de défaut qu’on signale comme « ça ne marche pas » et qu’on cherche pendant une journée au mauvais endroit.

Ce que nous avons construit

Les causes étaient deux, toutes deux silencieuses par nature. Première : l’en-tête `Permissions-Policy` du serveur contenait `microphone=()`, et le navigateur refuse la demande de micro sans lever quelque chose de visible pour l’utilisateur. Deuxième : le SDK vocal était importé statiquement, et un module qui renvoie 404 lors d’un import statique fait tomber tout le script — donc la demande de configuration mourait avec lui aussi, ce qui fait que le défaut ressemble exactement à « rien ne s’est passé ». Nous avons déplacé l’import du SDK à l’intérieur de l’appui sur le bouton, placé la demande de micro avant la demande de session et écrit l’en-tête du serveur comme `microphone=(self)`, avec la politique de contenu qui autorise explicitement le réseau de distribution du SDK.

Ce qui en est sorti

Aujourd’hui, sur ce site, l’en-tête servi en production est `camera=(), microphone=(self), geolocation=(self)`, et la politique de sécurité du contenu énumère explicitement la source du SDK. Un échec n’est plus silencieux : le refus du micro produit un message en roumain qui indique ce qu’il faut changer, et le refus ne coûte rien, parce que la session n’est même plus demandée.

Ce que le cas ne dit pas

Les deux causes relèvent de l’infrastructure, pas de l’agent. Si votre site est servi par quelqu’un d’autre et que les en-têtes ne sont pas sous notre contrôle, leur vérification devient une condition de départ du travail, pas une surprise de fin.

Questions

Ce que les gens nous demandent avant d'appeler

Avec quoi parle-t-il, concrètement ? Quel moteur y a-t-il derrière ?

Vous choisissez entre ElevenLabs Conversational AI, OpenAI Realtime et Gemini Live, ou vous laissez « auto » et la plateforme choisit selon la langue et la disponibilité. Pour la synthèse vocale dans des langues autres que l’anglais, la valeur par défaut est `eleven_flash_v2_5` — 32 langues, environ 75 ms ; si vous voulez une qualité supérieure et acceptez une latence plus élevée, `eleven_turbo_v2_5` est d’environ 250 ms. Sur OpenAI Realtime, il y a dix voix, et le moteur va jusqu’à `gpt-realtime-2.1`. Le cerveau textuel se choisit séparément, dans un catalogue où chaque modèle a sa latence et son coût par minute indiqués à côté.

Puis-je l’interrompre quand il parle, ou dois-je attendre qu’il termine ?

Vous le pouvez. Sur OpenAI Realtime, la détection de parole est sémantique, avec un seuil de 0,5, un tampon de 300 ms et 500 ms de silence, et le commutateur d’interruption est activé par défaut. Sur ElevenLabs, l’événement d’interruption est envoyé au central téléphonique pour arrêter la lecture. Si malgré tout vous avez l’impression de « ne pas pouvoir l’interrompre », la cause est généralement ailleurs : l’agent répond en paragraphes, pas en phrases. Cela se corrige dans le prompt et dans le plafond de tokens, pas dans les seuils.

Combien de langues parle-t-il ?

La configuration de l’agent prend en charge 32 langues. La carte interne des langues de la plateforme comporte 41 entrées, et le panneau d’administration est traduit en 20 — trois chiffres pour trois choses différentes. Le roumain est la langue par défaut d’un nouvel agent. Pour une langue donnée, nous vérifions d’abord quelle combinaison de modèle vocal et de fournisseur la couvre effectivement, car tous les modèles ne couvrent pas les mêmes langues.

Comment arrive-t-il sur mon site et que dois-je changer chez moi ?

Une ligne de script avec l’identifiant public du widget, ou votre propre composant au-dessus de `start()` / `stop()` / `toggle()`. Deux choses doivent être vraies sur votre serveur, sinon le bouton ne fait rien et aucune erreur n’apparaît : l’en-tête `Permissions-Policy` doit permettre `microphone=(self)` — avec `microphone=()` le navigateur refuse le microphone en silence — et la politique de sécurité du contenu doit permettre le chargement du SDK depuis le réseau de distribution utilisé. Nous les vérifions avant la publication.

Peut-il appeler en premier, et pas seulement répondre ?

Oui, la plateforme permet les appels par lots, avec import de contacts, relances et suivi en temps réel. Mais les appels sortants ne dépendent pas seulement de nous : dans notre registre des problèmes, un cas est documenté où la centrale de l’opérateur a commencé à renvoyer `403 Forbidden` pour toutes les sorties, avec notre configuration inchangée et les appels entrants fonctionnant normalement. C’est pourquoi nous testons les sorties séparément avant de promettre une campagne d’appels, et pourquoi nous ne vendons pas un volume d’appels sortants avant ce test.

Que se passe-t-il quand l’agent ne connaît pas la réponse ?

Il passe la main. Chaque agent a des limites écrites et un chemin de transfert configuré. Dans la messagerie, le fil passe à l’état de prise en charge humaine, avec un motif et une affectation à un collègue. Au téléphone, la centrale effectue le transfert — aveugle ou assisté — vers une extension ou un numéro externe. Ce qui dépasse le rôle de l’agent s’arrête, ne s’improvise pas ; c’est un choix de conception, car un agent qui improvise dans un domaine réglementé est un risque, pas une économie.

Les conversations sont-elles enregistrées ? Combien de temps sont-elles conservées ?

Oui, elles sont enregistrées, transcrites et analysées, et tout est lié à votre espace de travail. La durée de conservation est votre décision en tant que responsable du traitement, pas une valeur par défaut que nous vous imposons — et il faut dire clairement que la suppression automatique à échéance n’est pas aujourd’hui un simple réglage dans la plateforme : la suppression à la demande est implémentée, la suppression à échéance se fait par procédure. Si vous avez besoin d’une horloge automatique, elle se construit dans le projet.

Cela coûte-t-il de l’argent si le visiteur appuie sur le bouton puis refuse le microphone ?

Non. Le microphone est demandé avant la session. Si la personne refuse, la demande de session n’est pas faite du tout, donc aucune URL signée n’est émise et rien n’est consommé. À part cela, avant toute opération payante, la plateforme vérifie le crédit disponible — la porte est avant l’appel, pas sur la facture de fin de mois.

Puis-je aujourd’hui avoir un agent qui répond à un numéro de téléphone fixe ?

Cela dépend d’une pièce qui n’est pas l’agent : l’hôte SIP par lequel l’appel entre. La partie agent est prête et peut être montrée immédiatement dans la page. La partie téléphonie exige un trunk fonctionnel de l’opérateur et une centrale qui réponde ; à la date de rédaction, l’hôte par lequel passent nos lignes de test ne répond pas, et nous ne présentons pas comme disponible quelque chose que nous ne pouvons pas lancer devant vous. Pour un projet réel, la téléphonie se dimensionne séparément — voir la page de téléphonie et centre de contact.

Sur quoi reposent les affirmations ci-dessus (21 sources)
  1. app.kallina.info répond 200 aujourd'hui ; supabase.kallina.info répond aux fonctions edgehttps://app.kallina.info/ · 2026-09-06
  2. Les en-têtes servis aujourd'hui en production sur megapromoting.com autorisent le microphone et la source du SDKhttps://www.megapromoting.com/ · 2026-09-06

19 d'entre elles sont du code et des fichiers de nos dépôts. Nous n'en publions ni le nom ni la ligne : réunies sur une seule page, elles décriraient trop précisément comment sont construits des systèmes qui ne sont pas seulement les nôtres. Nous les parcourons avec vous, dans le dépôt, sur demande — la vérification reste possible, elle se fait simplement lors d'un échange.

Qu'est-ce que vous voudriez voir mieux fonctionner ?

Racontez-nous votre processus. Ensemble, nous décidons ce qui vaut la peine d'être construit, ce que nous pouvons connecter et comment nous vérifions le résultat.

Discutons