I should be able to integrate my Space with Slack

(User Story, Investigate , Priority: High, Test Status: No automated tests yet , Reported By Justin du Coeur, )
Summary: This is the Epic for a high-level feature, which we will hopefully get to.
This came up in the context of designing the Arisia Job Management System -- the Arisia team works mainly through Slack, and so there is some friction involved in the interaction between that and the Issues Space in Querki. What could be done to ease this.
At a high level, it wouldn't be too hard to create a Querki/Slack integration via Slack's App API. The goal here would be to have a "Querki App" that Slack channels could install.
A given channel should generally be connected to a specific Querki Space.
We'd have to think carefully about security here, and making sure that both the Slack and Querki sides agree to connect. We also have to think about how this interacts with Querki's own security model, and who gets to do what. Do we have any good way to validate that a given Slack user is the same as a given Querki user?
Ideally, we should have several slash-commands available in Slack, such as:
  • /q [CMD] [PARAMS] -- invokes a new "Chat Command" system in Querki, that lets Spaces define commands with parameters.
  • /querki [CMD] [PARAMS] -- same, with a harder-to-spell but more unique slash-command.
  • /create [MODEL] [NAME] -- creates a new Thing with the specified Model.
  • /conv [TID] [MSG] -- starts a Conversation on the specified Thing.
  • /c [MSG] -- adds a comment to the most recent Conversation.
The latter bit is the trickiest. Ideally, the /conv command would open a Slack thread, and all comments in that thread would go directly into the conversation, but I don't think Slack gives us that much access. If it were possible to get the message ID of the command itself, and have a link in Querki to that position in Slack, that wouldn't be half bad.
Actually, given that Slack is explicitly bot-friendly, we might be able to make this work. Look into that more closely: can we catch the /conv command, start a thread, and then listen to all replies in that thread? That would be fabulous. I suspect the Real Time Messaging API may be our friend here. (Although, on further reading, the Events API may be event more correct.)
It should also be possible to send notifications to Slack. For example, for the Jobs Issues Space, newly-created Stories should result in a message on the Slack channel.