SQuaRE Bot#

SQuaRE Bot is the third-generation of SQuaRE’s distributed Slack bot for Rubin Observatory.

SQuaRE Bot receives events (Slack messages, reactions, button actions, and more) from the Slack event and interaction APIs and passes those on as messages in corresponding Kafka topics published within the Roundtable platform. Other microservices in Roundtable can subscribe to those topics and act on on them. Typically those microservices will use Slack’s Web API to post responses. This architecture separates the Slack bot itself from the domain-specific concerns of user-facing SQuaRE Bot features. You can deploy new ChatOps automations without having to update or modify SQuaRE Bot’s codebase.

        flowchart LR
    subgraph Slack
    message[Slack message]
    interaction[Slack interaction]
    end
    subgraph sqrbot ["Squarebot"]
    eventapi["/slack/event"]
    interactionapi["/slack/interaction"]
    message -->|HTTP POST| eventapi
    interaction -->|HTTP POST| interactionapi
    end
    subgraph kafka ["Kafka Topics"]
    topicmention["lsst.square-events.squarebot.slack.app.mention"]
    topicchannel["lsst.square-events.squarebot.slack.message.channel"]
    topicgroup["lsst.square-events.squarebot.slack.message.group"]
    topicim["lsst.square-events.squarebot.slack.message.im"]
    topicmpim["lsst.square-events.squarebot.slack.message.mpim"]
    topicinteraction["lsst.square-events.squarebot.slack.interaction"]
    end
    eventapi --> topicmention
    eventapi --> topicchannel
    eventapi --> topicgroup
    eventapi --> topicim
    eventapi --> topicmpim
    interactionapi --> topicinteraction
    subgraph backends ["Backends"]
    backend1["Backend 1"]
    backend2["Backend 2"]
    end
    topicchannel --> backend1
    topicgroup --> backend1
    topicmention --> backend2
    topicinteraction --> backend2

    

Slack sends payloads for message and interaction events to SQuaRE Bot’s REST API. SQuaRE Bot republishes those events into corresponding Kafka topics. Backends subscribe to individual topics to act on relevant events.#

This page was last modified on .