Arrêter l’agent commercial sans perdre un seul messageTous les articles

Arrêter l’agent commercial sans perdre un seul message

Un bouton d’arrêt n’est fiable que s’il s’actionne sans dommage collatéral. Ce cas montre ce qu’il advient des clients, des messages et des clés à l’arrêt.

Publié: 2026-09-12Temps de lecture: 5 minAPI tapinomahub & processus
API & processusAftermarket automobileAPIMarketplacesCommerce de piècesCommerce automobile

Vendredi soir : la consommation mensuelle approche du budget, et la clé de canal du widget apparaît dans le code d’une page tierce. Les deux exigent une réaction rapide, et aucun ne doit laisser les clients écrire dans le vide.

Arrêter l’agent sans perdre un seul messageEntrée : le budget s’épuise, ou une clé de canal est apparue là où elle n’a rien à faire 1. Lire la consommation (GET /agent/usage): Montants, tours, balance et budgetState — au total, par canal et par jour 2. Arrêter (POST /agent/stop): effet immédiat ; les conversations ouvertes reçoivent une fois le message de clôture 3. Continuer d’enregistrer (POST /agent/conversations/record): les nouveaux messages vont à un collègue — rien n’est perdu, rien n’est facturé 4. Changer la clé de canal (POST /agent/channels/{channelId}/web-key/rotate): nouvelle webKey, délivrée une fois ; l’ancienne cesse aussitôt d’agir 5. Révoquer l’accès (POST /agent/channels/{channelId}/credentials/revoke): avec purpose, ce seul accès ; sans purpose, tout le canal 6. Reprendre (POST /agent/resume): les tours reçoivent de nouveau une réponse dès le message suivant Sortie : un incident où aucun client n’est resté sans réponse et aucune clé n’a valu plus longtemps que nécessaire Révoquer sans purpose révoque tout le canal — un canal sans sa clé serait muet et pourtant actif.Arrêter l’agent sans perdre un seul messageEntrée : le budget s’épuise, ou une clé de canal est apparue là où elle n’a rien à faire01Lire la consommationGET /agent/usageMontants, tours, balance et budgetState — au total, par canal et par jour02ArrêterPOST /agent/stopeffet immédiat ; les conversations ouvertes reçoivent une fois le message de clôture03Continuer d’enregistrerPOST /agent/conversations/recordles nouveaux messages vont à un collègue — rien n’est perdu, rien n’est facturé04Changer la clé de canalPOST /agent/channels/{channelId}/web-key/rotatenouvelle webKey, délivrée une fois ; l’ancienne cesse aussitôt d’agir05Révoquer l’accèsPOST /agent/channels/{channelId}/credentials/revokeavec purpose, ce seul accès ; sans purpose, tout le canal06ReprendrePOST /agent/resumeles tours reçoivent de nouveau une réponse dès le message suivantSortie : un incident où aucun client n’est resté sans réponse et aucune clé n’a valu plus longtempsque nécessaireRévoquer sans purpose révoque tout le canal — un canal sans sa clé serait muet et pourtant actif.
Six appels de l’évaluation à la reprise. Aucun ne coûte un message client.

La commande de l’agent est conçue pour que l’arrêt ne casse rien : il est immédiat, les conversations ouvertes reçoivent une fois un message de clôture, et les messages entrants continuent d’être enregistrés — simplement sans réponse du modèle.

SurfaceRôles
Agent commercialCommerce de pièces, Commerce automobile, Éditeur de logiciels

Ce que ce cas suppose

  • Un message de clôture préparé. Rédigé pendant l’incident, il sera mal rédigé ; il peut être enregistré dans la commande ou passé avec l’arrêt.
  • Un collègue qui voit les messages enregistrés. Enregistrer sans boîte de réception ne fait que déplacer le problème.
  • Un déploiement capable de mettre à jour le script du widget sur-le-champ. L’ancienne clé cesse d’agir dès le changement.
  • Savoir quel accès est concerné. Une révocation ciblée ne touche que lui ; une révocation globale touche tout le canal.

Le déroulement

