Integraciones
Conecta la API de búsqueda de documentación de Jamdesk con Intercom, Zendesk, Slack y chatbots personalizados: guía paso a paso por integración.
Esta guía muestra cómo conectar la API de búsqueda de documentación a las herramientas más habituales: Intercom, Zendesk, Slack y chatbots personalizados.
Intercom (Fin AI Agent)
El Fin AI Agent de Intercom admite Data Connectors: fuentes de búsqueda externas que Fin consulta junto con tus artículos de Intercom. Conecta la API de búsqueda de documentación para que Fin pueda responder preguntas directamente desde tu documentación de Jamdesk.
En el dashboard de Jamdesk, ve a Project Settings → API Keys y haz clic en Generate Key. Ponle el nombre «Intercom Fin» y copia la clave jd_live_ (40 caracteres en total).
En Intercom, ve a AI Agent → Data Sources → Add Source → API.
Introduce los siguientes datos:
| Campo | Valor |
|---|---|
| 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 |
Usa la herramienta de prueba integrada de Intercom para enviar una consulta de ejemplo. Comprueba que Fin devuelve pasajes relevantes de tu documentación.
Activa el conector de datos en la configuración de Fin. A partir de ahora, Fin citará tu documentación al responder preguntas de los clientes.
Fin respeta el campo score, por lo que los resultados con mayor puntuación aparecen primero en sus respuestas. Los pasajes con una puntuación inferior a 0.7 normalmente no se utilizan.
Zendesk (Servidor MCP)
Las funciones de IA de Zendesk admiten servidores MCP como fuentes de conocimiento. Usa el servidor MCP integrado de Jamdesk para conectar tu documentación con los agentes de IA de Zendesk sin necesidad de código personalizado.
Tu servidor MCP está disponible en https://your-project.jamdesk.app/_jd/mcp. No se necesita ninguna clave de API para el servidor MCP; usa la documentación pública de tu proyecto.
En el Zendesk Admin Center, ve a AI Agents → Knowledge Sources → Add MCP Server.
Pega la URL de tu servidor MCP: https://your-project.jamdesk.app/_jd/mcp
Zendesk mostrará las herramientas disponibles (searchDocs, getPage). Confirma que se detectan ambas herramientas y, después, guarda los cambios.
El servidor MCP expone el mismo índice de búsqueda que la API de búsqueda de documentación. Usa la API de búsqueda de documentación (con una clave jd_live_) cuando necesites acceso autenticado, límites de solicitudes por clave o control de revocación.
Chatbots personalizados
Añade búsqueda en la documentación a cualquier chatbot o aplicación web con una simple llamada fetch. CORS está habilitado, por lo que los clientes basados en el navegador pueden llamar a la API directamente, sin un proxy de 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("---");
});
Crear una herramienta de agente de IA
Pasa los resultados de búsqueda como contexto a un modelo de lenguaje para generar respuestas fundamentadas:
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 de Slack
Crea un comando de barra /docs de Slack que busque en tu documentación y publique los resultados en cualquier 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");
})();
Define JAMDESK_API_KEY en las variables de entorno de tu aplicación de Slack. Nunca incluyas la clave directamente en el código.
Alojamiento en subruta (Cloudflare Worker)
Si usas el alojamiento en subruta para servir tu documentación en una ruta de tu dominio (/docs de forma predeterminada, o una subruta personalizada como /help), la ruta /_api también debe proxificarse a través de tu Cloudflare Worker, junto con la ruta de tu documentación.
Añade /_api al array PROXY_PATHS de tu worker, usando el prefijo de ruta que hayas configurado en el dashboard:
const PROXY_PATHS = [
"/docs", // or your custom subpath, e.g. "/help"
"/_jd",
"/_api", // Add this line
];
Esto garantiza que las solicitudes de búsqueda a yoursite.com/_api/search (o yoursite.com/help/_api/search, si usas una subruta personalizada) se reenvíen a tu sitio de documentación de Jamdesk.
La ruta /_api requiere autenticación mediante tu clave de API jd_live_, independientemente de cómo se enrute la solicitud. Proxificar a través de Cloudflare no evita la autenticación.
