gik|iewicz

szukaj
Chat SDK: Jak Stworzyć Bota Działającego na 5 Platformach Jednocześnie?

Chat SDK: Jak Stworzyć Bota Działającego na 5 Platformach Jednocześnie?

Microsoft Teams dociera do ponad 320 milionów użytkowników, podczas gdy Slack pozostaje preferowany przez 77% firm z listy Fortune 100 (Business of Apps, 2025). Rozwiązanie? Chat SDK od Vercel — jedna baza kodu TypeScript, która działa na Slack, Teams, Discord, Google Chat i GitHub.

TL;DR: Chat SDK to open-source’owa biblioteka TypeScript, która pozwala napisać logikę bota raz i wdrożyć ją na 5+ platformach komunikacyjnych. Zamiast uczyć się 5 różnych API, piszesz jeden kod obsługujący Slack, Microsoft Teams, Discord, Google Chat i GitHub. Biblioteka automatycznie tłumaczy wiadomości, zarządza wątkami i obsługuje webhooki dla każdej platformy.

Czym jest Chat SDK i dlaczego warto go używać?

Chat SDK to zunifikowana biblioteka TypeScript stworzona przez zespół Vercel, która abstrahuje różnice między platformami komunikacyjnymi. Zamiast pisać osobne handlery dla Slack API, Microsoft Bot Framework i Discord.js, definiujesz jedną logikę, która działa wszędzie.

Według danych z 2025 roku, przeciętna firma korzysta z 3-4 różnych narzędzi komunikacyjnych (M.io, 2024). To oznacza, że deweloperzy muszą znać i utrzymywać wiele API — co dramatycznie zwiększa koszty rozwoju i utrzymania.

Główne zalety Chat SDK:

  • Jedna baza kodu — logika bota jest niezależna od platformy
  • Automatyczne tłumaczenie — markdown, wzmianki, załączniki są konwertowane na format docelowej platformy
  • Zarządzanie stanem — Redis lub in-memory do przechowywania kontekstu konwersacji
  • Streaming AI — natywna integracja z Vercel AI SDK dla odpowiedzi w czasie rzeczywistym

Moje doświadczenia z wieloplatformowymi botami pokazują, że około 60-70% kodu to powtórzenia — obsługa webhooków, parsowanie wiadomości, zarządzanie uprawnieniami. Chat SDK eliminuje ten boilerplate, pozwalając skupić się na logice biznesowej.

Jak zainstalować i skonfigurować Chat SDK?

Instalacja jest prosta — instalujesz rdzeń SDK i adaptery dla potrzebnych platform:

npm install chat
npm install @chat-adapter/slack @chat-adapter/teams @chat-adapter/discord @chat-adapter/gchat

Podstawowa konfiguracja wymaga utworzenia instancji Chat z adapterami i opcjonalnym stanem:

import { Chat } from "chat";
import { createSlackAdapter } from "@chat-adapter/slack";
import { createTeamsAdapter } from "@chat-adapter/teams";
import { createRedisState } from "@chat-adapter/state-redis";

const bot = new Chat({
  userName: "mybot",
  adapters: {
    slack: createSlackAdapter(),
    teams: createTeamsAdapter(),
  },
  state: createRedisState({ url: process.env.REDIS_URL }),
});

bot.onNewMention(async (thread) => {
  await thread.subscribe();
  await thread.post("Cześć! W czym mogę pomóc?");
});

Adaptery automatycznie wykrywają zmienne środowiskowe — dla Slack to SLACK_SIGNING_SECRET i SLACK_BOT_TOKEN, dla Teams TEAMS_APP_ID i TEAMS_APP_PASSWORD.

Wykres porównujący liczbę użytkowników platform komunikacyjnych: Microsoft Teams 320M, Discord 200M, GitHub 100M, Slack 79M, Google Chat 25M
Źródło: Business of Apps, DemandSage, Statista 2025

Jak działa obsługa wielu platform jednocześnie?

Kluczem jest abstrakcja — każda platforma ma własny adapter, który tłumaczy zdarzenia na zunifikowany format. Handler onNewMention wywołuje się niezależnie od tego, czy użytkownik oznaczył bota na Slack czy Teams.

Według analizy Vercel, deweloperzy spędzają średnio 40% czasu na mapowanie między różnymi API (Vercel Blog, 2026). Chat SDK eliminuje ten problem poprzez zunifikowany interfejs:

// Ten sam kod działa na wszystkich platformach
bot.onNewMention(async (thread, message) => {
  // thread.post() automatycznie tłumaczy format
  await thread.post({
    markdown: "**Raport wygenerowany!**\n\nSzczegóły w załączniku.",
    files: [{ data: reportBuffer, filename: "report.pdf" }]
  });
});

Interesujące jest to, jak Chat SDK radzi sobie z różnicami w architekturze platform. Slack używa wątków (threads), Teams konwersacji (conversations), a Discord kanałów. SDK normalizuje te różnice, prezentując spójny model wątku dla dewelopera.

Jak wysyłać wiadomości i zarządzać wątkami?

API jest intuicyjne — thread.post() wysyła wiadomość, a zwrócony obiekt pozwala na edycję, usuwanie i reakcje:

const sent = await thread.post("Przetwarzam...");

// Po zakończeniu pracy
await sent.edit("Gotowe!");

