Intégrer l’agent commercial dans votre logiciel de chat ou de ticketsTous les articles

Intégrer l’agent commercial dans votre logiciel de chat ou de tickets

Tout le monde ne veut pas d’un widget tiers. Ce cas montre comment un éditeur intègre l’agent à son propre système sans lui confier les commandes.

Publié: 2026-09-12Temps de lecture: 5 minAPI tapinomahub & processus
API & processusAPIAftermarket automobileMarketplacesCommerce de pièces

Un éditeur exploite pour des négociants en pièces son propre système de tickets et de chat. Les clients doivent obtenir des réponses plus vite, mais personne ne veut qu’un modèle de langage modifie seul une adresse ou envoie une étiquette de retour. La question n’est donc pas de répondre automatiquement, mais de savoir qui peut agir.

L’agent formule, votre système agitEntrée : votre propre système de chat ou de tickets, qui veut des réponses mais agir lui-même 1. Lire le contrat (GET /agent/capabilities): actionTypes, intents et limits — lus à l’intégration au lieu d’être codés en dur 2. Créer la conversation (POST /agent/conversations): profileId obligatoire, en option channel et threadKey ; en retour conversationId et greeting 3. Exécuter un tour (POST /agent/conversations/{conversationId}/messages): reply et actions ; requiresConfirmation attend votre confirmation au tour suivant 4. Ajouter sans tour (POST /agent/conversations/{conversationId}/ingest): author end_user ou note — enregistré sans solliciter le modèle 5. Clore la conversation (POST /agent/conversations/{conversationId}/close): outcome comme sold, not_sold ou handed_over, avec orderRef Sortie : les réponses de l’agent, les actions de votre système — votre système confirme au tour suivant, via confirmations, les actions portant requiresConfirmation L’agent n’exécute pas lui-même les actions. Il les propose ; résultat et confirmation reviennent au tour suivant comme toolResults et confirmations.L’agent formule, votre système agitEntrée : votre propre système de chat ou de tickets, qui veut des réponses mais agir lui-même01Lire le contratGET /agent/capabilitiesactionTypes, intents et limits — lus à l’intégration au lieu d’être codés en dur02Créer la conversationPOST /agent/conversationsprofileId obligatoire, en option channel et threadKey ; en retour conversationId et greeting03Exécuter un tourPOST /agent/conversations/{conversationId}/messagesreply et actions ; requiresConfirmation attend votre confirmation au tour suivant04Ajouter sans tourPOST /agent/conversations/{conversationId}/ingestauthor end_user ou note — enregistré sans solliciter le modèle05Clore la conversationPOST /agent/conversations/{conversationId}/closeoutcome comme sold, not_sold ou handed_over, avec orderRefSortie : les réponses de l’agent, les actions de votre système — votre système confirme au toursuivant, via confirmations, les actions portant requiresConfirmationL’agent n’exécute pas lui-même les actions. Il les propose ; résultat et confirmation reviennent au tour suivantcomme toolResults et confirmations.
Cinq appels du contrat à la clôture. Les actions arrivent comme propositions et reviennent comme résultats.

L’interface Hub de l’agent sépare nettement les deux : un tour renvoie la réponse et une liste d’actions que votre système doit exécuter. Ce qui porte requiresConfirmation n’a lieu que si votre système le confirme au tour suivant. L’agent formule, votre système agit.

SurfaceRôles
Agent commercialÉditeur de logiciels, Plateforme et marketplace, Commerce de pièces

Ce que ce cas suppose

  • Un profil configuré. POST /agent/conversations exige un profileId ; sans profil, ni instruction, ni ton, ni permissions.
  • Vos propres outils pour les actions. Ce que l’agent propose, votre système doit pouvoir l’exécuter — suivi d’envoi, changement d’adresse, étiquette de retour.
  • Un endroit pour recueillir les confirmations. Une action avec requiresConfirmation attend un oui explicite.
  • La clé API côté serveur. Cette interface est destinée à votre backend, non au navigateur du client.

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 le contratGET /agent/capabilitiesactionTypes, intents et limits — lus à l’intégration au lieu d’être codés en dur
Créer la conversationPOST /agent/conversationsprofileId obligatoire, en option channel et threadKey ; en retour conversationId et greeting
Exécuter un tourPOST /agent/conversations/{conversationId}/messagesreply et actions ; requiresConfirmation attend votre confirmation au tour suivant
Ajouter sans tourPOST /agent/conversations/{conversationId}/ingestauthor end_user ou note — enregistré sans solliciter le modèle
Clore la conversationPOST /agent/conversations/{conversationId}/closeoutcome comme sold, not_sold ou handed_over, avec orderRef

Pourquoi chaque étape est nécessaire

  1. Lire le contrat. GET /agent/capabilities indique formats, canaux, actionTypes, intents et limits. Le contrat recommande expressément de le lire une fois à l’intégration plutôt que de coder les limites en dur — sinon votre intégration vieillit en silence à la prochaine extension.
  2. Créer la conversation. POST /agent/conversations exige profileId et prend en option, entre autres, channel, threadKey, subject et externalRef. Le contrat ne décrit pas l’effet de threadKey à la création ; GET /agent/inbox/conversations se filtre par threadKey comme clé de fil exacte.
  3. Exécuter le tour. POST /agent/conversations/{conversationId}/messages renvoie reply, intent, needsHuman, findings et actions. Chaque action porte un typecustomer_tool, hub_call, handoff ou request_photo — et, le cas échéant, requiresConfirmation. Les résultats reviennent au tour suivant en toolResults, les confirmations en confirmations.
  4. Ajouter sans tour. POST /agent/conversations/{conversationId}/ingest enregistre un message ou une note interne avec author end_user ou note, sans solliciter le modèle. C’est la voie pour les conversations qu’un collègue mène.
  5. Clore la conversation. POST /agent/conversations/{conversationId}/close prend un outcome — par exemple sold, not_sold, handed_over ou spam — et en option orderRef. La clôture n’est pas une formalité : elle seule permet d’évaluer ce que l’agent a réellement produit.
Confirmer une action proposée au tour suivant
curl -X POST \
  -H 'X-Api-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{"confirmations":[{"actionId":"<actionId>","confirmed":true}]}' \
  'https://api.tapinomahub.com/hub/index.php/agent/conversations/<conversationId>/messages'

Ce que l’on obtient

Au final, votre système répond plus vite sans que l’agent modifie jamais lui-même une commande. Chaque action passe par vos outils, chaque action sensible par une confirmation — et chaque conversation se termine par un résultat exploitable.

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

L’agent exécute-t-il lui-même les actions ?

Non. Il les fournit comme propositions dans actions. Votre système les exécute et renvoie le résultat au tour suivant en toolResults.

À quoi sert ingest s’il y a des tours ?

Aux messages auxquels le modèle ne doit pas répondre — par exemple quand un collègue mène la conversation ou pour une note interne. Ces messages ne sollicitent pas le modèle.

Dois-je maintenir moi-même des limites comme la longueur des messages ?

Non. Elles figurent dans GET /agent/capabilities sous limits. Lisez-les à l’intégration au lieu de les coder en dur.