Slack and Microsoft Teams chat channels
For adminsSlack and Teams chat channels
Section titled “Slack and Teams chat channels”Keystone can accept message events from Slack and Microsoft Teams and turn them into helpdesk requests. The flow is the same on both platforms: a chat user posts a message in a configured channel, the platform fires a webhook to Keystone, and Keystone normalises the payload before handing it to the ticket pipeline.
Slack setup
Section titled “Slack setup”You need a Slack app with the Events API enabled and the message.channels event subscription. Two pieces of config wire it to Keystone:
- Request URL — point Slack at
https://<your-keystone>/inbound/chat/slack. Slack will send aurl_verificationchallenge first; Keystone responds automatically. - Signing secret — copy the app’s signing secret into the
SLACK_SIGNING_SECRETenvironment variable. Every event Keystone receives is HMAC-verified against this secret using Slack’sv0:<timestamp>:<rawBody>scheme. Events older than 5 minutes are rejected as replays.
Without the signing secret set, the webhook refuses every request — there is no opt-out.
Microsoft Teams setup
Section titled “Microsoft Teams setup”Teams uses Bot Framework webhooks rather than the Events API. The current Teams adapter accepts events but rejects them in production until JWT verification against the Bot Framework JWKS is wired in. Use Teams in dev/test only for now, or stick with Slack until the Teams JWT validation lands.
What happens to the message
Section titled “What happens to the message”The adapter pulls these fields from the payload:
- The author’s external ID (Slack user ID or Teams user ID).
- The channel ID and, where present, a thread ID so subsequent replies can append to the same ticket.
- The message body (plain text — formatting is dropped).
The inbound chat controller currently accepts and normalises the payload, then returns 202 Accepted. It does not yet create a ticket — that dispatch step is the next piece of work. Until it lands, configure the integration so it’s ready, but expect chat messages to land in logs rather than in the ticket queue.
Limitations
Section titled “Limitations”- Bot replies, message edits, and threaded subtypes are filtered out — only top-level messages from real users are normalised.
- The adapter doesn’t currently handle Slack file uploads or Teams attachment cards. Files referenced in chat won’t make it into the ticket.
- Per-channel routing (e.g. “this channel maps to the IT department”) isn’t yet a configurable setting — every accepted message will go to the workspace’s default queue once the dispatch step is wired.