🎓 Comment intégrer le lecteur de conversation Linguineo dans votre environnement d’apprentissage
Le lecteur d’IA conversationnelle de Linguineo permet aux apprenants de s’entraîner à parler dans des situations réelles, directement depuis votre plateforme. Dans ce tutoriel, nous vous expliquons pas à pas comment intégrer le lecteur dans votre LMS ou votre environnement d’apprentissage.
🔐 1. Configurer le fournisseur d’identité et obtenir le jeton d’accès
Important : en production, vous devez utiliser votre propre fournisseur d’identité. Vous devrez nous communiquer, chez Linguineo, l’URL de votre ensemble JWKS. Notre équipe la configurera sur nos API : vous ne pouvez pas effectuer cette étape vous-même. Pour simplifier, ce tutoriel montre l’intégration avec le fournisseur d’identité Keycloak de Linguineo.
Commencez par authentifier vos utilisateurs et obtenir un jeton d’accès pour le lecteur.
Utilisez le fournisseur d’identité de Linguineo (uniquement pour des tests ou une démo) :
- Endpoint d’autorisation :
https://keycloak.linguineo.com/auth/realms/moodle/protocol/openid-connect/auth - Endpoint de jeton :
https://keycloak.linguineo.com/auth/realms/moodle/protocol/openid-connect/token - ID client :
moodle
Flux de connexion de base en JavaScript :
Ajoutez le bouton suivant à votre page HTML :
<button id="login">Login with OAuth</button>Ajoutez ensuite le script JavaScript suivant. Ce code transmet le jeton d’accès obtenu à l’élément portant l’id linguineo-conversation de votre page (que nous ajouterons dans les étapes suivantes) :
const clientId = 'moodle';
const authorizationUrl = 'https://keycloak.linguineo.com/auth/realms/moodle/protocol/openid-connect/auth';
const tokenUrl = 'https://keycloak.linguineo.com/auth/realms/moodle/protocol/openid-connect/token';
document.getElementById('login').onclick = () => {
const authUrl = `${authorizationUrl}?response_type=code&client_id=${clientId}&redirect_uri=${encodeURIComponent(window.location.href)}&scope=openid`;
window.location.href = authUrl;
};
const params = new URLSearchParams(window.location.search);
if (params.has('code')) {
const code = params.get('code');
fetch(tokenUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'authorization_code',
code,
redirect_uri: window.location.href,
client_id: clientId,
}),
})
.then(res => res.json())
.then(data => {
const accessToken = data.access_token;
document.getElementById('linguineo-conversation').setAttribute('access-token', accessToken);
});
}Pour tester la connexion avec le fournisseur d’identité de Linguineo, vous pouvez utiliser l’utilisateur tester01 et le mot de passe testing2025
🧩 2. Importer les fichiers JavaScript nécessaires
Pour utiliser le composant linguineo-conversation, ajoutez les balises script suivantes à votre page (généralement tout en bas) :
<script nomodule src="https://cdn.linguineo.com/linguineo-conversation/1.0.0/conversation-webcomponents-es5.js"></script>
<script type="module" src="https://cdn.linguineo.com/linguineo-conversation/1.0.0/conversation-webcomponents-es2015.js"></script>Si vous préférez ne pas faire référence à des URL de Linguineo, vous pouvez copier ces fichiers js et css dans votre propre environnement. Vous pouvez les télécharger ici.
🧱 3. Ajouter le composant <linguineo-conversation> à la page
Prévoyez un conteneur pour le lecteur et intégrez-y le composant avec votre configuration. La configuration du composant linguineo-conversation est décrite en détail ici.
<style>
.linguineo-conversation-container {
height: 100vh;
width: 100vw;
}
</style>
<div class="linguineo-conversation-container">
<linguineo-conversation
id="linguineo-conversation"
access-token=""
auth-method="bearer"
bot-name="Bot"
application="TEST_APP"
language="fr"
tutor-language="nl"
scenario-id="503"
answer-type="SPEAKING_WITH_INTERMEDIATE_WRITING"
show-pronunciation-feedback="false"
show-simple-corrective-feedback="false"
sound-effects-enabled="false"
additional-corrective-feedback="false"
always-wait-for-bot-to-finish-speaking="false"
enable-contextualized-grammar-corrections="false"
do-additional-pronunciation-analysis="false"
></linguineo-conversation>
</div>Veillez à mettre à jour dynamiquement l’access-token via JavaScript après la connexion (voir l’exemple de la première étape).
🛎️ 4. Écouter l’événement linguineo:end
Vous pouvez détecter le moment où un utilisateur termine une conversation :
window.addEventListener('linguineo:end', (exerciseResult) => {
console.log('Conversation finished', exerciseResult.detail);
// Handle end-of-conversation logic here
});L’objet exerciseResult possède les propriétés suivantes :
percentage: number;
needsManualEvaluation: boolean;
pointsAwarded: number;
durationInMs?: number;
taskResultInfos?: TaskResultInfo[];
purpose: string;
conversationId?: number;
exerciseSessionId?: string;🧪 Optionnel : intégration avec React et Angular
Le lecteur Linguineo s’intègre facilement aux frameworks modernes comme React et Angular. Vous pouvez transmettre l’access-token comme prop (React) ou comme input (Angular), et associer des écouteurs d’événements comme linguineo:end dans la logique de votre composant.
Pour des exemples complets et fonctionnels, y compris la gestion et le renouvellement des jetons, consultez notre dépôt GitHub :
👉 Linguineo Conversation Client Usage Example
Il contient des configurations complètes pour JavaScript pur, React et Angular.
✅ Conclusion
Vous disposez maintenant d’un composant d’IA conversationnelle entièrement fonctionnel dans votre LMS ! En production, pensez à :
- utiliser votre propre fournisseur d’identité (et non celui de Linguineo)
- communiquer l’URL de votre ensemble JWKS au support de Linguineo
- gérer le renouvellement des jetons (refresh tokens) pour éviter les sessions expirées
Des questions ou besoin d’aide pour la mise en place ? Contactez notre équipe technique : nous sommes là pour vous aider.
