Zum Inhalt springen

Slack

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
  • Ein Slack-Workspace
  • Admin-Zugriff, um eine Slack-App zu erstellen
  1. 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-...)
  2. Provider konfigurieren

    answers.json
    {
    "setup_answers": {
    "messaging-slack": {
    "slack_configuration_access_token": "xoxe.xoxp-xxx",
    "slack_configuration_refresh_token": "xoxe-1-xxx"
    }
    }
    }
  3. Setup ausführen

    Terminal-Fenster
    gtc setup --answers answers.json ./my-bundle
  4. 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-bundle nach der Genehmigung der Installation erneut aus.

  5. 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.

  6. Runtime starten oder neu starten

    Terminal-Fenster
    gtc start ./my-bundle

    Beim Start werden die gespeicherte slack_app_id und das Konfigurationstoken-Paar verwendet, um das Slack-App-Manifest mit der aktuellen Webhook-URL zu aktualisieren.

  7. 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.

OptionErforderlichBeschreibung
slack_configuration_access_tokenJaKurzlebiges Slack-Konfigurationstoken für App-Manifest-Aktualisierungen
slack_configuration_refresh_tokenJaRefresh token zum Rotieren des configuration access token
slack_app_idGeneriertVon Setup erstellte oder zurückgegebene Slack app id
slack_client_idGeneriertVon der App-Registrierung zurückgegebene Slack OAuth client id
client_secretGeneriertes SecretVon der App-Registrierung zurückgegebenes Slack OAuth client secret
- id: reply
type: reply
config:
message: "Hello! How can I help you?"

Slack verwendet das Format mrkdwn:

- id: formatted
type: reply
config:
message: |
*Bold* _Italic_ `code`
>Blockquote
• Bullet point

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"
- 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"
- 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"

In einem Thread antworten:

- id: thread_reply
type: reply
config:
message: "This replies in the thread"
thread_ts: "{{original_message.thread_ts}}"

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"

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}}"
flows/on_interaction.ygtc
name: handle_interaction
version: "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
- id: handle_select
type: branch
config:
conditions:
- expression: "selected_value == 'technical'"
to: technical_flow
- expression: "selected_value == 'billing'"
to: billing_flow
  1. Gehen Sie in Ihren App-Einstellungen zu Slash Commands
  2. Erstellen Sie einen Befehl (z. B. /support)
  3. Setzen Sie die Request URL auf Ihren Webhook

Verarbeiten Sie ihn in Ihrem Flow:

flows/slash_command.ygtc
name: slash_command
version: "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_command
greentic.demo.yaml
tenants:
demo:
teams:
support:
channels:
slack:
provider: messaging-slack
config:
channel_id: "C1234567890"
tenants:
demo:
teams:
support:
channels:
slack-general:
provider: messaging-slack
config:
channel_id: "C1234567890"
slack-vip:
provider: messaging-slack
config:
channel_id: "C0987654321"
  1. 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
  2. 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
  3. Webhook testen:

    Terminal-Fenster
    curl https://your-domain.com/v1/messaging/ingress/messaging-slack/demo/default

Ihr Bot-Token ist ungültig oder abgelaufen. Holen Sie sich ein neues Token unter OAuth & Permissions.

  • 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

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: 3

Greentic validiert automatisch:

  • Request-Zeitstempel
  • Signatur mit dem Signing Secret
  • Token-Verifizierung