AI サポート デスク用の Supabase および JIRA 統合
上級
これはSupport Chatbot, AI RAG分野の自動化ワークフローで、25個のノードを含みます。主にIf, Set, Slack, JiraTool, FormTriggerなどのノードを使用。 GPT、Supabaseベクター検索、JIRAチケットに基づくSlack ITデスクの自動化
前提条件
- •Slack Bot Token または Webhook URL
- •OpenAI API Key
- •Supabase URL と API Key
使用ノード (25)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "Cxs6nhHKA6YxfS9U",
"meta": {
"instanceId": "3c35a703d75886d08705c211ee107a7513430dd05494ec0c569f28570a3768fa",
"templateCredsSetupCompleted": true
},
"name": "AI Enabled Helpdesk with Supabase and JIRA",
"tags": [
{
"id": "TOmp11D0RTZnlXKe",
"name": "Creator Hub",
"createdAt": "2025-07-27T06:39:31.509Z",
"updatedAt": "2025-07-27T06:39:31.509Z"
}
],
"nodes": [
{
"id": "10e60c11-144e-4ab1-ae6c-08fc81cef3fc",
"name": "Slack トリガー",
"type": "n8n-nodes-base.slackTrigger",
"position": [
-2960,
-496
],
"webhookId": "5d3fa63f-ef0a-48f1-9550-d95e527fba61",
"parameters": {
"options": {
"resolveIds": true
},
"trigger": [
"app_mention",
"message",
"reaction_added"
],
"channelId": {
"__rl": true,
"mode": "list",
"value": "C0963H18JCX",
"cachedResultName": "all-mytest2025"
}
},
"credentials": {
"slackApi": {
"id": "TjO2nAExXHrUpUIC",
"name": "Slack account"
}
},
"typeVersion": 1
},
{
"id": "5e169620-94fd-49d1-98ca-bad8f0c5e388",
"name": "メッセージ送信",
"type": "n8n-nodes-base.slack",
"position": [
-1328,
-864
],
"webhookId": "a840217b-6faa-474a-9cc5-21bcbb9c8db8",
"parameters": {
"text": "={{ $json.output }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $item(\"0\").$node[\"Slack Trigger\"].json[\"channel\"] }}"
},
"otherOptions": {
"thread_ts": {
"replyValues": {
"thread_ts": "={{ $item(\"0\").$node[\"Format Output\"].json[\"thread_ts\"] || $item(\"0\").$node[\"Format Output\"].json[\"ts\"] }}"
}
},
"includeLinkToWorkflow": false
}
},
"credentials": {
"slackApi": {
"id": "TjO2nAExXHrUpUIC",
"name": "Slack account"
}
},
"typeVersion": 2.3
},
{
"id": "89ddaca8-d550-4b4c-a9d6-e26dfe8e9cab",
"name": "シンプルメモリ",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-1664,
-608
],
"parameters": {
"sessionKey": "={{ $json.session_id }}",
"sessionIdType": "customKey",
"contextWindowLength": 20
},
"typeVersion": 1.3
},
{
"id": "85c3c69c-9910-4288-bc8d-2a53586b01d5",
"name": "出力フォーマット",
"type": "n8n-nodes-base.set",
"position": [
-2752,
-496
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2c1ec1ad-72f2-4bcd-bfef-dc12f49de48b",
"name": "channel",
"type": "string",
"value": "={{ $json.channel || '' }}"
},
{
"id": "af7e1d94-946c-4257-824e-a5d91a2b007a",
"name": "ts",
"type": "string",
"value": "={{ $json.ts || '' }}"
},
{
"id": "28583957-bddd-4bd2-b937-79b7554a7a65",
"name": "thread_ts",
"type": "string",
"value": "={{ $json.thread_ts || '' }}"
},
{
"id": "53179618-0ca1-43a2-a416-af8a39f792e0",
"name": "type",
"type": "string",
"value": "={{ $json.type || '' }}"
},
{
"id": "fbe15475-5924-41fa-a7b1-6017ae766a23",
"name": "text",
"type": "string",
"value": "={{ $json.text || ($json.blocks && $json.blocks[0] && $json.blocks[0].elements && $json.blocks[0].elements[0] && $json.blocks[0].elements[0].elements && $json.blocks[0].elements[0].elements[1] ? $json.blocks[0].elements[0].elements[1].text : '') }}"
},
{
"id": "49376ca5-079b-4993-9f15-6847734d9c5d",
"name": "is_bot",
"type": "boolean",
"value": "={{ $json.bot_id ? true : false }}"
},
{
"id": "b0ae1eed-7adf-49d2-b19d-0a1efdb5f435",
"name": "user",
"type": "string",
"value": "={{ $json.user || '' }}"
},
{
"id": "13fab869-b570-444d-903b-11d4b4f0ebe6",
"name": "is_thread_continuation",
"type": "boolean",
"value": "={{ $json.thread_ts ? true : false }}"
},
{
"id": "a148580e-6fe3-4689-be2f-7996c54f6118",
"name": "session_id",
"type": "string",
"value": "={{ $json.thread_ts || $json.ts }}"
},
{
"id": "311146c6-e6cf-492e-a4a9-09066e927879",
"name": "reaction",
"type": "string",
"value": "={{ $json.reaction || '' }}"
},
{
"id": "1b358df2-7062-4c7b-be7d-28bc69611322",
"name": "item_ts",
"type": "string",
"value": "={{ $json.item ? $json.item.ts : '' }}"
},
{
"id": "1e9d1f5a-4e0a-4ed8-8e23-660fe8b6a950",
"name": "is_emoji",
"type": "boolean",
"value": "={{ $item(\"0\").$node[\"Slack Trigger\"].json[\"blocks\"][\"0\"][\"elements\"][\"0\"][\"elements\"][\"0\"][\"type\"] = 'emoji' ? true : false }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "035076b9-543f-407b-8614-1ef4646d6d76",
"name": "Supabase ベクトルストア",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
-2672,
-1296
],
"parameters": {
"mode": "insert",
"options": {
"queryName": "match_documents"
},
"tableName": {
"__rl": true,
"mode": "list",
"value": "documents",
"cachedResultName": "documents"
}
},
"credentials": {
"supabaseApi": {
"id": "pVNuKXPhuugvSPyq",
"name": "Supabase account"
}
},
"typeVersion": 1.3
},
{
"id": "e1e9b80e-2e2a-4d49-96a8-59d0fcb88020",
"name": "OpenAI 埋め込み",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-2768,
-1072
],
"parameters": {
"options": {
"dimensions": 1536
}
},
"credentials": {
"openAiApi": {
"id": "PzzLblAykQPFIDZf",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "013ffcc1-0b7b-4361-897e-547cbfc70341",
"name": "デフォルトデータローダー",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
-2512,
-1072
],
"parameters": {
"options": {},
"dataType": "binary"
},
"typeVersion": 1.1
},
{
"id": "c180560a-746a-4618-a3e2-0906966e438b",
"name": "付箋ノート",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3008,
-1568
],
"parameters": {
"width": 736,
"height": 624,
"content": "# Document Ingestion Flow (RAG Pipeline)\n**Convert** CSV and PDF files to vectors and store them to a vector database like Supabase \n- Provides a web form interface for uploading CSV and PDF knowledge base documents. This can be changed to webhook method if needed.\n- Automatically processes uploaded files through document loaders\n- Generates embeddings using OpenAI and stores them in Supabase vector database\n- Builds a searchable knowledge repository from IT documentation and case histories \n- Only **CSV** and **PDF** files are accepted formats\n- Change **Accepted File Types** to add more file types like .docx"
},
"typeVersion": 1
},
{
"id": "16f584bc-2c84-4c63-aab2-3f8772e29920",
"name": "フォーム送信時",
"type": "n8n-nodes-base.formTrigger",
"position": [
-2928,
-1264
],
"webhookId": "d3185570-8028-4253-81f8-61c48087c78b",
"parameters": {
"options": {
"appendAttribution": false
},
"formTitle": "Document Uploader",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "Upload CSV/PDF Files",
"requiredField": true,
"acceptFileTypes": ".csv,.pdf"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4d487420-983b-44de-a770-dbc8326d164b",
"name": "付箋ノート1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3520,
-1568
],
"parameters": {
"width": 496,
"height": 1360,
"content": "# Workflow Overview\n\n## RAG operation\n- Upload your CSV/PDF files with IT helpdesk data to the vector database like Supabase. You can any RAG workflow. The provided RAG workflow uses Supabase vector store.\n\n## Minimum Slack Configuration\n - **Slack App Event Subscriptions**\n - **Bot Events** subscribed to:\n - app_mention\n - message.channels\n - message.groups (if using private channels)\n\n- **Minimum OAuth and Permissions**\n - app_mentions:read\n - channels:history \n - channels:read\n - groups:history \n - groups:read\n - im:history\n - im:read\n - mpim:history\n - mpim:read\n - users:read\n\n- **Bot Installation and Testing**\n- In your Slack channel, check if bot is present:\n ``` \n /invite @your-bot-name\n```\n### Test if bot responds to mentions:\n```\n@your-bot-name hello\n```\n\nKey features of the workflow\n\n- Workflow maintains the conversation history\n- Initial conversation starter should use @your-bot-name <message>\n- All other messages replied in the thread does not require @your-bot-name\n- Bot will try to get as much information as possible, and will then create a JIRA ticket\n- Bot will present matching cases and knowledge-based articles before creating the ticket\n\nExamples:\n@helpdesk can you please check the status of my ticket JIRA-5\n\n@helpdesk I lost my laptop and i do not have access to my email. Please help."
},
"typeVersion": 1
},
{
"id": "15f6f300-5262-4c5a-9579-0eb788f21a42",
"name": "付箋ノート2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3008,
-928
],
"parameters": {
"width": 1920,
"height": 704,
"content": "# Main Helpdesk Flow (Slack Integration)\n**Overview**\n- **Slack Trigger** captures the incoming messages from the Slack\n- **Change** the field **Channel to Watch** to mention your own channel, or enable **Watch Whole Workspace** to watch the whole workspace\n- **Format output** cleans up the output and creates a clean JSON response\n- **IF** statement checks for **type = app_mention and is_bot = false**\n- Is_bot is required to avoid the Slack message loop issue\n- The second If statement checks for **type = message, is_bot = false, and thread_ts is not empty**\n- **thread_ts** property defines if the message is part of the thread\n- Helpdesk Agent uses an extensive system prompt to act as a helpdesk agent\n- Helpdesk agent uses the MCP client tool to connect to the MCP Server (this has all tools)\n- The workflow has a simple design using MCP\n- Helpdesk Agent uses the **thread_ts** to store previous conversations in memory\n- Change simple memory to a database instead"
},
"typeVersion": 1
},
{
"id": "99a73f90-718f-4529-bd3f-c9340b432731",
"name": "付箋ノート4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2256,
-1568
],
"parameters": {
"width": 1168,
"height": 624,
"content": "## MCP Server Overview\n- Utilizes Model Context Protocol for scalable tool integration\n- Centralizes Supabase vector search and JIRA operations in a dedicated MCP server\n- Enables the AI agent to access multiple external systems through a unified interface\n\n## MCP Server Working\n- The MCP Server will receive requests from the MCP client in the Slack helpdesk bot responder workflow\n- The MCP Server uses Supabase and JIRA\n- Supabase will be used to search knowledge based articles in embedded vector database. \n- JIRA create ticket will create a new helpdesk ticket\n- JIRA Search will search existing tickets which match the reported issue\n- JIRA get status checks for the status of the ticket\n- JIRA Change priority tool changes the priority to Highest, High, Medium, Low, Lowest\n- JIRA change log tool helps to get all the changes on the ticket\n "
},
"typeVersion": 1
},
{
"id": "8287cf14-7a48-4d54-9d3c-5b0961f1759a",
"name": "MCPサーバートリガー",
"type": "@n8n/n8n-nodes-langchain.mcpTrigger",
"position": [
-1424,
-1440
],
"webhookId": "18bad880-fe92-4122-b469-5b31dacde393",
"parameters": {
"path": "heldpesk"
},
"typeVersion": 2
},
{
"id": "21e51e84-3f60-4276-8e10-da76f5e6b13b",
"name": "Supabase ベクトルストア1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
-2048,
-1088
],
"parameters": {
"mode": "retrieve-as-tool",
"options": {},
"tableName": {
"__rl": true,
"mode": "list",
"value": "documents",
"cachedResultName": "documents"
},
"toolDescription": "Use this tool to retrieve data for the Helpdesk queries and to check if an existing issue, ticket or a knowledge base exist for the problem being reported by the user"
},
"credentials": {
"supabaseApi": {
"id": "pVNuKXPhuugvSPyq",
"name": "Supabase account"
}
},
"typeVersion": 1.3
},
{
"id": "1f0603a4-ea16-42cf-a8ac-19c9116eaee1",
"name": "OpenAI埋め込み1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-2192,
-1104
],
"parameters": {
"options": {
"dimensions": 1536
}
},
"credentials": {
"openAiApi": {
"id": "PzzLblAykQPFIDZf",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "972d7b94-7d35-4999-a712-ded5a9cdd6bc",
"name": "チケット作成",
"type": "n8n-nodes-base.jiraTool",
"position": [
-1632,
-1072
],
"parameters": {
"project": {
"__rl": true,
"mode": "list",
"value": "10000",
"cachedResultName": "Helpdesk"
},
"summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Summary', ``, 'string') }}",
"issueType": {
"__rl": true,
"mode": "list",
"value": "10004",
"cachedResultName": "Service Request"
},
"additionalFields": {
"description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}"
}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "hWrwVbyUcD8HSAYf",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "c405e5d0-3a1b-47f1-916f-6907e732494f",
"name": "検索",
"type": "n8n-nodes-base.jiraTool",
"position": [
-1760,
-1072
],
"parameters": {
"options": {},
"operation": "getAll",
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}"
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "hWrwVbyUcD8HSAYf",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "63ae0337-0501-44ba-b4e7-d022bbd4e6fd",
"name": "ステータス取得",
"type": "n8n-nodes-base.jiraTool",
"position": [
-1504,
-1072
],
"parameters": {
"issueKey": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Issue_Key', ``, 'string') }}",
"operation": "transitions",
"additionalFields": {}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "hWrwVbyUcD8HSAYf",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "867e7434-4578-47af-a274-d8933b466063",
"name": "helpdesk_tools",
"type": "@n8n/n8n-nodes-langchain.mcpClientTool",
"position": [
-1504,
-608
],
"parameters": {
"sseEndpoint": "https://idsingh.app.n8n.cloud/mcp/heldpesk"
},
"typeVersion": 1
},
{
"id": "9cf4f30d-4f93-4ba4-924d-4451e56abbcc",
"name": "優先度変更",
"type": "n8n-nodes-base.jiraTool",
"position": [
-1376,
-1072
],
"parameters": {
"issueKey": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Issue_Key', ``, 'string') }}",
"operation": "update",
"updateFields": {
"priority": {
"__rl": true,
"mode": "id",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Priority', ``, 'string') }}",
"__regex": "^([0-9]{1,})"
}
},
"descriptionType": "manual",
"toolDescription": "Use this tool to change the priority on JIRA ticket to High"
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "hWrwVbyUcD8HSAYf",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "d089dac5-8ca1-4265-9997-fbac5c8b7e59",
"name": "変更ログ",
"type": "n8n-nodes-base.jiraTool",
"position": [
-1248,
-1072
],
"parameters": {
"issueKey": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Issue_Key', ``, 'string') }}",
"operation": "changelog"
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "hWrwVbyUcD8HSAYf",
"name": "Jira SW Cloud account"
}
},
"typeVersion": 1
},
{
"id": "51365260-33da-44c8-bfdd-0fe857068f4c",
"name": "app_mention確認",
"type": "n8n-nodes-base.if",
"position": [
-2528,
-496
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1c9327b8-9e92-404a-92e0-577874be46a8",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.type }}",
"rightValue": "app_mention"
},
{
"id": "f01f9beb-7bd2-4d2b-9d25-7746e8c12739",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.is_bot }}",
"rightValue": ""
},
{
"id": "eac3e4ed-a524-4eed-88f5-8ec452d10332",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.is_emoji }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "b14bbdba-bcfb-4980-af39-811da479cc22",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1872,
-608
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "gpt-4.1"
},
"options": {
"topP": 1,
"temperature": 0.7,
"presencePenalty": 0,
"frequencyPenalty": 0
}
},
"credentials": {
"openAiApi": {
"id": "PzzLblAykQPFIDZf",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "9a9c6ceb-9e4b-4190-928d-3a91a69a096c",
"name": "AIヘルプデスク",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1776,
-864
],
"parameters": {
"text": "={{ $json.text }}",
"options": {
"systemMessage": "=You are AIhelpdesk, an expert IT helpdesk assistant working in Slack with access to a comprehensive knowledge base and case history database.\n\n## CRITICAL THREAD AWARENESS RULES:\n- THREAD ID: {{ $json.thread_ts || $json.ts }}\n- If thread_ts exists in the input: This is a CONTINUATION of an existing conversation - DO NOT greet again\n- If no thread_ts: This is a NEW conversation - greet once only\n- NEVER say \"Hi\" or \"Hello\" or introduce yourself in thread continuations\n- Remember: Each thread is ONE continuous support session\n\n## REACTION-BASED INTERACTIONS:\nWhen asking users for confirmations or actions, ALWAYS offer emoji reactions as options:\n\n**Available Reaction Options:**\n- 👍 (`:+1:`) - Create ticket / Yes / Agree\n- ✅ (`:white_check_mark:`) - Confirm action\n- ❌ (`:x:`) - Cancel / No / Disagree \n- ℹ️ (`:information_source:`) - Need more info\n- 👀 (`:eyes:`) - Escalate to human\n- 🆘 (`:sos:`) - Mark as urgent\n\n**How to Ask for Reactions:**\nInstead of: \"Do you want me to create a ticket?\"\nSay: \"Would you like me to create a helpdesk ticket for this issue? \n👍 Yes, create ticket\n❌ No, let's try more solutions first\"\n\nInstead of: \"Should I escalate this?\"\nSay: \"I can escalate this to our Level 2 team. Please react:\n👀 Escalate to human support \n👍 Create ticket first\nℹ️ I need more information\"\n\n## BEFORE RESPONDING - ALWAYS:\n1. **Search Knowledge Base**: Use available MCP tools to search vector database for:\n - Similar issues from knowledge base articles\n - Previous case resolutions that match the problem\n - Step-by-step procedures for the reported issue\n\n2. **Analyze Thread Context**: \n - Check if thread_ts exists: {{ $json.thread_ts }}\n - If continuing thread: Reference previous discussion points\n - Build on what was already established\n\n## MCP VECTOR SEARCH INSTRUCTIONS:\nWhen user reports an issue, IMMEDIATELY search your vector database using available MCP tools:\n- Search for keywords from the user's problem description\n- Look for both knowledge base articles AND historical case resolutions\n- **DO NOT** present knowledge base articles AND historical case resolutions more than 2 times. Automatically create a ticket if the user still engaged.\n- Use specific technical terms and error messages for better matches\n- Present findings as: \"Based on our knowledge base...\" or \"I found similar cases...\"\n- **ALWAYS** ask if the provided information is helpful or to create a helpdesk ticket.\n- If the user ask to create ticket then *DO NOT** search the vector database anymore.\n\n## MCP JIRA SEARCH INSTRUCTIONS:\nAfter the Vector search, IMMEDIATELY search the JIRA for existing tickets\n- Search for keywords from the user's problem description\n- Get a max of 5 tickets which are similar or close to the issue reported \n- Use specific technical terms and error messages for better matches\n- Present findings as: \"Based on existing helpdesk tickets...\" or \"I found similar cases...\"\n\n## RESPONSE PATTERNS:\n\n### NEW CONVERSATION (no thread_ts):\n\"Hi! I'm <your name>, your IT assistant. [Search vector DB] Based on our knowledge base, I can help you with [issue]. To get started: [specific questions]\"\n\n### CONTINUING CONVERSATION (has thread_ts):\n\"[Search vector DB] Thanks for that info. Based on similar cases, let's try: [specific steps]. I found this worked for [reference case TC-####]\"\n\n### NEW CONVERSATION (no thread_ts):\n\"Hi! I'm AIhelpdesk, your IT assistant. [Search vector DB] Based on our knowledge base, I can help you with [issue]. Let's start with: [specific steps]\n\nIf these don't work, I can create a ticket:\n👍 Create ticket now\nℹ️ Try more solutions first\"\n\n### CONTINUING CONVERSATION (has thread_ts):\n\"[Search vector DB] Thanks for that info. Based on similar cases, let's try: [specific steps]. \n\n\n\n## DIAGNOSTIC APPROACH:\n1. **Search first**: Always check knowledge base and case history before responding\n2. **Reference findings**: Mention specific KB articles or case numbers when available \n3. **Ask targeted questions**: Based on what you found in the vector database\n4. **Provide proven solutions**: Reference successful resolutions from case history\n\n## THREAD CONTINUATION EXAMPLES:\n\n❌ WRONG: \"Hi again! How can I help you today?\"\n✅ RIGHT: \"I found a similar case (TC-2024-007) with the same BSOD error. Let's check your RAM first.\"\n\n❌ WRONG: \"Hello! I'm <your name>. What seems to be the problem?\" \n✅ RIGHT: \"That error code matches our KB article on printer spooler issues. Let's restart the print service.\"\n\n## VECTOR SEARCH STRATEGY:\n- Extract key terms: error messages, software names, hardware models\n- Search patterns: \"[error message]\", \"[software] + problem\", \"[hardware] + troubleshooting\"\n- Reference format: \"According to KB article...\" or \"Case TC-#### had this exact issue...\"\n- Always provide case/article numbers when referencing database findings\n\n## ESCALATION PATTERNS:\nWhen user reacts with 👀 (escalate):\n\"I'm escalating this to our Level 2 support team. They have more advanced tools and can provide hands-on assistance. \n\nWhat happens next:\n- Level 2 engineer will contact you within 2 hours\n- They may ask to remote into your system\n- I'll create a detailed handoff ticket: [ticket number]\n\nAnything else I can help with while you wait?\"\n\n## HELPDESK TICKET STRATEGY:\n- Use the MCP client tool to create Helpdesk ticket\n- Clearly send the below information\n - Issue Description = the main issue described by the user\n - Issue details = The conversation history\n - Username\n- **ALWAYS** provide the ticket number in your response\n- Judge the level of priority from the conversation as assign HIGH, MEDIUM or LOW \n- If unable to judge the priority, check with the user\n- Use **Change Priority** tool to change the priority on the tickets\n- Use the below table to convert the status to JIRA priority ID. **Pass** the ID to the change priority tool\n\nHighest = 1\nHigh = 2\nMedium = 3\nLow = 4\nLowest = 5\n\n## OUTPUT FORMAT:\n1. **Vector search results summary** (if relevant matches found)\n2. **Targeted response** based on search findings\n3. **Specific next steps** from proven solutions\n4. **Follow-up questions** if more info needed\n\n## KEY RULES:\n- NEVER greet in thread continuations (when thread_ts exists)\n- ALWAYS search vector database before responding\n- REFERENCE specific cases or KB articles when available\n- BUILD on previous thread context\n- Use thread_ts {{ $json.thread_ts || $json.ts }} for session tracking\n- **ALWAYS** use professional and empathatic tone\n- ALWAYS check with user for any more help needed onc ethe ticket has been created",
"returnIntermediateSteps": false
},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "21769805-9cd6-4b47-a106-e723c0f08e79",
"name": "スレッド確認",
"type": "n8n-nodes-base.if",
"position": [
-2272,
-400
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1e2d6aa6-cd50-4a77-9efb-e56066fe46ee",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.type }}",
"rightValue": "message"
},
{
"id": "79dd2304-0b01-4063-a80d-bae909294108",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.thread_ts }}",
"rightValue": "app_mention"
},
{
"id": "bd1624bc-fda9-4c4c-a905-4f127204f93e",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.is_bot }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "6eb3e207-1e41-435c-84ef-9e9edae5124e",
"connections": {
"b14bbdba-bcfb-4980-af39-811da479cc22": {
"ai_languageModel": [
[
{
"node": "9a9c6ceb-9e4b-4190-928d-3a91a69a096c",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"c405e5d0-3a1b-47f1-916f-6907e732494f": {
"ai_tool": [
[
{
"node": "8287cf14-7a48-4d54-9d3c-5b0961f1759a",
"type": "ai_tool",
"index": 0
}
]
]
},
"d089dac5-8ca1-4265-9997-fbac5c8b7e59": {
"ai_tool": [
[
{
"node": "8287cf14-7a48-4d54-9d3c-5b0961f1759a",
"type": "ai_tool",
"index": 0
}
]
]
},
"9a9c6ceb-9e4b-4190-928d-3a91a69a096c": {
"main": [
[
{
"node": "5e169620-94fd-49d1-98ca-bad8f0c5e388",
"type": "main",
"index": 0
}
]
]
},
"63ae0337-0501-44ba-b4e7-d022bbd4e6fd": {
"ai_tool": [
[
{
"node": "8287cf14-7a48-4d54-9d3c-5b0961f1759a",
"type": "ai_tool",
"index": 0
}
]
]
},
"972d7b94-7d35-4999-a712-ded5a9cdd6bc": {
"ai_tool": [
[
{
"node": "8287cf14-7a48-4d54-9d3c-5b0961f1759a",
"type": "ai_tool",
"index": 0
}
]
]
},
"85c3c69c-9910-4288-bc8d-2a53586b01d5": {
"main": [
[
{
"node": "51365260-33da-44c8-bfdd-0fe857068f4c",
"type": "main",
"index": 0
}
]
]
},
"89ddaca8-d550-4b4c-a9d6-e26dfe8e9cab": {
"ai_memory": [
[
{
"node": "9a9c6ceb-9e4b-4190-928d-3a91a69a096c",
"type": "ai_memory",
"index": 0
}
]
]
},
"10e60c11-144e-4ab1-ae6c-08fc81cef3fc": {
"main": [
[
{
"node": "85c3c69c-9910-4288-bc8d-2a53586b01d5",
"type": "main",
"index": 0
}
]
]
},
"867e7434-4578-47af-a274-d8933b466063": {
"ai_tool": [
[
{
"node": "9a9c6ceb-9e4b-4190-928d-3a91a69a096c",
"type": "ai_tool",
"index": 0
}
]
]
},
"9cf4f30d-4f93-4ba4-924d-4451e56abbcc": {
"ai_tool": [
[
{
"node": "8287cf14-7a48-4d54-9d3c-5b0961f1759a",
"type": "ai_tool",
"index": 0
}
]
]
},
"21769805-9cd6-4b47-a106-e723c0f08e79": {
"main": [
[
{
"node": "9a9c6ceb-9e4b-4190-928d-3a91a69a096c",
"type": "main",
"index": 0
}
],
[]
]
},
"51365260-33da-44c8-bfdd-0fe857068f4c": {
"main": [
[
{
"node": "9a9c6ceb-9e4b-4190-928d-3a91a69a096c",
"type": "main",
"index": 0
}
],
[
{
"node": "21769805-9cd6-4b47-a106-e723c0f08e79",
"type": "main",
"index": 0
}
]
]
},
"e1e9b80e-2e2a-4d49-96a8-59d0fcb88020": {
"ai_embedding": [
[
{
"node": "035076b9-543f-407b-8614-1ef4646d6d76",
"type": "ai_embedding",
"index": 0
}
]
]
},
"1f0603a4-ea16-42cf-a8ac-19c9116eaee1": {
"ai_embedding": [
[
{
"node": "21e51e84-3f60-4276-8e10-da76f5e6b13b",
"type": "ai_embedding",
"index": 0
}
]
]
},
"16f584bc-2c84-4c63-aab2-3f8772e29920": {
"main": [
[
{
"node": "035076b9-543f-407b-8614-1ef4646d6d76",
"type": "main",
"index": 0
}
]
]
},
"013ffcc1-0b7b-4361-897e-547cbfc70341": {
"ai_document": [
[
{
"node": "035076b9-543f-407b-8614-1ef4646d6d76",
"type": "ai_document",
"index": 0
}
]
]
},
"21e51e84-3f60-4276-8e10-da76f5e6b13b": {
"ai_tool": [
[
{
"node": "8287cf14-7a48-4d54-9d3c-5b0961f1759a",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - サポートチャットボット, AI RAG検索拡張
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
ビジネスのAIコマンドセンター:Google Workspaceモジュール型アクター、ベクター検索、マルチチャネルレポート
ビジネスAIコマンドセンター:Google Workspaceモジュール型アジンス、ベクター検索、マルチチャネルレポート
Set
Gmail
Slack
+
Set
Gmail
Slack
80 ノードPaul
文書抽出
Telegram AIサポートチャットボット(マルチモーダル入力)
GPT-4とSupabase RAGを使って多言語Telegramサポートボットを作成
If
Set
Code
+
If
Set
Code
51 ノードEzema Kingsley Chibuzo
サポートチャットボット
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
コンテキスト・ハイブリッドRAG AIコピー
RAGアプリケーション向けのGoogle DriveからSupabaseコンテキストベクトルデータベースへの同期
If
Set
Code
+
If
Set
Code
76 ノードMichael Taleb
AI RAG検索拡張
HR チャットボット(RAG システム)
Slack、S3、GPT-4.1-miniを使用したRAG人事ポリシー検索システム
Set
Aws S3
Slack
+
Set
Aws S3
Slack
24 ノードHumble Turtle
AI RAG検索拡張
GPT-5・知識検索・文書文脈でHighLevel CRMを自動化
GPT-5、知識検索、ドキュメント文脈によるHighLevel CRMの自動化
Set
Gmail
Slack
+
Set
Gmail
Slack
55 ノードPaul
顧客管理
ワークフロー情報
難易度
上級
ノード数25
カテゴリー2
ノードタイプ15
作成者
inderjeet Bhambra
@idsinghbhambraI am on a journey to learn and spread the automations through n8n workflows.
外部リンク
n8n.ioで表示 →
このワークフローを共有