// Dodaj reakcję
await sent.addReaction("thumbs_up");

// Lub usuń wiadomość
await sent.delete();

Dla odpowiedzi AI, SDK obsługuje streaming przez AsyncIterable:

import { streamText } from "ai";

bot.onNewMention(async (thread, message) => {
  const result = streamText({
    model: openai("gpt-4"),
    prompt: message.text
  });
  await thread.post(result.textStream);
});

To oznacza, że użytkownicy widzą odpowiedź w czasie rzeczywistym — tak jak w ChatGPT.

Kod TypeScript na monitorze programisty pokazujący importy adapterów chat
Środowisko deweloperskie TypeScript

Jak skonfigurować webhooki dla każdej platformy?

Każdy adapter udostępnia handler webhook przez bot.webhooks.{platform}. W Next.js App Router wygląda to tak:

// app/api/webhooks/[platform]/route.ts
import { bot } from "@/lib/bot";

export async function POST(
  request: Request,
  context: { params: { platform: string } }
) {
  const handler = bot.webhooks[context.params.platform];
  if (!handler) {
    return new Response("Unknown platform", { status: 404 });
  }
  return handler(request, { waitUntil: (p) => after(() => p) });
}

Jeden endpoint obsługuje wszystkie platformy — routing po parametrze platform kieruje żądanie do odpowiedniego adaptera.

Jakie zmienne środowiskowe są wymagane?

Dla każdej platformy potrzebujesz osobnych credentiali:

Slack:

SLACK_SIGNING_SECRET=your-signing-secret
SLACK_BOT_TOKEN=xoxb-your-bot-token

Microsoft Teams:

TEAMS_APP_ID=your-app-id
TEAMS_APP_PASSWORD=your-app-password
TEAMS_APP_TENANT_ID=your-tenant-id

Discord:

DISCORD_BOT_TOKEN=your-bot-token
DISCORD_PUBLIC_KEY=your-public-key
DISCORD_APPLICATION_ID=your-application-id

Google Chat:

GOOGLE_CHAT_PROJECT_ID=your-project-id
GOOGLE_CHAT_SERVICE_ACCOUNT=your-service-account-json

Warto przechowywać te dane w Vercel Environment Variables lub .env.local — adaptery automatycznie je wykryją.

Jak wdrożyć bota na Vercel?

Wdrożenie jest bezpośrednie — vercel deploy i konfiguracja zmiennych środowiskowych w dashboardzie:

vercel deploy

Po wdrożeniu musisz skonfigurować webhooki w każdej platformie:

  • Slack: Event Subscriptions → Request URL → https://twoja-domena.vercel.app/api/webhooks/slack
  • Teams: Bot Framework → Messaging endpoint → https://twoja-domena.vercel.app/api/webhooks/teams
  • Discord: Developer Portal → Interactions Endpoint URL

Często Zadawane Pytania

Czy Chat SDK obsługuje wiadomości prywatne (DM)?

Tak, SDK obsługuje zarówno wiadomości na kanałach publicznych, jak i rozmowy prywatne. Handler onNewMention wywołuje się niezależnie od typu rozmowy — wystarczy sprawdzić thread.isPrivate aby rozróżnić kontekst.

Jak zarządzać stanem konwersacji między platformami?

SDK oferuje adapter state-redis do przechowywania stanu w Redis, lub in-memory dla prostszych zastosowań. Stan jest automatycznie powiązany z ID wątku, więc użytkownik może kontynuować rozmowę na innej platformie z zachowaniem kontekstu.

Czy mogę używać Chat SDK bez Vercel?

Tak, SDK jest niezależne od platformy hostingowej. Możesz użyć Express, Hono, Fastify lub dowolnego frameworka Node.js. Webhooki są standardowymi handlerami HTTP — wystarczy podpiąć je pod routing.

Jak dodawać reakcje i załączniki?

Metoda sent.addReaction() dodaje emoji, a thread.post() akceptuje obiekt z polem files dla załączników. SDK automatycznie konwertuje formaty między platformami — Slack używa file uploads, Teams inline attachments.

Czy streaming działa na wszystkich platformach?

Streaming działa na platformach, które go obsługują (Slack, Discord). Dla Teams SDK automatycznie fallbackuje do aktualizacji wiadomości co 500ms, symulując efekt streamingu.

Podsumowanie

Chat SDK to rozwiązanie problemu fragmentacji narzędzi komunikacyjnych. Zamiast utrzymywać 5 oddzielnych integracji, piszesz jeden kod TypeScript, który działa wszędzie. To oszczędza czas deweloperów, redukuje błędy i ułatwia dodawanie nowych funkcjonalności.

Dla zespołów deweloperskich pracujących z AI, SDK oferuje natywną integrację z Vercel AI SDK — bot może streamować odpowiedzi modelu bezpośrednio do wątku, niezależnie od platformy. To czyni go idealnym wyborem dla firm budujących asystentów AI dostępnych na wielu kanałach.

Kluczowe korzyści:

  • Jeden kod dla Slack, Teams, Discord, Google Chat, GitHub i Linear
  • Automatyczna konwersja formatów wiadomości i załączników
  • Natywny streaming odpowiedzi AI
  • Gotowe webhooki dla każdej platformy
  • Open-source z aktywną społecznością

Rozpocznij od npm install chat i sprawdź dokumentację na chat-sdk.dev.