Slack Connector
Connector-Status: Geplant Noch nicht gebaut. Tajo betreibt diesen Connector heute nicht.
Illustration · Beispieldaten
Sync-Beispiel
Quelle
Slack
Connector-Status: Geplant
Ziel
Ihr anderes Tool
Connector-Status: Eigenes Tool
Feldzuordnung
| Quellfeld | Zielfeld | Beispielwert |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Entwerfen
- Einen Datensatz prüfen
- Diese Version freigeben
Der Status gilt für einzelne Connectoren und garantiert nicht, dass dieser Sync bereit ist. Felder zur Veranschaulichung. Prüfen Sie vor dem Sync das tatsächliche Schema und die Berechtigungen.
Verbinde deinen Slack-Workspace über Tajo mit Brevo für Echtzeit-Marketing-Benachrichtigungen, Team-Alerts bei Kund:innen-Events und Workflow-Automation, ausgelöst durch Slack-Interaktionen.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Slack |
| Kategorie | Custom Integration |
| Einrichtungsaufwand | Einfach |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Nutzer:innen, Channels, Nachrichten, Events |
| API-Basis-URL | https://slack.com/api |
Funktionen
- Marketing-Alerts - Sende Echtzeit-Benachrichtigungen zu Kampagnen-Events, neuen Abonnent:innen und Umsatzmeilensteinen
- Kund:innen-Event-Benachrichtigungen - Informiere Teams über wertvolle Kund:innen-Aktionen aus Brevo
- Workflow-Trigger - Nutze Slack-Interaktionen (Button-Klicks, Formular-Einreichungen), um Brevo-Automationen auszulösen
- Channel-basiertes Routing - Leite Benachrichtigungen je nach Event-Typ oder Kund:innen-Segment an passende Channels
- Nutzer:innen-Synchronisation - Mappe Slack-Workspace-Nutzer:innen auf Brevo-Kontakte für interne Kommunikation
- Interaktive Nachrichten - Sende Rich-Nachrichten mit Buttons und Aktionen für Team-Workflows
- Geplante Nachrichten - Plane Benachrichtigungen für tägliche/wöchentliche Marketing-Summaries
- Thread-Support - Gruppiere verwandte Benachrichtigungen in Threads für organisierte Kommunikation
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Einen Slack-Workspace mit Admin-Zugriff
- Eine Slack-App, erstellt unter api.slack.com/apps
- Einen Bot-Token mit den erforderlichen Scopes
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto
Authentifizierung
Bot-Token (empfohlen)
Installiere eine Slack-App in deinem Workspace und nutze den Bot-Token für API-Zugriff.
- App unter api.slack.com/apps erstellen
- Erforderliche OAuth-Scopes unter “OAuth & Permissions” hinzufügen
- App im Workspace installieren
- Den Bot User OAuth Token (
xoxb-...) kopieren
curl -X POST "https://slack.com/api/chat.postMessage" \ -H "Authorization: Bearer xoxb-YOUR-BOT-TOKEN" \ -H "Content-Type: application/json" \ -d '{"channel": "C01234567", "text": "Hello from Tajo!"}'OAuth 2.0
Zur Verteilung deiner Slack-Integration über mehrere Workspaces:
# Authorization URLhttps://slack.com/oauth/v2/authorize? client_id={client_id}& scope=chat:write,channels:read,users:read& redirect_uri={redirect_uri}
# Token exchangecurl -X POST "https://slack.com/api/oauth.v2.access" \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"Erforderliche Bot-Scopes
chat:write # Send messageschannels:read # List channelschannels:history # Read channel messagesusers:read # List workspace usersusers:read.email # Read user email addressesreactions:write # Add reactions to messagesfiles:write # Upload filesZugriff auf Nutzer:innen-E-Mails
Der Scope users:read.email wird benötigt, um Slack-Nutzer:innen mit Brevo-Kontakten abzugleichen. Ohne ihn ist das Nutzer:innen-Mapping auf Anzeigenamen beschränkt.
Konfiguration
Grundeinrichtung
connectors: slack: enabled: true bot_token: "${SLACK_BOT_TOKEN}" signing_secret: "${SLACK_SIGNING_SECRET}"
# Notification channels channels: marketing: "C01234567" sales: "C01234568" support: "C01234569" alerts: "C01234570"
# Event routing notifications: new_subscriber: channel: marketing template: subscriber_alert high_value_order: channel: sales template: order_alert support_ticket: channel: support template: ticket_alertFeld-Mapping
Mappe Slack-Nutzer:innen-Daten auf Brevo-Kontaktattribute:
Standard-Mappings
| Parameter | Type | Description |
|---|---|---|
profile.email required | string | Nutzer:innen-E-Mail (eindeutiger Identifier fürs Brevo-Matching) |
real_name optional | string | Vollständiger Name, aufgeteilt in FIRSTNAME/LASTNAME |
profile.phone optional | string | Mapping auf SMS-Attribut |
profile.title optional | string | Berufsbezeichnung |
tz optional | string | Zeitzone der Nutzer:in |
is_admin optional | boolean | Workspace-Admin-Status |
team_id optional | string | Workspace-Team-ID |
status_text optional | string | Custom-Status der Nutzer:in |
API-Methoden
Messaging
| Methode | Endpoint | Beschreibung |
|---|---|---|
POST | chat.postMessage | Nachricht an einen Channel senden |
POST | chat.update | Bestehende Nachricht aktualisieren |
POST | chat.delete | Nachricht löschen |
POST | chat.scheduleMessage | Nachricht planen |
POST | chat.postEphemeral | Ephemere Nachricht an Nutzer:in senden |
Channels
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | conversations.list | Channels auflisten |
GET | conversations.info | Channel-Infos abrufen |
GET | conversations.members | Channel-Mitglieder auflisten |
GET | conversations.history | Channel-Nachrichten abrufen |
Nutzer:innen
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | users.list | Workspace-Nutzer:innen auflisten |
GET | users.info | Nutzer:innen-Info abrufen |
GET | users.lookupByEmail | Nutzer:in per E-Mail suchen |
GET | users.conversations | Channels der Nutzer:in auflisten |
Interaktionen
| Methode | Endpoint | Beschreibung |
|---|---|---|
POST | views.open | Modales View öffnen |
POST | views.update | Modales View aktualisieren |
POST | reactions.add | Emoji-Reaktion hinzufügen |
Events
Brevo-zu-Slack-Benachrichtigungen
| Event | Trigger | Slack-Aktion |
|---|---|---|
new_subscriber | Kontakt in Brevo erstellt | Post in #marketing |
campaign_sent | E-Mail-Kampagne versendet | Zusammenfassung in #marketing posten |
order_placed | Hochwertige Bestellung erkannt | Post in #sales mit Details |
cart_abandoned | Warenkorb 30 Min. abgebrochen | Post in #sales zur Nachverfolgung |
ticket_created | Support-Ticket geöffnet | Post in #support |
unsubscribed | Kontakt hat abgemeldet | Alert in #marketing |
Slack-zu-Brevo-Trigger
| Slack-Event | Trigger | Brevo-Aktion |
|---|---|---|
message_action | Custom Message Shortcut | Kontakt zur Liste hinzufügen oder Automation auslösen |
block_actions | Button-Klick in Nachricht | Kontaktattribut aktualisieren oder E-Mail senden |
view_submission | Modales Formular abgeschickt | Kontakt erstellen oder Workflow auslösen |
Code-Beispiele
Connector initialisieren
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Slackawait tajo.connectors.connect('slack', { botToken: process.env.SLACK_BOT_TOKEN, signingSecret: process.env.SLACK_SIGNING_SECRET});Marketing-Benachrichtigungen senden
// Send a notification when a high-value order is placedawait tajo.slack.notify({ channel: 'sales', event: 'order_placed', data: { orderValue: '$1,250.00', products: ['Premium Widget', 'Pro Service'], isFirstOrder: true }, template: { blocks: [ { type: 'header', text: { type: 'plain_text', text: 'New High-Value Order' } }, { type: 'section', fields: [ { type: 'mrkdwn', text: '*Amount:*\n$1,250.00' } ] }, { type: 'actions', elements: [ { type: 'button', text: { type: 'plain_text', text: 'View in Brevo' }, url: 'https://app.brevo.com/contacts' } ] } ] }});Slack-Interaktionen verarbeiten
import crypto from 'crypto';
app.post('/slack/interactions', async (req, res) => { // Verify Slack request signature const timestamp = req.headers['x-slack-request-timestamp']; const signature = req.headers['x-slack-signature']; const sigBasestring = `v0:${timestamp}:${req.rawBody}`; const mySignature = 'v0=' + crypto .createHmac('sha256', process.env.SLACK_SIGNING_SECRET) .update(sigBasestring) .digest('hex');
if (signature !== mySignature) { return res.status(401).send('Unauthorized'); }
const payload = JSON.parse(req.body.payload);
// Handle button actions if (payload.type === 'block_actions') { await tajo.connectors.handleWebhook('slack', { type: 'interaction', action: payload.actions[0].action_id, userId: payload.user.id, payload }); }
res.status(200).send();});Rate Limits
Die Rate Limits der Slack-API nutzen ein Stufen-System:
| Tier | Limit | Gängige Methoden |
|---|---|---|
| Tier 1 | 1 Anfrage/Minute | chat.delete, conversations.kick |
| Tier 2 | 20 Anfragen/Minute | conversations.history, users.info |
| Tier 3 | 50 Anfragen/Minute | conversations.list, users.list |
| Tier 4 | 100 Anfragen/Minute | chat.postMessage |
| Special | Variabel | chat.postMessage zum gleichen Channel: 1/Sek |
Zusätzliche Limits:
- Web API: Burst-Limit mit kurzfristigem Throttle
- Events API: Delivery-Retries bei 3 Versuchen
- Incoming Webhooks: 1 Nachricht/Sekunde pro Webhook-URL
- Block Kit: Maximal 50 Blöcke pro Nachricht
Rate für Channel-Postings
Das Posten in denselben Channel ist auf etwa 1 Nachricht pro Sekunde beschränkt. Bündle Benachrichtigungen oder nutze Threads, um Rate Limiting zu vermeiden.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
not_authed | Ungültiger Bot-Token | App neu installieren und neuen Bot-Token kopieren |
channel_not_found | Bot nicht im Channel | Bot in den Ziel-Channel einladen |
missing_scope | Erforderlicher Scope nicht vergeben | Scope hinzufügen und App neu installieren |
| Event nicht empfangen | Event-Subscription nicht gesetzt | Event-Subscriptions-URL konfigurieren |
| Interaktion-Timeout | Antwort >3 Sekunden | Sofort mit 200 antworten, asynchron verarbeiten |
Debug-Modus
Aktiviere ausführliches Logging:
connectors: slack: debug: true log_level: verbose log_events: trueVerbindung testen
tajo connectors test slack# ✓ Bot token valid# ✓ Workspace accessible# ✓ Channels readable# ✓ Message posting enabled# ✓ Event subscriptions activeBest Practices
- Block Kit nutzen - Baue mit dem Block-Kit-Framework von Slack reichhaltige, interaktive Nachrichten
- Schnell antworten - Bestätige Interaktionen innerhalb von 3 Sekunden, verarbeite asynchron
- Zusammengehörige Nachrichten in Threads - Gruppiere verwandte Benachrichtigungen in Threads, um Rauschen zu reduzieren
- Nach Channel routen - Sende unterschiedliche Event-Typen an passende Team-Channels
- Action-Buttons einbauen - Füge “View in Brevo”-Buttons für schnellen Zugriff auf Kund:innen-Daten hinzu
- Unfurling implementieren - Zeige Rich-Previews für in Slack geteilte Brevo-Links
Sicherheit
- Bot-Token - OAuth-gescopter Access Token mit granularen Berechtigungen
- Request-Signing - HMAC-SHA-256-Signaturverifizierung für eingehende Anfragen
- OAuth 2.0 - Industriestandard-Autorisierung für Multi-Workspace-Verteilung
- TLS-Verschlüsselung - Gesamte API-Kommunikation verschlüsselt über HTTPS
- Token-Rotation - Automatische Token-Rotation für erhöhte Sicherheit