Transformez votre chatbot en voice bot

Si vous exploitez déjà un chatbot — une application Dify, un point de terminaison compatible OpenAI Chat ou n'importe quel service qui streame ses réponses en Server-Sent Events (SSE) — Manivox peut le mettre au téléphone. Vous le connectez comme fournisseur Chatbot et déposez un nœud Chatbot dans un flux : votre bot mène la conversation, et la pipeline vocale Manivox (reconnaissance vocale en entrée, synthèse vocale en sortie) le transforme en voice bot auquel les appelants parlent. Vous concevez et configurez le chatbot ; Manivox s'occupe de tout le volet vocal.

Le trajet d'un appel à travers votre bot

À chaque tour de conversation :

  1. L'appelant parle ; Manivox transcrit la parole en temps réel (STT).
  2. La phrase transcrite est envoyée en POST à votre point de terminaison.
  3. Votre bot streame sa réponse en événements SSE.
  4. Manivox convertit la réponse en voix au fil des tokens (TTS) — l'appelant commence à entendre la réponse avant même que votre bot ait fini de l'écrire.
Appelant STT Voix → texte Votre chatbot Endpoint SSE externe data: {…} TTS Texte → voix

La latence se joue chez vous. Manivox streame votre réponse à l'appelant dès qu'elle arrive : ce qui compte, c'est le délai jusqu'à votre premier token, pas la réponse complète. Visez le premier événement SSE en moins d'une seconde — au téléphone, chaque seconde supplémentaire est un blanc.

En quoi cela diffère des autres intégrations

Les intégrations Manivox se répartissent en deux familles. Les Web Services et Composio fournissent au LLM de l'agent des outils qu'il peut invoquer en cours de conversation, le LLM reste maître du dialogue. Un fournisseur Chatbot fait l'inverse : il devient le cerveau d'un nœud Chatbot, où un bot externe répond à tout le tour à la place du LLM intégré.

