Slack
Überblick
Abschnitt betitelt „Überblick“Der Slack-Provider integriert Ihren digitalen Worker in Slack-Workspaces. Er unterstützt:
- Direktnachrichten (DMs)
- Kanalnachrichten
- App-Erwähnungen
- Interaktive Komponenten (Buttons, Menüs)
- Block Kit Rich Messaging
- Slash-Befehle
- Thread-Antworten
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Ein Slack-Workspace
- Admin-Zugriff, um eine Slack-App zu erstellen
Einrichtung
Abschnitt betitelt „Einrichtung“-
Erstellen Sie ein Slack-Konfigurationstoken-Paar
Gehen Sie zu api.slack.com/apps und erstellen Sie ein App-Konfigurationstoken-Paar. Kopieren Sie beide Werte:
- Configuration access token (
xoxe.xoxp-...) - Configuration refresh token (
xoxe-1-...)
- Configuration access token (
-
Provider konfigurieren
answers.json {"setup_answers": {"messaging-slack": {"slack_configuration_access_token": "xoxe.xoxp-xxx","slack_configuration_refresh_token": "xoxe-1-xxx"}}} -
Setup ausführen
Terminal-Fenster gtc setup --answers answers.json ./my-bundle -
Auf Add to Slack klicken
Setup registriert oder aktualisiert die Slack-App und stellt eine Aktion Add to Slack bereit. Öffnen Sie die generierte Slack-Autorisierungs-URL, wählen Sie den Workspace, prüfen Sie die angeforderten Scopes und genehmigen Sie die Installation.
Wenn die OAuth-Weiterleitung zum Setup zurückkehrt, speichert Greentic die Slack app id, client id, client secret und Runtime-OAuth-Antworten für den Tenant. Wenn der Callback nicht automatisch verarbeitet wurde, führen Sie
gtc setup --answers answers.json ./my-bundlenach der Genehmigung der Installation erneut aus. -
App in Slack hinzufügen
Öffnen Sie Slack und prüfen Sie, dass die App im Workspace installiert ist. Für Kanalunterhaltungen fügen Sie die App dem Kanal hinzu, in dem der Worker antworten soll. Das ist über die Integrationseinstellungen des Kanals oder durch Erwähnen/Einladen der App im Kanal möglich.
-
Runtime starten oder neu starten
Terminal-Fenster gtc start ./my-bundleBeim Start werden die gespeicherte
slack_app_idund das Konfigurationstoken-Paar verwendet, um das Slack-App-Manifest mit der aktuellen Webhook-URL zu aktualisieren. -
Kanal testen
Senden Sie eine Direktnachricht an die App oder erwähnen Sie die App in dem Slack-Kanal, dem Sie sie hinzugefügt haben. Kanalereignisse treffen nur für Kanäle ein, in denen die App Mitglied ist und die installierten Scopes das Ereignis erlauben.
Konfigurationsoptionen
Abschnitt betitelt „Konfigurationsoptionen“| Option | Erforderlich | Beschreibung |
|---|---|---|
slack_configuration_access_token | Ja | Kurzlebiges Slack-Konfigurationstoken für App-Manifest-Aktualisierungen |
slack_configuration_refresh_token | Ja | Refresh token zum Rotieren des configuration access token |
slack_app_id | Generiert | Von Setup erstellte oder zurückgegebene Slack app id |
slack_client_id | Generiert | Von der App-Registrierung zurückgegebene Slack OAuth client id |
client_secret | Generiertes Secret | Von der App-Registrierung zurückgegebenes Slack OAuth client secret |
Funktionen
Abschnitt betitelt „Funktionen“Textnachrichten
Abschnitt betitelt „Textnachrichten“- id: reply type: reply config: message: "Hello! How can I help you?"Markdown-Formatierung
Abschnitt betitelt „Markdown-Formatierung“Slack verwendet das Format mrkdwn:
- id: formatted type: reply config: message: | *Bold* _Italic_ `code` >Blockquote • Bullet pointBlock-Kit-Nachrichten
Abschnitt betitelt „Block-Kit-Nachrichten“Verwenden Sie das Block Kit von Slack für umfangreiche Layouts:
- id: rich_message type: reply config: blocks: - type: section text: type: mrkdwn text: "*Welcome!*\nHow can I assist you today?" - type: divider - type: actions elements: - type: button text: type: plain_text text: "Get Help" action_id: "help_clicked" value: "help" - type: button text: type: plain_text text: "View Status" action_id: "status_clicked" value: "status"Interaktive Buttons
Abschnitt betitelt „Interaktive Buttons“- id: ask_action type: reply config: message: "What would you like to do?" blocks: - type: actions elements: - type: button text: type: plain_text text: "Create Ticket" style: primary action_id: "create_ticket" - type: button text: type: plain_text text: "Cancel" style: danger action_id: "cancel"Auswahlmenüs
Abschnitt betitelt „Auswahlmenüs“- id: select_option type: reply config: blocks: - type: section text: type: mrkdwn text: "Select a category:" accessory: type: static_select action_id: "category_select" options: - text: type: plain_text text: "Technical Support" value: "technical" - text: type: plain_text text: "Billing" value: "billing" - text: type: plain_text text: "General" value: "general"Thread-Antworten
Abschnitt betitelt „Thread-Antworten“In einem Thread antworten:
- id: thread_reply type: reply config: message: "This replies in the thread" thread_ts: "{{original_message.thread_ts}}"Datei-Uploads
Abschnitt betitelt „Datei-Uploads“Slacks Datei-APIs ändern sich im Laufe der Zeit. Verwenden Sie dies nur, wenn das installierte messaging-slack-Pack Dateiunterstützung für Ihre Version bereitstellt; andernfalls senden Sie einen Link oder verwenden Sie Slacks aktuellen externen Upload-Flow.
- id: upload_file type: reply config: files: - url: "https://example.com/report.pdf" filename: "report.pdf" title: "Monthly Report"Ephemere Nachrichten
Abschnitt betitelt „Ephemere Nachrichten“Nachrichten, die nur für einen Benutzer sichtbar sind:
- id: ephemeral type: reply config: message: "Only you can see this" ephemeral: true user: "{{user_id}}"Interaktionen verarbeiten
Abschnitt betitelt „Interaktionen verarbeiten“Button-Klicks
Abschnitt betitelt „Button-Klicks“name: handle_interactionversion: "1.0"
nodes: - id: route_action type: branch config: conditions: - expression: "action_id == 'help_clicked'" to: show_help - expression: "action_id == 'create_ticket'" to: create_ticket default: unknown_action
- id: show_help type: reply config: message: "Here's how I can help..."
triggers: - type: block_action target: route_actionÄnderungen in Auswahlmenüs
Abschnitt betitelt „Änderungen in Auswahlmenüs“- id: handle_select type: branch config: conditions: - expression: "selected_value == 'technical'" to: technical_flow - expression: "selected_value == 'billing'" to: billing_flowSlash-Befehle
Abschnitt betitelt „Slash-Befehle“- Gehen Sie in Ihren App-Einstellungen zu Slash Commands
- Erstellen Sie einen Befehl (z. B.
/support) - Setzen Sie die Request URL auf Ihren Webhook
Verarbeiten Sie ihn in Ihrem Flow:
name: slash_commandversion: "1.0"
nodes: - id: handle_command type: reply config: message: "Support bot at your service!" response_type: in_channel # or "ephemeral"
triggers: - type: slash_command command: "/support" target: handle_commandKanal-Konfiguration
Abschnitt betitelt „Kanal-Konfiguration“Einzelner Kanal
Abschnitt betitelt „Einzelner Kanal“tenants: demo: teams: support: channels: slack: provider: messaging-slack config: channel_id: "C1234567890"Mehrere Kanäle
Abschnitt betitelt „Mehrere Kanäle“tenants: demo: teams: support: channels: slack-general: provider: messaging-slack config: channel_id: "C1234567890" slack-vip: provider: messaging-slack config: channel_id: "C0987654321"Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“App empfängt keine Nachrichten
Abschnitt betitelt „App empfängt keine Nachrichten“-
Event Subscriptions prüfen:
- Prüfen Sie, ob die Request URL korrekt ist
- Stellen Sie sicher, dass Events aktiviert sind
- Prüfen Sie, ob der Bot die richtigen Events abonniert hat
-
Bot-Berechtigungen prüfen:
- Installieren Sie die App nach dem Hinzufügen von Scopes erneut
- Prüfen Sie, ob sich der Bot im Kanal befindet
-
Webhook testen:
Terminal-Fenster curl https://your-domain.com/v1/messaging/ingress/messaging-slack/demo/default
Fehler “not_authed”
Abschnitt betitelt „Fehler “not_authed”“Ihr Bot-Token ist ungültig oder abgelaufen. Holen Sie sich ein neues Token unter OAuth & Permissions.
Fehler “channel_not_found”
Abschnitt betitelt „Fehler “channel_not_found”“- Prüfen Sie, ob die Kanal-ID korrekt ist
- Stellen Sie sicher, dass der Bot zum Kanal hinzugefügt wurde
- Prüfen Sie, ob der Kanal nicht archiviert ist
Rate Limiting
Abschnitt betitelt „Rate Limiting“Die Slack-Limits variieren je nach Methode. Behandeln Sie sie sauber:
- id: reply type: reply config: message: "Response" retry_on_rate_limit: true max_retries: 3Sicherheit
Abschnitt betitelt „Sicherheit“Greentic validiert automatisch:
- Request-Zeitstempel
- Signatur mit dem Signing Secret
- Token-Verifizierung
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Block Kit Builder - Umfangreiche Nachrichten gestalten
- Teams-Provider - Teams-Integration hinzufügen
- Flows-Leitfaden - Komplexe Workflows erstellen