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.
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).
No Intercom, acesse AI Agent → Data Sources → Add Source → API.
Insira os seguintes detalhes:
| 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 |
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.
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.
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.
No Zendesk Admin Center, acesse AI Agents → Knowledge Sources → Add MCP Server.
Cole a URL do seu servidor MCP: https://your-project.jamdesk.app/_jd/mcp
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.