Le tableau indique pour chaque étape l’appel compétent et ce qui existe ensuite. La justification de l’étape figure en dessous.

La chaîne d’appels de ce cas d’usage
ÉtapeAppelCe qui existe ensuite
Lire la consommationGET /agent/usageMontants, tours, balance et budgetState — au total, par canal et par jour
ArrêterPOST /agent/stopeffet immédiat ; les conversations ouvertes reçoivent une fois le message de clôture
Continuer d’enregistrerPOST /agent/conversations/recordles nouveaux messages vont à un collègue — rien n’est perdu, rien n’est facturé
Changer la clé de canalPOST /agent/channels/{channelId}/web-key/rotatenouvelle webKey, délivrée une fois ; l’ancienne cesse aussitôt d’agir
Révoquer l’accèsPOST /agent/channels/{channelId}/credentials/revokeavec purpose, ce seul accès ; sans purpose, tout le canal
ReprendrePOST /agent/resumeles tours reçoivent de nouveau une réponse dès le message suivant

Pourquoi chaque étape est nécessaire

  1. Évaluer la situation. GET /agent/usage renvoie pour un mois les montants facturés après remboursements, tours, questions de collègues et conversations — au total, par canal et par jour —, avec balance et budgetState. On décide ainsi s’il faut arrêter tout l’agent ou si un seul canal se distingue.
  2. Arrêter. POST /agent/stop prend en option reason et closingMessage. L’arrêt est immédiat ; les conversations ouvertes reçoivent une fois le message de clôture, pour que personne n’attende sans un mot.
  3. Continuer d’enregistrer. POST /agent/conversations/record crée une conversation confiée à un collègue, enregistre le message et ne répond pas. C’est la voie prévue pour un compte arrêté ou plafonné : rien n’est perdu, rien n’est facturé.
  4. Changer la clé de canal. POST /agent/channels/{channelId}/web-key/rotate délivre la nouvelle webKey une seule fois. L’ancienne cesse aussitôt d’agir — le nouveau tag de script doit donc partir dans le même déploiement.
  5. Révoquer un accès de façon ciblée. POST /agent/channels/{channelId}/credentials/revoke avec un purpose supprime exactement un accès — par exemple mail_smtp ou ebay_refresh_token. Sans purpose, tout le canal est révoqué, car un canal sans sa clé serait muet et pourtant actif.
  6. Reprendre. POST /agent/resume relance l’exploitation ; dès le message suivant, les tours reçoivent de nouveau une réponse. Les conversations enregistrées entre-temps restent chez le collègue jusqu’à ce qu’il les rende.
Arrêter l’agent avec un message de clôture
curl -X POST \
  -H 'X-Api-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{"reason":"Monatsbudget erreicht","closingMessage":"Ein Kollege meldet sich persönlich bei Ihnen."}' \
  'https://api.tapinomahub.com/hub/index.php/agent/stop'

Ce que l’on obtient

Il reste un incident où aucun client n’est resté sans réponse, aucune clé n’a valu plus que nécessaire et aucun message n’a été perdu. L’agent tourne de nouveau, et l’intervalle est traçable dans la boîte.

Où cela figure dans la documentation

Les listes de champs contractuelles, les codes d’erreur et les réponses d’exemple se trouvent dans le contrat OpenAPI de cette surface, à l’adresse docs.tapinomahub.com (tapinoma-agent). Tous les cas d’usage classés par surface et par rôle : aperçu des cas d’usage.

Sources et références juridiques

Questions fréquentes

Qu’advient-il des messages pendant l’interruption ?

Ils sont enregistrés et vont à un collègue. Selon le contrat, rien n’est perdu et rien n’est facturé pour cet enregistrement.

Qu’advient-il des clients en train d’écrire ?

Les conversations ouvertes reçoivent une fois le message de clôture. Les nouveaux messages sont enregistrés et vont à un collègue.

Pourquoi une révocation sans purpose révoque-t-elle tout le canal ?

Parce qu’un canal sans sa clé limitée serait muet et pourtant actif. Pour remplacer un seul accès, on le nomme dans purpose.