API Chat

Écrit par Stanislas

Dernière mise à jour Il y a 18 jours


Envoyez des messages à votre agent IA et recevez des réponses. Apprenez comment envoyer des messages avec streaming, utiliser des requêtes synchrones et intégrer le chat en temps réel dans votre application.

Aperçus

Envoyez des messages à votre agent Swiftask et recevez des réponses générées par l'IA. Vous pouvez choisir entre des réponses en streaming (caractère par caractère en temps réel) ou des requêtes synchrones (attendre la réponse complète).

Ce guide couvre comment envoyer et recevoir des messages. Pour les abonnements aux événements en temps réel, consultez le guide Abonnements en temps réel.


Prérequis

Avant d'envoyer des messages, assurez-vous d'avoir :

  • Authentifié avec l'API — Suivez le guide Introduction à l'API pour obtenir votre accessToken et workspaceId

  • Configuré votre client GraphQL — Configurez Apollo Client avec les en-têtes d'authentification appropriés

  • Créé ou disposez d'un ID de session — Utilisez le starterSessionId de l'authentification, ou créez une nouvelle session

Guide étape par étape

Étape 1 : Importer GraphQL et Apollo Client

import { gql } from '@apollo/client'; 

Étape 2 : Envoyer un message avec réponse en streaming

Envoyez un message et déclenchez une réponse IA qui s'affiche en temps réel.

const SEND_MESSAGE = gql`
  mutation SendNewMessage($newMessageData: NewMessageInput!) {
    sendNewMessage(newMessageData: $newMessageData) {
      id
      message
      createdAt
      sessionId
      isBotReply
    }
  }
`;

const sendMessage = async (client, sessionId, messageText) => {
  const { data } = await client.mutate({
    mutation: SEND_MESSAGE,
    variables: {
      newMessageData: {
        message: messageText,
        sessionId,
        isForAiReply: true, // Cela déclenche une réponse IA
      },
    },
  });

  return data.sendNewMessage;
};

// Utilisation
const message = await sendMessage(client, 67890, 'Quel est votre tarif ?');
console.log('Message envoyé :', message.id);

Étape 3 : Écouter la réponse en streaming

Pour voir la réponse de l'IA au fur et à mesure qu'elle s'affiche en temps réel, abonnez-vous aux fragments de messages.

const MESSAGE_STREAM = gql`
  subscription OnMessageStream($sessionId: Float!) {
    onMessageStream(sessionId: $sessionId) {
      messageChunk
      botResponseMessageId
      isStoppable
    }
  }
`;

let fullMessage = '';

const subscription = client.subscribe({
  query: MESSAGE_STREAM,
  variables: { sessionId },
});

subscription.subscribe({
  next: ({ data }) => {
    fullMessage += data.onMessageStream.messageChunk;
    console.log('Réponse :', fullMessage);
  },
  error: (error) => console.error(error),
  complete: () => console.log('Réponse terminée'),
});

Envoi de messages

Envoyer un nouveau message

Envoyez un message à la session. Définissez isForAiReply: true pour déclencher une réponse IA.

Mutation GraphQL :

mutation SendNewMessage($newMessageData: NewMessageInput!) {
  sendNewMessage(newMessageData: $newMessageData) {
    id
    message
    createdAt
    sessionId
    isBotReply
  }
}

Paramètres d'entrée :

Paramètre

Type

Requis

Description

message

string

Oui

Le texte du message (max 5000 caractères)

sessionId

number

Oui

L'ID de session

isForAiReply

boolean

Non

Définir à true pour obtenir une réponse IA (défaut : false)

Requêtes synchrones

Envoyer un message et attendre la réponse complète

Pour un simple Q&R sans streaming, utilisez le point de terminaison synchrone. L'API retourne la réponse complète immédiatement.

const SYNC_BOT_REQUEST = gql`
  mutation SyncBotRequest($newMessageData: NewMessageInput!) {
    syncBotRequest(newMessageData: $newMessageData) {
      text
      isBotError
      sessionId
      sources
    }
  }
`;

const syncMessage = async (client, sessionId, message) => {
  const { data } = await client.mutate({
    mutation: SYNC_BOT_REQUEST,
    variables: {
      newMessageData: {
        message,
        sessionId,
      },
    },
  });

  return data.syncBotRequest;
};

// Utilisation
const response = await syncMessage(client, 67890, 'Combien font 2 + 2 ?');
console.log('Réponse du bot :', response.text);
console.log('Sources utilisées :', response.sources);

Quand l'utiliser :

  • Simple Q&R sans besoin de streaming

  • Traitement par lot de messages

  • Quand vous avez besoin de la réponse complète avant de continuer

Cas d'utilisation pratiques

Interface de chat en temps réel

Créez une interface de chat où les utilisateurs voient les réponses s'afficher caractère par caractère.

Réponses rapides (sans streaming)

Obtenez des réponses instantanées pour les questions simples sans attendre le streaming.

Conversation multi-tours

Envoyez plusieurs messages en séquence et affichez toutes les réponses.

Conseils et bonnes pratiques

  • Toujours définir isForAiReply: true quand vous voulez une réponse IA. Sans cela, le message est stocké mais aucune réponse n'est générée.

  • Utiliser le streaming pour une meilleure UX — Le streaming affiche les réponses caractère par caractère, donnant aux utilisateurs un retour immédiat.

  • Valider l'entrée avant d'envoyer — Vérifiez la longueur du message (max 5000 caractères) et supprimez les espaces inutiles.

  • Gérer les erreurs correctement — Toujours envelopper les mutations dans des blocs try-catch.

  • Organiser les ID de session — Si votre application prend en charge plusieurs conversations, suivez clairement les ID de session.


Prêt à envoyer votre premier message ? Utilisez le guide étape par étape ci-dessus pour envoyer un message et recevoir une réponse de votre agent Swiftask.