Integraciones
Conecta la API de búsqueda de los documentos de Jamdesk con Intercom, Zendesk, Slack y chatbots personalizados. Guías paso a paso.
Esta guía muestra cómo conectar la API de búsqueda de documentos con las herramientas más comunes: 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 documentos para que Fin pueda responder preguntas directamente desde tus documentos de Jamdesk.
En el dashboard de Jamdesk, ve a Project Settings → API Keys y haz clic en Generate Key. Nómbrala "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. Verifica que Fin devuelva pasajes relevantes de tus documentos.
Activa el data connector en tu configuración de Fin. Fin ahora 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 (MCP Server)
Las funciones de IA de Zendesk admiten servidores MCP como fuentes de conocimiento. Usa el servidor MCP integrado de Jamdesk para conectar tus documentos 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 requiere una API key para el servidor MCP; usa los documentos públicos de tu proyecto.
En el Admin Center de Zendesk, 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 ambas herramientas se detecten y luego guarda.
El servidor MCP expone el mismo índice de búsqueda que la API de búsqueda de documentos. Usa la API de búsqueda de documentos (con una clave jd_live_) cuando necesites acceso autenticado, límites de tasa por clave o control de revocación.
Chatbots personalizados
Agrega búsqueda de documentación a cualquier chatbot o aplicación web con una llamada fetch estándar. CORS está habilitado, por lo que los clientes basados en 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("---");
});
Construcción de una herramienta para un AI Agent
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 en 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");
})();
Configura JAMDESK_API_KEY en las variables de entorno de tu app de Slack. Nunca escribas la clave directamente en el código.
hostAtDocs (Cloudflare Worker)
Si usas hostAtDocs para servir tus documentos en una subruta (por ejemplo, yoursite.com/docs), la ruta /_api debe pasar a través de tu Cloudflare Worker.
Agrega /_api al array PROXY_PATHS de tu worker:
const PROXY_PATHS = [
"/docs",
"/_jd",
"/_api", // Add this line
];
Esto garantiza que las solicitudes de búsqueda a yoursite.com/_api/search se reenvíen a tu sitio de documentos de Jamdesk.
La ruta /_api requiere autenticación mediante tu API key jd_live_, sin importar cómo se enrute la solicitud. Pasar por Cloudflare no evita la autenticación.