IntégrationRôle dans la conversationQui répond à l'appelant
Web Services Un outil que l'agent appelle en cours de conversation Le LLM de l'agent (utilise le résultat de l'outil)
Composio Un outil que l'agent appelle en cours de conversation Le LLM de l'agent (utilise le résultat de l'action)
Fournisseur Chatbot Le cerveau d'un nœud Chatbot Le bot externe (sa réponse est restituée telle quelle)

Consultez la vue d'ensemble des intégrations pour comparer tous les types d'intégration.

Configurer un fournisseur

Ajout d'un fournisseur Chatbot SSE : endpoint, format, mapping et délégation aux comptes

Les fournisseurs chatbot sont gérés par votre organisation, et non par un administrateur de la plateforme. Dans le tableau de bord, allez dans Paramètres → Fournisseurs (l'onglet Fournisseurs est accessible aux administrateurs de l'organisation), cliquez sur Ajouter un fournisseur et choisissez le type Chatbot SSE. L'URL du point de terminaison SSE est l'URL du chatbot qui accepte les requêtes POST et retourne un flux SSE de texte (par exemple https://chatbot.example.com/api/chat).

Les autres champs indiquent à Manivox comment dialoguer avec ce point de terminaison :

ChampObjet
Format Choisissez Personnalisé (SSE clé/valeur) ou OpenAI Chat (flux) (un point de terminaison chat/completions en streaming compatible OpenAI). Les mappages de champs ci-dessous ne s'appliquent qu'au format Personnalisé.
Champ message Nom du champ JSON pour le message utilisateur dans le corps POST. Par défaut message. (Format personnalisé uniquement.)
Champ texte Nom du champ JSON pour extraire les tokens de texte de chaque événement SSE. Par défaut text. (Format personnalisé uniquement.)
Marqueur de fin Valeur SSE qui signale la fin du flux. Par défaut [DONE].
Champs supplémentaires (JSON) Objet JSON optionnel fusionné dans le corps de chaque requête POST, par exemple {"bot_id": "my-bot"}.

Les champs de mappage (champ message, champ texte) ne s'appliquent qu'au format Personnalisé. Avec OpenAI Chat, la forme des requêtes et des réponses suit la convention de streaming chat/completions d'OpenAI ; ces mappages sont donc inutiles.

Le contrat du point de terminaison

Voici ce que votre endpoint doit accepter et renvoyer. Chaque requête est un POST HTTP avec Content-Type: application/json et Accept: text/event-stream ; si vous avez renseigné une clé API sur le fournisseur, elle est envoyée en Authorization: Bearer <clé>. La réponse doit être un flux SSE (lignes data:), clos par un événement final data: [DONE] (le marqueur de fin est configurable). Votre bot dispose de 60 secondes maximum pour streamer un tour.

Format Personnalisé

Manivox envoie uniquement la dernière phrase de l'appelant, accompagnée d'un identifiant de session stable — c'est votre bot qui conserve le contexte de la conversation, indexé sur cet identifiant, identique pendant toute la durée de l'appel :

POST https://chatbot.example.com/api/chat
{
  "message": "Je voudrais changer mon adresse de livraison",
  "session_id": "clx123abc456"
}

Les noms de champs sont ceux configurés sur le fournisseur (message et session_id par défaut ; le champ de session est toujours session_id), et les champs supplémentaires sont fusionnés dans ce corps. Votre bot répond avec un événement SSE par fragment de texte ; le texte est lu dans le champ texte configuré (text par défaut) :

data: {"text": "Bien sûr."}
data: {"text": " Quelle est la nouvelle"}
data: {"text": " adresse ?"}
data: [DONE]

Une ligne SSE data: qui n'est pas du JSON valide est restituée telle quelle : un flux en texte brut fonctionne donc aussi.

Format OpenAI Chat

Manivox envoie une requête de streaming chat/completions standard portant l'historique complet de la conversation du nœud (les messages système sont retirés — votre bot définit son propre comportement), et lit la réponse dans la forme de streaming standard (choices[0].delta.content, terminé par data: [DONE]) :

POST https://chatbot.example.com/v1/chat/completions
{
  "messages": [
    {"role": "user", "content": "Je voudrais changer mon adresse de livraison"},
    {"role": "assistant", "content": "Bien sûr. Quelle est la nouvelle adresse ?"},
    {"role": "user", "content": "12 rue des Roses à Lyon"}
  ],
  "stream": true
}

Les tours Chatbot n'ont pas de tool calling : votre bot reçoit du texte et renvoie du texte. Si la conversation doit déclencher des actions (réservations, recherches…), gérez-les dans votre bot, ou faites transiter le flux vers un nœud Agent avec des Web Services.

Écrire des réponses adaptées à la voix

Une réponse agréable à lire dans une fenêtre de chat peut être pénible au téléphone. Quand votre bot sert un appel vocal :

  • Restez court. Une ou deux phrases par tour ; les monologues invitent l'appelant à couper la parole.
  • Aucune mise en forme. Pas de Markdown, de listes à puces, d'émojis ni d'URL — tout ce que vous streamez est prononcé littéralement.
  • Du texte prononçable. Écrivez les nombres, dates et références comme ils doivent être dits.
  • Streamez tôt. Envoyez les premiers tokens dès que possible plutôt que d'attendre la réponse complète.

Déléguer à des comptes

Lorsque le type est Chatbot SSE, la même fenêtre de fournisseur affiche une liste Comptes, une case à cocher par compte client de votre organisation. Cela permet de partager un même chatbot externe avec un ou plusieurs clients précis. Si vous ne cochez aucun compte, le fournisseur est à l'échelle de l'organisation, disponible pour tous les comptes ; si vous en cochez un ou plusieurs, il est restreint à ces comptes précis. Cette délégation est enregistrée sur le fournisseur lui-même, et à chaque appel, la plateforme résout le fournisseur chatbot de l'agent en fonction de son propre compte.

Vous pouvez modifier la délégation à tout moment en éditant le fournisseur : la liste de cases se pré-remplit avec les comptes auxquels il est actuellement délégué. Si votre organisation n'a pas encore de compte client, le fournisseur est simplement à l'échelle de l'organisation.

Les fournisseurs chatbot n'apparaissent pas dans la liste Connexions d'un compte. Ils n'apparaissent que dans la palette de nœuds de l'éditeur de flux, comme options de nœud de départ Chatbot, pour les comptes auxquels ils sont délégués.

Utilisation dans un flux

Dans l'éditeur de flux visuel, le nœud de départ Chatbot apparaît une fois par fournisseur chatbot disponible. Faites glisser celui que vous voulez sur le canevas : le fournisseur est lié au moment où vous déposez le nœud.

Ouvrez la fenêtre du nœud et vous y trouverez :

  • Fournisseur Chatbot (onglet Général), en lecture seule. Il est défini lors de l'ajout du nœud. Pour utiliser un autre fournisseur, ajoutez un nouveau nœud Chatbot.
  • Message d'accueil (optionnel), restitué par TTS au début de l'appel, avant la première prise de parole de l'utilisateur.
  • Des réglages TTS et STT propres au nœud : laissez-les vides pour hériter des valeurs par défaut du workflow.
  • Des routes de sortie : chaque route ajoute un point de sortie pour que la conversation puisse quitter le nœud chatbot et se poursuivre ailleurs dans le flux. Les nœuds Chatbot ne supportent que les routes conversationnelles (un classificateur observe la conversation) ; les routes basées sur des règles n'y sont pas disponibles.

Pour la référence complète des nœuds, voir Nœuds.