Zum Hauptinhalt springen
connic

Slack

Von connic
InboundOutbound

Erwähne deinen Bot in Slack, und ein connic-Agent antwortet im Thread. Agenten können ihre Ergebnisse auch ohne Erwähnung in einen Channel posten.

Publisher
Von connic
Modi
Inbound, Outbound
Einrichtung
Dashboard
Dokumentation
Slack Docs

Antworte auf Erwähnungen im Thread

Erwähne den Bot in einem Channel, dem er beigetreten ist. Jeder Agent an der eingehenden Verbindung startet, und eine ausgehende Verbindung mit derselben Connection postet die Antwort unter die Erwähnung.

Nur Erwähnungen
Der Bot reagiert auf app_mention Events. Er liest keine Channel History, und Nachrichten von Bots werden ignoriert.
Eine eingehende Verbindung pro Connection
Verknüpfe mehrere Agenten mit ihr, dann startet jeder davon bei einer Erwähnung.
Keine doppelten Runs
connic leitet jede Run-ID aus dem Slack-Event ab. Stellt Slack ein Event erneut zu, startet deshalb kein zweiter Run.
  1. Slack signiert das Event

    connic prüft Signatur und Zeitstempel, bevor ein Agent startet.

    X-Slack-Signature
  2. Verknüpfte Agenten starten

    Der Run bekommt den Text ohne Bot-Erwähnung sowie die IDs von Workspace, Channel, Nutzer und Thread.

    app_mention
  3. Der Bot reagiert mit 👀

    connic setzt die Reaktion, sobald die Runs in der Warteschlange stehen. So sieht jeder, dass der Bot die Nachricht übernommen hat.

  4. Die Antwort landet im Thread

    Eine ausgehende Verbindung mit derselben Connection postet den Output des Agenten unter die ursprüngliche Nachricht.

    thread_ts

Erstelle die App aus einem generierten Manifest

connic schreibt das Manifest der Slack-App mit Events-URL, dem Event app_mention und fünf Bot-Scopes. Du legst die App in deinem eigenen Workspace an und behältst Name, Icon und Installation in der Hand.

Deine App
Die App gehört zu deinem Workspace. Deinstallierst du sie in Slack, trennt connic die Connection.
Fünf Scopes
app_mentions:read und chat:write für Erwähnungen und Antworten, channels:read und groups:read für die Liste beigetretener Channels, reactions:write für das 👀. Scopes für History, DMs, Dateien oder Nutzerprofile fehlen.
Zwei Secrets
Das Signing Secret belegt, dass Events von Slack kommen, und das xoxb- Bot Token postet die Antworten. Beide werden nach dem Speichern verschlüsselt und maskiert.
slack-app-manifest.json
{
  "display_information": {
    "name": "Support Copilot",
    "description": "Slack bot connected to connic."
  },
  "features": {
    "bot_user": { "display_name": "support-copilot" }
  },
  "oauth_config": {
    "scopes": {
      "bot": [
        "app_mentions:read",
        "channels:read",
        "chat:write",
        "groups:read",
        "reactions:write"
      ]
    }
  },
  "settings": {
    "event_subscriptions": {
      "request_url": "<events-url>",
      "bot_events": ["app_mention", "app_uninstalled"]
    }
  }
}

Poste Ergebnisse in jeden Channel des Bots

Eine ausgehende Slack-Verbindung postet den Output des Agenten als Nachricht, egal ob der Run auf eine Erwähnung antwortet oder von einer anderen Verbindung oder einem Zeitplan kommt.

Routing
Eine channel_id im Output hat Vorrang. Ohne sie antwortet ein Run, den eine Erwähnung über dieselbe Connection gestartet hat, in deren Thread. Jeder andere Run postet in den Default Channel der Verbindung.
Drei Wege zu senden
Sende nach jedem abgeschlossenen Run, gib dem Modell ein Tool oder rufe send_connector aus Middleware auf, wenn dein Code entscheidet.
Rate Limits inklusive
Bremst Slack eine Nachricht per Rate Limit aus, wartet connic die Retry-After-Zeit ab und sendet sie erneut.
connector-payload.json
{
  "text": "BLOCK p_4410: 37 small charges in one hour.",
  "channel_id": "C07FRAUD01"
}
middleware/payment-review.py
from connic.tools import send_connector


