Tutorials

Slack Bot erstellen ohne Code: Automatisierung mit n8n und Make.com

Schritt-für-Schritt Anleitung zum Erstellen eines Slack Bots mit n8n und Make.

15 min Lesezeit

Slack ist das Kommunikations-Zentrum vieler Unternehmen. Mit eigenen Bots können Sie Benachrichtigungen senden, Daten abfragen und Workflows direkt aus Slack starten. Das Beste: Sie brauchen keine Programmierkenntnisse. In diesem Guide zeigen wir, wie Sie in 30 Minuten einen funktionierenden Slack Bot erstellen. Alternativ können Sie auch einen Telegram Bot erstellen oder einen Microsoft Teams Bot bauen.

Warum einen Slack Bot?

Typische Use Cases:
Use CaseBeschreibung
AlertsServer-Monitoring, Sales-Notifications
Status-Abfragen"/status" zeigt System-Status
GenehmigungenUrlaubsanträge, Ausgaben freigeben
Daily StandupsAutomatische Erinnerungen + Sammlung
OnboardingNeue Mitarbeiter begrüßen
Vorteile:
  • Direkt im Arbeitskontext
  • Interaktive Buttons und Dialoge
  • Keine App-Wechsel nötig

Slack Bot erstellen: Schritt für Schritt

