Jamdesk Documentation logo

Integrações

Conecte a Docs Search API do Jamdesk ao Intercom, Zendesk, Slack e chatbots personalizados, com guias passo a passo para cada integração.

Este guia mostra como conectar a Docs Search API às ferramentas mais comuns: Intercom, Zendesk, Slack e chatbots personalizados.

Intercom (Fin AI Agent)

O Fin AI Agent do Intercom é compatível com Data Connectors: fontes de pesquisa externas que o Fin consulta juntamente com seus artigos do Intercom. Conecte a Docs Search API para que o Fin possa responder a perguntas diretamente a partir da sua documentação do Jamdesk.

1
Gerar uma chave de API

No painel do Jamdesk, acesse Project Settings → API Keys e clique em Generate Key. Dê a ela o nome "Intercom Fin" e copie a chave jd_live_ (40 caracteres no total).

2
Abrir as configurações do AI Agent do Intercom

No Intercom, acesse AI Agent → Data Sources → Add Source → API.

3
Configurar o conector

Insira os seguintes detalhes:

CampoValor
Endpoint URLhttps://your-project.jamdesk.app/_api/search
MethodPOST
Auth headerAuthorization: Bearer jd_live_c83003a54ae0a83123454c3f7ec82f0a
Query fieldquery
Result pathresults[*].content
4
Testar a conexão

Use a ferramenta de teste integrada do Intercom para enviar uma consulta de exemplo. Verifique se o Fin retorna trechos relevantes da sua documentação.

5
Ativar para sua caixa de entrada

Ative o conector de dados na configuração do Fin. O Fin agora citará sua documentação ao responder às perguntas dos clientes.

O Fin respeita o campo score, portanto os resultados com pontuação mais alta aparecem primeiro nas respostas. Trechos com pontuação inferior a 0.7 normalmente não são utilizados.


Zendesk (MCP Server)

Os recursos de IA do Zendesk são compatíveis com servidores MCP como fontes de conhecimento. Use o servidor MCP integrado do Jamdesk para conectar sua documentação aos agentes de IA do Zendesk sem precisar de código personalizado.

1
Encontrar a URL do seu servidor MCP

Seu servidor MCP está disponível em https://your-project.jamdesk.app/_jd/mcp. Nenhuma chave de API é necessária para o servidor MCP; ele usa a documentação pública do seu projeto.

2
Adicionar o servidor MCP no Zendesk

No Zendesk Admin Center, acesse AI Agents → Knowledge Sources → Add MCP Server.

3
Inserir a URL do servidor

Cole a URL do seu servidor MCP: https://your-project.jamdesk.app/_jd/mcp

4
Verificar a conexão

O Zendesk listará as ferramentas disponíveis (searchDocs, getPage). Confirme se ambas foram detectadas e salve.

O servidor MCP expõe o mesmo índice de pesquisa que a Docs Search API. Use a Docs Search API (com uma chave jd_live_) quando precisar de acesso autenticado, limitação de taxa por chave ou controle de revogação.


Chatbots personalizados

Adicione pesquisa na documentação a qualquer chatbot ou aplicativo web usando uma chamada fetch padrão. O CORS está ativado, portanto clientes baseados em navegador podem chamar a API diretamente, sem um 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("---");
});

Criar uma ferramenta de AI Agent

Passe os resultados da pesquisa como contexto para um modelo de linguagem gerar respostas 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 do Slack

Crie um comando de barra /docs do Slack que pesquise sua documentação e publique os resultados em qualquer 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");
})();

Defina JAMDESK_API_KEY nas variáveis de ambiente do seu aplicativo do Slack. Nunca codifique a chave diretamente.


Hospedagem em subcaminho (Cloudflare Worker)

Se você estiver usando hospedagem em subcaminho para disponibilizar sua documentação em um caminho do seu domínio (/docs por padrão ou um subcaminho personalizado, como /help), a rota /_api também precisará passar pelo seu Cloudflare Worker, junto com o caminho da documentação.

Adicione /_api ao array PROXY_PATHS no seu worker, usando o prefixo de caminho configurado no painel:

const PROXY_PATHS = [
  "/docs",  // or your custom subpath, e.g. "/help"
  "/_jd",
  "/_api",  // Add this line
];

Isso garante que as solicitações de pesquisa para yoursite.com/_api/search (ou yoursite.com/help/_api/search, se você estiver usando um subcaminho personalizado) sejam encaminhadas ao site da sua documentação do Jamdesk.

A rota /_api exige autenticação por meio da sua chave de API jd_live_, independentemente de como a solicitação é roteada. O proxy pelo Cloudflare não ignora a autenticação.