async def after(response: str, context: dict) -> str:
    if response.startswith("BLOCK"):
        await send_connector(
            "post_fraud_alert",
            {"text": response, "channel_id": "C07FRAUD01"},
        )
    return response

Wo Slack passt

Wähle ein Szenario und sieh, was beim Agenten ankommt und was er in Slack postet.

Jemand erwähnt den Bot mit einer Frage, und der Agent antwortet im Thread mit Wissen aus deinen Docs.

Teammitglied im Channel
Inbound Slack
docs-assistant
Antwort im Thread
slack-payload.json
{
  "text": "How do I rotate the staging database password?",
  "user_id": "U07KD2M4P",
  "team_id": "T05EXAMPLE",
  "channel_id": "C06PLATFORM",
  "thread_ts": "1792141200.481239",
  "event_id": "Ev07Q4R2T1"
}
output.json
{
  "text": "Rotate it in the vault, then restart the staging workers."
}

Erwähne den Bot mit einer Fehlermeldung, und der Agent antwortet mit wahrscheinlichen Ursachen und nächsten Prüfschritten.

Rufbereitschaft
Inbound Slack
incident-triage
Nächste Schritte im Thread
slack-payload.json
{
  "text": "Checkout returns 502 since 14:05. Any idea?",
  "user_id": "U07KD2M4P",
  "team_id": "T05EXAMPLE",
  "channel_id": "C05INCIDENT",
  "thread_ts": "1792141200.481239",
  "event_id": "Ev07Q4R2T1"
}
output.json
{
  "text": "Likely a payment provider timeout after the 14:03 deploy."
}

Dein Zahlungsdienst sendet riskante Transaktionen, und der Agent meldet sie in #fraud-alerts.

Zahlungsdienst
Inbound Webhook
fraud-screen
Post in #fraud-alerts
transaction.json
{
  "payment_id": "p_4410",
  "amount": 1.0,
  "currency": "EUR",
  "card_country": "BR",
  "ip_country": "DE",
  "attempts_last_hour": 37
}
output.json
{
  "text": "p_4410: 37 small charges in an hour, likely card testing."
}

Deine CI meldet jedes Deployment, und der Agent schreibt die Release Notes in #releases.

CI-Pipeline
Inbound Webhook
release-notes
Post in #releases
deploy.json
{
  "service": "checkout-api",
  "version": "2.14.0",
  "commits": [
    "Speed up refunds",
    "Round EUR totals to two decimals"
  ]
}
output.json
{
  "text": "checkout-api 2.14.0: faster refunds, EUR totals rounded.",
  "channel_id": "C06RELEASES"
}

FAQ zu Slack

Dir. Du erstellst die App in deinem Workspace aus einem Manifest, das connic generiert, und bestimmst Name, Icon, Installation und Channel-Mitgliedschaft. Deinstallierst du die App, trennt connic die Connection.

Nein. Er fordert app_mentions:read und chat:write für Erwähnungen und Antworten an, channels:read und groups:read für die Liste seiner Channels und reactions:write für die 👀-Reaktion. Scopes für History, Direktnachrichten, Dateien oder Nutzerprofile hat er nicht.

Das Signing Secret belegt, dass Event-Anfragen von Slack kommen. Mit dem xoxb- Bot Token prüft connic die Installation und postet Antworten als dein Bot. Beide werden nach dem Speichern verschlüsselt und maskiert.

Ja. Eine Slack-Connection hat eine eingehende Verbindung, und jeder damit verknüpfte Agent startet bei einer Erwähnung. Ausgehende Verbindungen können dieselbe Connection ebenfalls nutzen.

Nein. Slack-Verbindungen legst du im Dashboard an. Deine anderen Verbindungstypen kannst du weiterhin im Code deklarieren.