Mode test

Appels et campagnes simulés pour les clés `inf_test_` : comment ils se déroulent, ce qui est simulé, ce qui reste réel et où ils n'apparaissent pas.

Une clé inf_test_ appelle les mêmes routes qu'une clé live, avec les mêmes formes de requête et de réponse. Tout ce qui coûte de l'argent ou atteint une personne est simulé à la place : vous pouvez construire et tester votre intégration sans passer de vrai appel, sans minutes payantes et sans forfait payant.

Appels simulés

POST /v1/calls avec une clé de test crée un appel avec livemode: false et répond 201 aussitôt. Rien n'est envoyé à un opérateur : la liste d'opposition, la plage d'appel, le pays et les limites de simultanéité et par heure ne sont pas appliqués, et runAt est ignoré. Le planificateur joue ensuite l'appel, en une minute environ puis en quelques secondes :

  1. initiated, à la création de l'appel.
  2. ringing.
  3. ongoing, avec startedAt.
  4. completed, avec endedAt, une durée entre 30 et 89 secondes, une transcription fictive, un résumé fictif et des données collectées fictives (appointment_date, reason), successful: true et le résultat answered_human.

Lisez l'appel avec GET /v1/calls/{id} et sa transcription avec GET /v1/calls/{id}/transcript. Un appel simulé n'a pas d'enregistrement.

Campagnes simulées

POST /v1/campaigns avec une clé de test crée une campagne avec livemode: false. Elle est gratuite : ni forfait payant ni minutes du forfait ne sont requis, contrairement à une campagne live. Une campagne de test appelle au plus 100 contacts. Le moteur de campagnes l'exécute comme une campagne live (simultanéité, relances, compteurs de progression, statut completed), mais chaque contact est un appel simulé qui aboutit toujours.

Webhooks

Les événements causés par une activité simulée portent livemode: false : call.started, call.ended, call.transcript_ready, call.analysis_ready, ainsi que campaign.started, campaign.completed et campaign.cancelled. Vos points de terminaison les reçoivent comme les autres ; filtrez sur livemode pour garder le trafic de test hors de vos données de production.

Listes et objets isolés

  • GET /v1/calls et GET /v1/campaigns renvoient les objets du même mode que la clé : une clé de test liste les objets simulés, une clé live les objets réels. Le paramètre optionnel livemode n'est accepté qu'avec le mode de la clé : une clé de test qui envoie livemode=true (ou une clé live qui envoie livemode=false) reçoit 400 avec invalid_query, car une clé ne lit jamais les objets de l'autre mode.
  • Chaque appel et chaque campagne porte un champ livemode.
  • Un appel, une transcription, un enregistrement ou une campagne de l'autre mode répond 404 not_found : une clé de test ne peut jamais lire ni annuler une vraie campagne.
  • GET /v1/tasks et DELETE /v1/tasks/{id} ne sont pas disponibles avec une clé de test : elles répondent 403 avec test_mode_not_supported. Les tâches planifiées n'ont pas de mode test : une clé de test pourrait sinon lister ou annuler un vrai appel planifié. Utilisez une clé live pour ces deux routes.

Widget d'appel web

POST /v1/web-call-sessions avec une clé de test émet un jeton avec livemode: false. Quand le widget ou POST /api/v1/web-calls l'utilise, rien n'est connecté et aucun forfait n'est exigé : un appel avec livemode: false est créé et joué comme les autres appels simulés, et la réponse est { simulated: true, livemode: false, callId, maxSeconds }. Les clés publiables (inf_pub_) n'ont pas de mode test.

Ce qui reste réel

Les contacts agissent sur les données réelles de votre organisation, même avec une clé de test : un contact créé avec une clé de test existe pour de vrai. Les événements contacts (contact.created, contact.updated, contact.deleted) émis pour ces écritures portent livemode: false à cause de la clé, mais livemode: false ne signifie pas qu'aucune écriture n'a eu lieu : la donnée a bien été créée, modifiée ou supprimée. N'utilisez pas livemode pour décider d'appliquer ou non un événement contact de votre côté. Les bases de connaissances sont différentes, car l'indexation coûte de l'argent : avec une clé de test, POST /v1/knowledge-bases/{id}/documents valide la requête, n'écrit rien, renvoie un documentId fictif et envoie un événement knowledge.document_ready avec livemode: false et un nombre de fragments fictif. Le document n'existe pas ensuite.

Non comptés

Les appels et campagnes simulés sont écartés de l'analytique du tableau de bord, des statistiques d'agent, des alertes de supervision, du résumé hebdomadaire, de la consommation et de la facturation, et des limites de simultanéité et par heure de vos appels live. Aucune minute n'est jamais décomptée.