Jamdesk Documentation logo

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.

1
Genera una API key

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).

2
Abre la configuración del AI Agent de Intercom

En Intercom, ve a AI Agent → Data Sources → Add Source → API.

3
Configura el conector

Introduce los siguientes datos:

CampoValor
Endpoint URLhttps://your-project.jamdesk.app/_api/search
MethodPOST
Auth headerAuthorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a
Query fieldquery
Result pathresults[*].content
4
Prueba la conexión

Usa la herramienta de prueba integrada de Intercom para enviar una consulta de ejemplo. Verifica que Fin devuelva pasajes relevantes de tus documentos.

5
Actívalo para tu bandeja de entrada

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.

1
Encuentra la URL de tu servidor MCP

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.

2
Agrega el servidor MCP en Zendesk

En el Admin Center de Zendesk, ve a AI Agents → Knowledge Sources → Add MCP Server.

3
Introduce la URL del servidor

Pega la URL de tu servidor MCP: https://your-project.jamdesk.app/_jd/mcp

4
Verifica la conexión

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.