Intégrations
Connectez l'API de recherche de documentation Jamdesk à Intercom, Zendesk, Slack et aux chatbots personnalisés : un guide pas à pas par intégration.
Ce guide explique comment connecter l'API de recherche de documentation aux outils les plus courants : Intercom, Zendesk, Slack et les chatbots personnalisés.
Intercom (Fin AI Agent)
Le Fin AI Agent d'Intercom prend en charge les Data Connectors : des sources de recherche externes que Fin interroge en complément de vos articles Intercom. Connectez l'API de recherche de documentation pour que Fin puisse répondre aux questions directement à partir de votre documentation Jamdesk.
Dans le dashboard Jamdesk, allez dans Project Settings → API Keys et cliquez sur Generate Key. Nommez-la « Intercom Fin » et copiez la clé jd_live_ (40 caractères au total).
Dans Intercom, allez dans AI Agent → Data Sources → Add Source → API.
Renseignez les informations suivantes :
| Champ | Valeur |
|---|---|
| Endpoint URL | https://your-project.jamdesk.app/_api/search |
| Method | POST |
| Auth header | Authorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a |
| Query field | query |
| Result path | results[*].content |
Utilisez l'outil de test intégré d'Intercom pour envoyer une requête d'exemple. Vérifiez que Fin renvoie des passages pertinents de votre documentation.
Activez le connecteur de données dans la configuration de Fin. Fin citera désormais votre documentation lorsqu'il répond aux questions des clients.
Fin respecte le champ score : les résultats les mieux notés apparaissent en premier dans ses réponses. Les passages dont le score est inférieur à 0.7 ne sont généralement pas utilisés.
Zendesk (Serveur MCP)
Les fonctionnalités IA de Zendesk prennent en charge les serveurs MCP comme sources de connaissances. Utilisez le serveur MCP intégré de Jamdesk pour connecter votre documentation aux agents IA de Zendesk, sans code personnalisé.
Votre serveur MCP est disponible à l'adresse https://your-project.jamdesk.app/_jd/mcp. Aucune clé API n'est requise pour le serveur MCP ; il utilise la documentation publique de votre projet.
Dans le Zendesk Admin Center, allez dans AI Agents → Knowledge Sources → Add MCP Server.
Collez l'URL de votre serveur MCP : https://your-project.jamdesk.app/_jd/mcp
Zendesk affichera la liste des outils disponibles (searchDocs, getPage). Vérifiez que les deux outils sont détectés, puis enregistrez.
Le serveur MCP expose le même index de recherche que l'API de recherche de documentation. Utilisez l'API de recherche de documentation (avec une clé jd_live_) lorsque vous avez besoin d'un accès authentifié, d'une limitation du débit par clé ou d'un contrôle de révocation.
Chatbots personnalisés
Ajoutez la recherche dans la documentation à n'importe quel chatbot ou application web grâce à un simple appel fetch. CORS est activé, ce qui permet aux clients basés sur le navigateur d'appeler l'API directement, sans proxy backend.
async function searchDocs(query) {
const response = await fetch(
"https://your-project.jamdesk.app/_api/search",
{
method: "POST",
headers: {
"Authorization": "Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a",
"Content-Type": "application/json",
},
body: JSON.stringify({ query, limit: 5 }),
}
);
if (!response.ok) {
const { error } = await response.json();
throw new Error(error);
}
const data = await response.json();
return data.results;
}
// Example usage
const results = await searchDocs("How do I configure a custom domain?");
results.forEach((result) => {
console.log(`[${result.score.toFixed(2)}] ${result.title}`);
console.log(result.content);
console.log(result.url);
console.log("---");
});
Créer un outil d'agent IA
Transmettez les résultats de recherche en tant que contexte à un modèle de langage pour générer des réponses fondées sur des sources :
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
async function answerFromDocs(userQuestion) {
// 1. Search your docs
const results = await searchDocs(userQuestion);
const context = results
.map((r) => `[${r.title}](${r.url})\n${r.content}`)
.join("\n\n---\n\n");
// 2. Pass context to Claude
const message = await client.messages.create({
model: "claude-sonnet-4-5-20241022",
max_tokens: 1024,
messages: [
{
role: "user",
content: `Answer the following question using only the provided documentation excerpts.
If the answer isn't in the docs, say so.
Documentation:
${context}
Question: ${userQuestion}`,
},
],
});
return message.content[0].text;
}
Bots Slack
Créez une commande slash Slack /docs qui recherche dans votre documentation et publie les résultats dans n'importe quel canal.
import { App } from "@slack/bolt";
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET,
});
app.command("/docs", async ({ command, ack, respond }) => {
await ack();
const query = command.text.trim();
if (!query) {
await respond("Usage: `/docs <your question>`");
return;
}
try {
const response = await fetch(
"https://your-project.jamdesk.app/_api/search",
{
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.JAMDESK_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ query, limit: 3 }),
}
);
const data = await response.json();
if (data.results.length === 0) {
await respond(`No results found for: _${query}_`);
return;
}
const blocks = [
{
type: "section",
text: {
type: "mrkdwn",
text: `*Results for:* _${query}_`,
},
},
{ type: "divider" },
...data.results.flatMap((result) => [
{
type: "section",
text: {
type: "mrkdwn",
text: `*<${result.url}|${result.title}>*\n${result.content}`,
},
},
{ type: "divider" },
]),
];
await respond({ blocks });
} catch (err) {
await respond(`Error searching docs: ${err.message}`);
}
});
(async () => {
await app.start(process.env.PORT || 3000);
console.log("Slack bot is running");
})();
Définissez JAMDESK_API_KEY dans les variables d'environnement de votre application Slack. Ne codez jamais la clé en dur.
Hébergement par sous-chemin (Cloudflare Worker)
Si vous utilisez l'hébergement par sous-chemin pour servir votre documentation à un chemin de votre domaine (/docs par défaut, ou un sous-chemin personnalisé comme /help), la route /_api doit elle aussi être proxifiée via votre Cloudflare Worker, en plus du chemin de votre documentation.
Ajoutez /_api au tableau PROXY_PATHS de votre worker, en utilisant le préfixe de chemin que vous avez configuré dans le dashboard :
const PROXY_PATHS = [
"/docs", // or your custom subpath, e.g. "/help"
"/_jd",
"/_api", // Add this line
];
Cela garantit que les requêtes de recherche vers yoursite.com/_api/search (ou yoursite.com/help/_api/search, si vous utilisez un sous-chemin personnalisé) sont transmises à votre site de documentation Jamdesk.
La route /_api nécessite une authentification via votre clé API jd_live_, quelle que soit la manière dont la requête est acheminée. Le passage par un proxy Cloudflare ne permet pas de contourner l'authentification.
