Overview
Receives messages to technical support and classifies them.
Requirements
- OpenRouter/OpenAI/Anthropic API key
- Google Gemini API key — for embeddings (models/gemini-embedding-2-preview) used with Qdrant
- Slack bot — configured on the Slack side, sends POST to the Webhook node; the token from the webhook is compared against CHAT_TOKEN
- Mattermost MCP
- Qdrant
- Google Calendar OAuth credentials
- Webhook token — a static CHAT_TOKEN value in the SetVars node, must match the Token configured in the Mattermost outgoing webhook
How it works
- Message reception. Slack sends a POST with fields token, text, post_id, channel_id, user_name, file_ids, etc. to the Webhook when @devops-duty is mentioned in a subscribed channel. The message is validated using the token and the required fields are extracted.
- Classification via AI Agent. The agent analyzes the request and determines which category to assign it to.
- Parsing the agent's response.
- Resolving user name by id.
- Routing by category. Switch dispatches the payload across 7 branches (modify_infrastructure, incident, question, ci_cd_error, new_system, announcement, other) — all branches are intentionally empty in the template, so users can plug in their own sub-workflows.
How to use
- Import the workflow into n8n, verify compatibility with v2.18.2.
- Connect credentials:
- OpenRouter/OpenAI/Anthropicr (Chat Model)
- Google Gemini (Embeddings)
- Google Calendar OAuth (GetDutyEvent)
- Qdrant API (Vector Store) — set your own URL and API key
- Replace the Slack MCP URL i
- Create a Qdrant collection
- Generate a webhook token
- Configure the Slack bot to send messageto outgoing webhook
- Optionally configure an Error Workflow