fboës - Der Blog

Slack-API als JSON-RSS-Ersatz

Schon vor geraumer Zeit hatte ich mich mit der Idee beschäftigt, wie man Syndikation nicht mit dem im Parsing etwas aufwändigen XML, sondern eher mit JSON lösen kann. Meine Idee damals hieß JSON-RSS, und war analog zu der Struktur von RSS aufgebaut. Tatsächlich hat zufälligerweise Slack ein Format entwickelt, was analog zu JSON-RSS Syndikation via JSON löst – mit einem zusätzlichen Nebeneffekt.

Die Slack Message-API beschreibt dabei eine Liste von Einträgen (attachement genannt), in der man URLs, Titel, Beschreibungstexte und Veröffentlichungsdatum in JSON transportieren kann. Dazu liefern sie den praktischen Slack Message-Builder, mit dem man sein generiertes JSON auch direkt testen kann. Damit entspricht das Slack-JSON inhaltlich im Groben und Ganzen RSS bzw. ATOM.

{
  "response_type": "ephemeral",
  "text": "fboës - Der Blog | Startseite", // <title>
  "attachments": [
    { // <item>
      "title": "Slack-API als JSON-RSS-Ersatz", // <title>
      "title_link": "https://journal.3960.org/posts/slack-api-json-rss-ersatz/", // <link>
      "text": "Schon vor geraumer Zeit hatte ich mich mit der Idee beschäftigt…", // <description>
      "author_name": "Frank Boës", // <author>
      "ts": 1491245995  // <pubdate>
      "thumb_url": "https://journal.3960.org/posts/slack-api-json-rss-ersatz/slack.jpg", // <enclosure>
      "fallback": "Slack-API als JSON-RSS-Ersatz - https://journal.3960.org/posts/slack-api-json-rss-ersatz/", // <description> fallback
      "footer": "fboës - Der Blog", // <title> of feed
    }
  ]
}

Nun hatte Slack dieses Format eigentlich gar nicht für Syndikation entwickelt, sondern als Datenquelle für Slack-Bots. Denn innerhalb des Slack-Messengers kann dieses JSON direkt ausgegeben werden.

Darum kann man das JSON nicht nur für selbst entwickelte Schnittstellen verwenden, sondern auch mittels Slack Slash Command zu seinem eigenen Slack-Kanal hinzufügen. So könnte man sich mit einem Slack-Kommando wie /news die aktuellsten Artikel einer beliebigen Seite anzeigen lassen.

Dementsprechend produziert das Blogophon nun auch eine slack.json, die man mittels Slash Command in Slack einbinden kann.