Integrationen
Verbinden Sie die Jamdesk Docs Search API mit Intercom, Zendesk, Slack und eigenen Chatbots. Schritt-für-Schritt-Anleitungen für jede Integration.
Diese Anleitung zeigt, wie Sie die Docs Search API mit den gängigsten Tools verbinden: Intercom, Zendesk, Slack und eigenen Chatbots.
Intercom (Fin AI Agent)
Der Fin AI Agent von Intercom unterstützt Data Connectors: externe Suchquellen, die Fin zusätzlich zu Ihren Intercom-Artikeln abfragt. Verbinden Sie die Docs Search API, damit Fin Fragen anhand Ihrer Jamdesk-Dokumentation beantworten kann.
Gehen Sie im Jamdesk-Dashboard zu Project Settings → API Keys und klicken Sie auf Generate Key. Benennen Sie den Schlüssel „Intercom Fin“ und kopieren Sie den jd_live_-Schlüssel (insgesamt 40 Zeichen).
Gehen Sie in Intercom zu AI Agent → Data Sources → Add Source → API.
Geben Sie die folgenden Details ein:
| Field | Value |
|---|---|
| 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 |
Verwenden Sie das integrierte Testwerkzeug von Intercom, um eine Beispielanfrage zu senden. Prüfen Sie, ob Fin relevante Passagen aus Ihrer Dokumentation zurückgibt.
Aktivieren Sie den Data Connector in Ihrer Fin-Konfiguration. Fin zitiert Ihre Dokumentation nun in seinen Antworten auf Kundenfragen.
Fin berücksichtigt das Feld score. Ergebnisse mit höherem Score erscheinen in seinen Antworten zuerst. Passagen mit einem Score unter 0,7 werden in der Regel nicht verwendet.
Zendesk (MCP Server)
Die KI-Funktionen von Zendesk akzeptieren MCP-Server als Wissensquellen. Verbinden Sie Ihre Dokumentation über den integrierten MCP-Server von Jamdesk mit den KI-Agenten von Zendesk. Es ist kein eigener Code erforderlich.
Ihr MCP-Server ist unter https://your-project.jamdesk.app/_jd/mcp erreichbar. Der MCP-Server benötigt keinen API-Schlüssel. Er verwendet die öffentliche Dokumentation Ihres Projekts.
Gehen Sie im Zendesk Admin Center zu AI Agents → Knowledge Sources → Add MCP Server.
Fügen Sie Ihre MCP-Server-URL ein: https://your-project.jamdesk.app/_jd/mcp
Zendesk listet die verfügbaren Tools auf (searchDocs, getPage). Bestätigen Sie, dass sie angezeigt werden, und speichern Sie.
Der MCP-Server stellt denselben Suchindex wie die Docs Search API bereit. Verwenden Sie die Docs Search API (mit einem jd_live_-Schlüssel), wenn Sie authentifizierten Zugriff, ratenbegrenzung pro Schlüssel oder die Möglichkeit zum Widerrufen benötigen.
Eigene Chatbots
Fügen Sie der Dokumentationssuche jedem Chatbot oder jeder Web-App mit einem standardmäßigen fetch-Aufruf hinzu. CORS ist aktiviert. Browserbasierte Clients können die API direkt aufrufen, ohne einen Backend-Proxy.
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("---");
});
Tool für einen AI-Agenten erstellen
Übergeben Sie Suchergebnisse als Kontext an ein Sprachmodell, um fundierte Antworten zu erzeugen:
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;
}
Slack-Bots
Erstellen Sie einen Slack-Slash-Befehl /docs, der Ihre Dokumentation durchsucht und die Ergebnisse in einen beliebigen Kanal postet.
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");
})();
Setzen Sie JAMDESK_API_KEY in den Umgebungsvariablen Ihrer Slack-App. Hinterlegen Sie den Schlüssel niemals direkt im Code.
Hosting in Unterpfaden (Cloudflare Worker)
Wenn Sie das Subpfad-Hosting verwenden, um Ihre Dokumentation unter einem Pfad Ihrer Domain bereitzustellen (standardmäßig /docs oder einem eigenen Subpfad wie /help), leiten Sie die Route /_api ebenfalls über Ihren Cloudflare Worker weiter.
Fügen Sie /_api dem Array PROXY_PATHS in Ihrem Worker hinzu, mit dem Pfadpräfix, das Sie im Dashboard konfiguriert haben:
const PROXY_PATHS = [
"/docs", // or your custom subpath, e.g. "/help"
"/_jd",
"/_api", // Add this line
];
Suchanfragen an yoursite.com/_api/search (bzw. yoursite.com/help/_api/search bei einem eigenen Subpfad) erreichen dann Ihre Jamdesk-Dokumentationsseite.
Die Route /_api erfordert unabhängig vom Routing eine Authentifizierung über Ihren jd_live_-API-Schlüssel. Das Weiterleiten über Cloudflare umgeht die Authentifizierung nicht.