Schritt 1: Slack App erstellen

  • Gehen Sie zu api.slack.com/apps
  • "Create New App" → "From scratch"
  • App Name: z.B. "Automation Bot"
  • Workspace auswählen
  • Schritt 2: Bot User hinzufügen

  • "OAuth & Permissions" im Seitenmenü
  • Unter "Scopes" → "Bot Token Scopes":
  • - chat:write (Nachrichten senden)

    - commands (Slash Commands)

    - users:read (User-Infos lesen)

    Schritt 3: App installieren

  • "Install to Workspace" klicken
  • Berechtigungen bestätigen
  • Bot User OAuth Token kopieren: xoxb-...
  • Schritt 4: Bot in Channel einladen

    /invite @automation-bot

    Methode 1: Incoming Webhooks (Einfachste)

    Nur für Nachrichten senden – keine Interaktion.

    Webhook einrichten

  • App-Einstellungen → "Incoming Webhooks"
  • "Activate Incoming Webhooks" → On
  • "Add New Webhook to Workspace"
  • Channel auswählen
  • Webhook URL kopieren
  • Nachricht senden (n8n)

    // Node: HTTP Request
    

    {

    "method": "POST",

    "url": "https://hooks.slack.com/services/T00/B00/xxxx",

    "headers": { "Content-Type": "application/json" },

    "body": {

    "text": "Hallo aus n8n! 👋"

    }

    }

    Formatierte Nachrichten

    {
    

    "blocks": [

    {

    "type": "header",

    "text": {

    "type": "plain_text",

    "text": "🎉 Neue Bestellung!"

    }

    },

    {

    "type": "section",

    "fields": [

    { "type": "mrkdwn", "text": "<em>Kunde:</em>\nMax Mustermann" },

    { "type": "mrkdwn", "text": "<em>Betrag:</em>\n149,00 €" }

    ]

    },

    {

    "type": "actions",

    "elements": [

    {

    "type": "button",

    "text": { "type": "plain_text", "text": "Im Shop ansehen" },

    "url": "https://shop.example.com/orders/123"

    }

    ]

    }

    ]

    }

    Methode 2: Slack API (Vollwertig)

    Für alle Funktionen: Senden, Empfangen, Interaktionen.

    n8n Slack Node

  • Credentials → Slack API
  • Access Token: xoxb-... eintragen
  • Nachricht senden:
    // Node: Slack
    

    {

    "operation": "send",

    "channel": "#alerts",

    "text": "Wichtige Benachrichtigung!",

    "attachments": [

    {

    "color": "#36a64f",

    "title": "Server Status",

    "text": "Alle Systeme laufen normal"

    }

    ]

    }

    Methode 3: Slash Commands

    User tippt /befehl und Ihr Bot antwortet.

    Slash Command einrichten

  • App-Einstellungen → "Slash Commands"
  • "Create New Command"
  • Command: /status
  • Request URL: https://n8n.ihre-domain.de/webhook/slack-status
  • Description: "Zeigt System-Status an"
  • n8n Workflow

    Webhook (POST /slack-status)
    

    System-Status abrufen

    Formatierte Antwort zurück

    Node: Webhook
    // Slack sendet:
    

    {

    "command": "/status",

    "text": "", // Parameter nach dem Command

    "user_id": "U12345",

    "user_name": "max.mustermann",

    "channel_id": "C12345"

    }

    Node: Respond
    // Antwort an Slack
    

    {

    "response_type": "in_channel", // Für alle sichtbar

    "blocks": [

    {

    "type": "section",

    "text": {

    "type": "mrkdwn",

    "text": "<em>System Status</em>\n✅ API: Online\n✅ Database: Online\n✅ Queue: 5 Jobs"

    }

    }

    ]

    }

    Methode 4: Interaktive Buttons

    User klickt Button und Ihr Bot reagiert.

    Interactivity aktivieren

  • App-Einstellungen → "Interactivity & Shortcuts"
  • "Interactivity" → On
  • Request URL: https://n8n.ihre-domain.de/webhook/slack-interactive (mehr dazu in unserem Webhook-Anleitung)
  • Nachricht mit Buttons

    {
    

    "channel": "#approvals",

    "blocks": [

    {

    "type": "section",

    "text": {

    "type": "mrkdwn",

    "text": "🏖️ <em>Urlaubsantrag</em>\n\nMax Mustermann möchte vom 15.-20.01. Urlaub nehmen."

    }

    },

    {

    "type": "actions",

    "block_id": "approval_buttons",

    "elements": [

    {

    "type": "button",

    "text": { "type": "plain_text", "text": "✅ Genehmigen" },

    "style": "primary",

    "action_id": "approve",

    "value": "request_123"

    },

    {

    "type": "button",

    "text": { "type": "plain_text", "text": "❌ Ablehnen" },

    "style": "danger",

    "action_id": "reject",

    "value": "request_123"

    }

    ]

    }

    ]

    }

    Button-Klick verarbeiten

    // Node: Webhook - Slack sendet bei Klick:
    

    {

    "type": "block_actions",

    "user": { "id": "U12345", "name": "chef" },

    "actions": [

    {

    "action_id": "approve",

    "value": "request_123"

    }

    ],

    "response_url": "https://hooks.slack.com/actions/..."

    }

    // Antwort: Original-Nachricht aktualisieren
    

    {

    "method": "POST",

    "url": "{{ $json.response_url }}",

    "body": {

    "replace_original": true,

    "text": "✅ Urlaubsantrag genehmigt von @chef"

    }

    }

    Praxisbeispiele

    1. Server-Monitoring Bot

    Uptime Robot (Server Down)
    

    Slack #ops-alerts:

    "🔴 Server XYZ ist offline!"

    [Dashboard öffnen] [Acknowledge]

    2. Daily Standup Bot

    Schedule (Mo-Fr 9:00)
    

    Slack #team:

    "☀️ Zeit für den Daily Standup!

    Was hast du gestern gemacht?

    Was machst du heute?

    Gibt es Blocker?"

    Replies sammeln (1h)

    Zusammenfassung in Notion

    3. Lead-Notification Bot

    Website Formular (neuer Lead)
    

    Slack #sales:

    "🔔 Neuer Lead!

    👤 Max Mustermann

    🏢 Firma GmbH

    📧 max@firma.de

    [Im CRM öffnen] [Anrufen]"

    4. Expense Approval Bot

    Mitarbeiter reicht Ausgabe ein
    

    Slack DM an Manager:

    "💰 Ausgabe zur Genehmigung

    Betrag: 250€

    Kategorie: Software

    Beschreibung: Figma Jahresabo

    [Genehmigen] [Ablehnen] [Nachfragen]"

    Make.com: Slack Module

    Verfügbare Module

    ModulFunktion
    Watch EventsTrigger bei Nachrichten
    Send MessageNachricht senden
    Update MessageNachricht bearbeiten
    Create ChannelKanal erstellen
    Invite UserUser einladen
    Upload FileDatei hochladen

    Beispiel-Szenario

    Slack (Watch Events)
    

    Filter: Enthält "hilfe"

    OpenAI: Antwort generieren

    Slack: Reply senden

    Advanced: Event Subscriptions

    Für Echtzeit-Events (nicht nur Commands).

    Events aktivieren

  • App-Einstellungen → "Event Subscriptions"
  • "Enable Events" → On
  • Request URL: https://n8n.ihre-domain.de/webhook/slack-events
  • Events abonnieren:
  • - message.channels (Nachrichten in Channels)

    - app_mention (Bot wurde erwähnt)

    - member_joined_channel (User tritt bei)

    URL-Verifizierung

    Slack sendet einen Challenge-Request:

    // Node: Code - Challenge beantworten
    

    if ($json.type === 'url_verification') {

    return {

    json: { challenge: $json.challenge }

    };

    }

    // Normale Events verarbeiten

    return $json;

    Auf @Mention reagieren

    // Event: app_mention
    

    {

    "type": "event_callback",

    "event": {

    "type": "app_mention",

    "user": "U12345",

    "text": "<@BOTID> Wie ist der Serverstatus?",

    "channel": "C12345"

    }

    }

    Block Kit Builder

    Slack bietet einen visuellen Editor für Nachrichten:

    app.slack.com/block-kit-builder

    Komponenten

    Block-TypVerwendung
    HeaderÜberschriften
    SectionText + Felder
    DividerTrennlinie
    ImageBilder
    ActionsButtons, Selects
    ContextKleine Zusatzinfos
    InputFormulareingaben

    Best Practices

    1. Nicht spammen

    // Nachrichten batchen
    

    const events = collectEvents(5 <em> 60 </em> 1000); // 5 Min

    if (events.length > 5) {

    // Zusammenfassung statt einzelne Nachrichten

    sendDigest(events);

    } else {

    events.forEach(e => sendMessage(e));

    }

    2. Threads nutzen

    {
    

    "channel": "#alerts",

    "text": "🔴 Incident: Server Down",

    "thread_ts": "{{ $json.original_message_ts }}" // Antwort im Thread

    }

    3. Ephemeral Messages

    Nur für einen User sichtbar:

    {
    

    "channel": "C12345",

    "user": "U12345",

    "text": "Nur du siehst diese Nachricht"

    }

    // Mit: chat.postEphemeral

    4. Fehlerbehandlung

    try {
    

    await slack.chat.postMessage({ channel, text });

    } catch (error) {

    if (error.data?.error === 'channel_not_found') {

    // Bot nicht im Channel

    await slack.chat.postMessage({

    channel: '#fallback',

    text: Konnte nicht in ${channel} posten

    });

    }

    }

    Kosten

    KomponenteKosten
    Slack BotKostenlos
    n8n CloudAb $20/Monat
    Make.comAb $9/Monat

    Fazit

    Slack Bots sind mächtige Werkzeuge für Team-Automatisierung:

    • Benachrichtigungen direkt im Arbeitskontext
    • Interaktive Genehmigungen
    • Slash Commands für schnelle Aktionen
    • Event-basierte Automatisierung

    Weiterführende Artikel

    Nächste Schritte

  • Slack App erstellen auf api.slack.com
  • Webhook oder API einrichten
  • Erste Benachrichtigung senden
  • Interaktivität hinzufügen (Buttons, Commands)
  • Wir unterstützen Sie bei der Slack-Automatisierung – von der Einrichtung bis zum produktiven Bot.

    Sie haben Fragen zur Automatisierung?

    Unsere Experten helfen Ihnen, die richtigen Entscheidungen für Ihr Unternehmen zu treffen.