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 :
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.