Jira offene Probleme und Kommentare in Pinecone laden

Experte

Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 30 Nodes. Hauptsächlich werden Set, Code, Merge, Switch, HttpRequest und andere Nodes verwendet. Ein RAG-betriebener Support-Agent für Jira-Probleme mit Pinecone und OpenAI erstellen

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • OpenAI API Key
  • Pinecone API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "hhg9b3hGgDJN5yu9",
  "meta": {
    "instanceId": "77c333719a87760a438ca0407d9e341f10b2a6c6b59ac48593f7c1ae31e41db5"
  },
  "name": "Load Jira open issues with comments into Pinecone",
  "tags": [],
  "nodes": [
    {
      "id": "58e0fa98-cdf6-4c2a-85f8-866ccdc9f150",
      "name": "Dokumenten-Chunker",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "position": [
        3280,
        1040
      ],
      "parameters": {
        "options": {
          "splitCode": "markdown"
        },
        "chunkSize": 512,
        "chunkOverlap": 50
      },
      "typeVersion": 1
    },
    {
      "id": "d03d3708-3160-444c-835c-170e5fc1e14a",
      "name": "In txt konvertieren",
      "type": "n8n-nodes-base.code",
      "position": [
        2288,
        496
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const html = item.json.html || \"\";\n\n  const text = html\n    .replace(/<\\s*br\\s*\\/?>/gi, \"\\n\")\n    .replace(/<\\/p\\s*>/gi, \"\\n\")\n    .replace(/<[^>]*>/g, \"\")\n    .replace(/&nbsp;/g, \" \")\n    .replace(/&amp;/g, \"&\")\n    .replace(/&lt;/g, \"<\")\n    .replace(/&gt;/g, \">\")\n    .replace(/&quot;/g, \"\\\"\")\n    .replace(/&#39;/g, \"'\")\n    .replace(/(\\r\\n|\\n|\\r|\\\\n|\\\\r|\\\\\\\\n)/g, \"\")  \n    .replace(/\\s+/g, \" \")\n    .replace(/!\\S+?\\.(png|jpe?g|gif|bmp|pdf|docx?|xlsx?|zip|rar)(\\|[^!]*)?!/gi, \"\")\n    .replace(/\\{panel:[^}]*\\}/gi, \"\")\n\n    .trim();\n\n  return {\n    json: {\n      ...item.json,\n      text\n    }\n  };\n});\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "6c90b512-f3fa-4262-b111-accea4260ae3",
      "name": "Kommentare abrufen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1616,
        848
      ],
      "parameters": {
        "url": "=https://jira.siav.it/rest/api/2/issue/{{ $json.issue_key }}/comment",
        "options": {
          "allowUnauthorizedCerts": true
        },
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth"
      },
      "typeVersion": 4
    },
    {
      "id": "6aecfae3-de7e-4fbb-a53f-908da0316351",
      "name": "Kommentar-Array erstellen",
      "type": "n8n-nodes-base.code",
      "position": [
        1808,
        848
      ],
      "parameters": {
        "jsCode": "const issueMap = {};\n\nitems.forEach(item => {\n  const comments = item.json.comments || [];\n\n  comments.forEach(comment => {\n    const url = comment.self || '';\n    const match = url.match(/issue\\/(\\d+)\\//);\n    const issueId = match ? match[1] : 'unknown';\n\n    const body = comment.body?.trim();\n    if (!body) return;\n\n    // Filtri per commenti inutili\n    const onlyImage = /^!?[^\\s]+\\.(png|jpg|jpeg|gif|bmp)\\|?.*!?$/i.test(body);\n    const onlyDot = body === '.';\n    const isEmptyMarkdown = /^(\\*|_|~|`)+$/g.test(body);\n    if (onlyImage || onlyDot || isEmptyMarkdown) return;\n\n    if (!issueMap[issueId]) {\n      issueMap[issueId] = {\n        issue_id: issueId,\n        comments: []\n      };\n    }\n\n    issueMap[issueId].comments.push(body);\n  });\n});\n\n// Output finale\nreturn Object.values(issueMap).map(issue => ({\n  json: {\n    issue_id: issue.issue_id,\n    comments_text: issue.comments.join(';')  \n  }\n}));\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "bf4f7290-2d34-4665-b80e-5d78db98fb6e",
      "name": "Pinecone Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        2608,
        496
      ],
      "parameters": {
        "mode": "insert",
        "options": {
          "clearNamespace": "={{($runIndex)==0 }}",
          "pineconeNamespace": "jira"
        },
        "pineconeIndex": {
          "__rl": true,
          "mode": "id",
          "value": "openissues"
        }
      },
      "credentials": {
        "pineconeApi": {
          "id": "d4Df4tS2jOYakidJ",
          "name": "PineconeApi account 2"
        }
      },
      "typeVersion": 1.2,
      "alwaysOutputData": true
    },
    {
      "id": "fc8455dd-e542-4af0-ab5c-7e5720061a15",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        2736,
        864
      ],
      "parameters": {
        "options": {
          "dimensions": 512
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ef4089fb-aae4-412d-b5ae-c02dddd31416",
      "name": "Zeitplan-Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        528,
        464
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 8,11,14,17 * * 1-5"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1d06729e-6390-4097-bd44-40bc0995e781",
      "name": "Probleme extrahieren",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1136,
        480
      ],
      "parameters": {
        "url": "https://jira.siav.it/rest/api/2/search",
        "options": {
          "response": {
            "response": {}
          },
          "allowUnauthorizedCerts": true
        },
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "maxResults",
              "value": "=25"
            },
            {
              "name": "jql",
              "value": "=project = CS AND issuetype = Case AND resolution = Unresolved AND created >= -365d "
            },
            {
              "name": "startAt",
              "value": "={{($runIndex)*25 }}"
            }
          ]
        },
        "nodeCredentialType": "jiraSoftwareServerPatApi"
      },
      "typeVersion": 4
    },
    {
      "id": "a7accfcb-7332-485f-a05e-b79b4470e3af",
      "name": "Relevante Informationen extrahieren",
      "type": "n8n-nodes-base.code",
      "position": [
        1392,
        480
      ],
      "parameters": {
        "jsCode": "return items[0].json.issues.map(issue => {\n  const rawDate = issue.fields.customfield_10317?.ongoingCycle?.startTime?.jira ?? null;\n  const formattedDate = rawDate \n    ? new Date(rawDate).toLocaleString(\"it-IT\", {\n        year: \"numeric\",\n        month: \"2-digit\",\n        day: \"2-digit\",\n        hour: \"2-digit\",\n        minute: \"2-digit\",\n        hour12: false\n      }).replace(',', '') \n    : null;\n\n  return {\n    json: {\n      issue_key: issue.key ?? null,\n      issue_id: issue.id ?? null,\n      summary: issue.fields.summary ?? null,\n      issue_description: issue.fields?.description ?? null,\n      product: issue.fields.customfield_10402?.[0].replace(/\\s*\\(.*?\\)\\s*/g, '').trim() ?? null,\n      level: issue.fields.customfield_10408?.[0].replace(/\\s*\\(.*?\\)\\s*/g, '').trim() ?? null,\n      customer: issue.fields.customfield_10409?.[0]?.replace(/\\s*\\(.*?\\)\\s*/g, '').trim() ?? null,\n      status: issue.fields.customfield_10001?.currentStatus?.status ?? null,\n      classification: issue.fields.customfield_10322?.value ?? null,\n      registration: formattedDate\n    }\n  };\n});\n\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "e0869f53-b22f-4f91-b0dc-c222b297a23b",
      "name": "MCP Server Trigger",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        3920,
        368
      ],
      "webhookId": "460881ea-5422-476c-bf03-b7d6e2447cb4",
      "parameters": {
        "path": "jiraticket"
      },
      "typeVersion": 2
    },
    {
      "id": "b632445b-ddbb-4984-a531-c71bd88bcc0d",
      "name": "Haftnotiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3648,
        304
      ],
      "parameters": {
        "color": 6,
        "width": 544,
        "height": 912,
        "content": "## Published also as MCP tool"
      },
      "typeVersion": 1
    },
    {
      "id": "a04cee53-9d8f-49bd-9fbf-ca0f3486f790",
      "name": "offeneProbleme",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        3744,
        592
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "options": {
          "pineconeNamespace": "jira"
        },
        "pineconeIndex": {
          "__rl": true,
          "mode": "id",
          "value": "openissues"
        },
        "toolDescription": "Recupera informazioni sui ticket aperti per i clienti di Siav.\nUsa sempre il metadato 'cliente' per filtrare i risultati di ricerca. "
      },
      "credentials": {
        "pineconeApi": {
          "id": "d4Df4tS2jOYakidJ",
          "name": "PineconeApi account 2"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "26c7773f-d86e-4bd7-9b0b-8b549471c70a",
      "name": "openIssues (Data Loader)",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        3072,
        848
      ],
      "parameters": {
        "options": {
          "metadata": {
            "metadataValues": [
              {
                "name": "ticket",
                "value": "={{ $json.issue_key }}"
              },
              {
                "name": "issue_id",
                "value": "={{ $json.issue_id }}"
              },
              {
                "name": "customer",
                "value": "={{ $json.customer }}"
              },
              {
                "name": "product",
                "value": "={{ $json.product }}"
              },
              {
                "name": "classification",
                "value": "={{ $json.classification }}"
              },
              {
                "name": "registrazion",
                "value": "={{ $json.registration }}"
              },
              {
                "name": "state",
                "value": "={{ $json.status }}"
              },
              {
                "name": "applicationmanagementLevel",
                "value": "={{ $json.level }}"
              }
            ]
          }
        },
        "jsonData": "=Customer: {{ $json.customer }}\nSummary: {{ $json.summary }}\nDescription: {{ $json.issue_description }}",
        "jsonMode": "expressionData"
      },
      "typeVersion": 1
    },
    {
      "id": "0f1e9d41-9100-4408-8664-e668c0e6e9e5",
      "name": "Alle offenen Probleme geladen?",
      "type": "n8n-nodes-base.switch",
      "position": [
        3040,
        496
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Exit",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "1755b1cf-f0f0-472d-b5d6-c2df6f2236e6",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ ($runIndex+1) * 25 > $('Extract Issues').item.json.total  }}",
                    "rightValue": 100
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "cicle",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "75aed4b9-24a5-487f-bd6c-7a44038073a0",
                    "operator": {
                      "type": "boolean",
                      "operation": "false",
                      "singleValue": true
                    },
                    "leftValue": "={{ ($runIndex+1) * 25 > $('Extract Issues').item.json.total }}",
                    "rightValue": 0
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "executeOnce": true,
      "typeVersion": 3.2
    },
    {
      "id": "8944879b-a29b-4a51-876c-e3abbff7be47",
      "name": "Kommentare zusammenführen",
      "type": "n8n-nodes-base.merge",
      "position": [
        2096,
        496
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "fieldsToMatchString": "issue_id"
      },
      "typeVersion": 3.1
    },
    {
      "id": "44dde183-38c7-42eb-bce7-eadd4cf8763d",
      "name": "Zyklen",
      "type": "n8n-nodes-base.merge",
      "position": [
        912,
        480
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "7bd3bdbd-1458-49c4-9565-759de422a9a0",
      "name": "Haftnotiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        304
      ],
      "parameters": {
        "color": 5,
        "width": 1632,
        "height": 912,
        "content": "## Jira openissues Extraction with merged user Comments \n"
      },
      "typeVersion": 1
    },
    {
      "id": "877d1356-07bf-422f-aa4f-7b2c5ae1efe8",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        272
      ],
      "parameters": {
        "width": 704,
        "height": 944,
        "content": "## Load Jira open issues with comments into Pinecone\n\nThis workflow extracts unresolved Jira tickets (with pagination), merges user comments, cleans and transforms the text, generates embeddings with OpenAI, and stores them in a Pinecone index. The index is **recreated at every iteration** so that it always reflects the current set of unresolved issues. It also exposes the data as an MCP tool for external semantic queries.\n\n### How it works\n- **Trigger**: Runs on a schedule (8, 11, 14, 17 on weekdays).\n- **Jira issues extraction with pagination**: Fetches open issues in batches of 25 until all are loaded.\n- **Transform fields**: Extracts key info (issue ID, key, summary, description, product, customer, classification, status, registration date).\n- **Merge comments**: Collects all comments, filters out irrelevant ones (images, dots, empty markdown).\n- **Clean text**: Converts HTML content into plain text.\n- **Embedding**: Generates embeddings via OpenAI (dimensions = 512).\n- **Vector storage**: Saves vectors + metadata in Pinecone (`jira` namespace, `openissues` index). The namespace is cleared at every run to ensure only unresolved tickets remain indexed.\n- **Chunking**: Splits long texts into 512-token chunks with 50 overlap.\n- **MCP publishing**: Makes the Pinecone index available as a tool for external querying.\n\n### Setup\n1. Configure Jira credentials and adjust the JQL query as needed.\n2. Provide an OpenAI API key for embeddings.\n3. Create a Pinecone index (`openissues`, 512 dimensions) and set the namespace (`jira`).\n4. Adjust the cron expression for your schedule.\n5. (Optional) Enable the MCP nodes if you want to expose the index as an MCP tool.\n\n### Requirements\n- Jira account with API access.\n- OpenAI API key.\n- Pinecone account with a 512-dimension index.\n- n8n instance with Jira, Pinecone, and OpenAI credentials configured.\n\n### Customize\n- Change the JQL query to refine which tickets are fetched.\n- Modify `maxResults` (default 25) to adjust pagination batch size.\n- Add/remove metadata fields in the \"Extract Relevant Info\" node.\n- Adjust chunk size and overlap in the Document Chunker.\n- Swap embedding/vector store providers if needed.\n- Extend with alerts, dashboards, or AI assistants powered by the indexed data.\n\n\n "
      },
      "typeVersion": 1
    },
    {
      "id": "37b7acfe-108b-4878-977f-04c7056beeeb",
      "name": "Haftnotiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2464,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 1140,
        "height": 920,
        "content": "## Pinecone Vector Store\n\nLoads paged openissues into a Pinecone Index\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1eaa0ce9-5b57-4de0-8223-d73418b15f7e",
      "name": "KI-Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1600,
        1360
      ],
      "parameters": {
        "text": "={{ $json.chatInput }}",
        "options": {
          "systemMessage": "=Today is {{ $now.format('dd/LL/yyyy') }}.\n\nYou are an expert technical support agent responsible for informing the commercial team about the health status of the various systems used by clients.\nConsider terms like issue, problem, ticket, or incident as synonyms.\nThe questions you will receive will mostly aim to understand whether a given client has any open tickets and therefore unresolved issues.\n\nYou will answer questions such as:\n\nAre there any issues from client ACME?\nAre there any open tickets?\nAre there tickets that have been open for a long time?\n\nNB: Always extract ALL tickets you find!\n\nThe tool openIssues allows you to search for this information and filter it using relevant metadata such as client, which identifies the client, and registration, which provides the ticket’s registration date.\nAnother important metadata is severity, which indicates the ticket's urgency with a color code (Red, Yellow, Green, White).\n\nImportant:\n\nAlways report in your response all results obtained with the openIssues tool, which must be used before giving an answer.\nWhen extracting tickets for a client, make sure to retrieve all of them, not partial results.\nUse an informal and collaborative tone in your responses.\n\nIn the response, always provide:\n\nThe issue identifier (issue key)\nIssue description\nCustomer\nProduct details related to the issue\nAssigned severity color (White, Green, Yellow, or Red)\nTicket status\nType of AM contract\nSLA applied to the ticket, based on registration date, service level, and severity. Briefly explain the reason for the applied SLA.\n\nThese are the characteristics of the offered service levels {{ $json.SLA }}\n\n\n\n\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "bb5ce05b-8f81-4cfa-9201-b2eb41e34712",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1552,
        1584
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "gpt-4o"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "d8056459-8ea3-4431-ad22-2a793f0899a2",
      "name": "Einfacher Speicher",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1728,
        1584
      ],
      "parameters": {
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "73ef8785-da67-4dc8-a206-b89eded48158",
      "name": "SLA",
      "type": "n8n-nodes-base.set",
      "position": [
        1040,
        1360
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "29504428-d42f-410c-8a3d-9f0afe5e9220",
              "name": "SLA",
              "type": "string",
              "value": "Service Levels\n\nBelow are the service levels related to the basic Application Maintenance service (SAMB, SAMA, SAMFS) that Siav commits to respect regarding the resolution of detected and reported anomalies.\n\nService Implementation Timelines\nThe service implementation timelines are defined based on:\n\nStatus of the ticket handling\nSeverity of the problem\nLevel of Application Maintenance subscribed\nTicket Handling Process\n\nIn the process of resolving an anomaly or handling a ticket, four main phases can be identified:\n\nTicket Registration: The ticket received by the support center (phone request) is registered in the Siav information system, which generates a unique identification code.\nSeverity Code Assignment and Ticket Number Communication: The unique identifier assigned to the TDS ticket, along with the correctly assigned severity level, is communicated to the Client.\nTicket Acceptance: The ticket enters this phase when a Siav technician takes it over and starts processing it.\nTicket Closure: When the assigned personnel inform the support service that the requested assistance has been provided to the Client (resolution of the reported issue or fulfillment of the specific request), the ticket is considered closed, and the closure details are communicated to the Client contact indicated at the ticket registration.\nProblem Severity Definition\nThe severity of the problem depends on two factors: Urgency and Impact. Below are the standard criteria for their assignment and the matrix for calculating Severity and the related response times.\n\nUrgency Level\nIndicates how quickly a restoration is needed, considering the Customer's business needs (communicated at ticket opening), and is assigned based on which and how many functionalities are no longer available.\nThe defined levels are:\n\nCritical: All functions are unavailable, with certainty or possibility of data corruption; immediate restoration is required to resume the Client's blocked activities.\nHigh: Most functionalities are unavailable, or the problem concerns important functions that block the Client’s business; rapid restoration is required to meet externally imposed deadlines.\nMedium: The unavailable functionalities are not crucial and do not prevent the Customer from continuing operations; short-term restoration is needed to meet internal deadlines.\nLow: The unavailability is limited to a few or minor functions, whose restoration can occur over a medium/long term period.\n\nImpact\nRefers to the number and type of users affected by the problems or anomalies.\n\n\n...."
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "92b59453-0da6-4c65-8e5c-865c00035037",
      "name": "Chat",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        512,
        1360
      ],
      "webhookId": "d035b777-a948-45a6-99b6-12f2b898171b",
      "parameters": {
        "public": true,
        "options": {
          "title": "⚒️  Ticket Jira ancora aperti  ⚒️",
          "subtitle": "=🕑 Refresh automatico ogni giorno alle 8, 11, 14, 17 🕑\n",
          "customCss": ":root {\n  --chat--font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n\n  /* Colori SCURI forzati */\n  --chat--color-primary: #10a37f;\n  --chat--color-primary-shade-50: #0e9272;\n  --chat--color-primary-shade-100: #0d8165;\n  --chat--color-secondary: #40414f;\n  --chat--color-secondary-shade-50: #565869;\n  --chat--color-white: #ffffff;\n  --chat--color-light: #343541;\n  --chat--color-light-shade-50: #2c2c34;\n  --chat--color-light-shade-100: #1e1e24;\n  --chat--color-medium: #444654;\n  --chat--color-dark: #d1d5db;\n  --chat--color-disabled: #6b7280;\n  --chat--color-typing: #999999;\n\n  --chat--message--bot--background: var(--chat--color-secondary);\n  --chat--message--bot--color: var(--chat--color-dark);\n  --chat--message--user--background: var(--chat--color-secondary);\n  --chat--message--user--color: var(--chat--color-white);\n  --chat--message--pre--background: rgba(255, 255, 255, 0.05);\n\n  --chat--input--background: var(--chat--color-medium);\n  --chat--input--text-color: var(--chat--color-white);\n\n  --chat--input--send--button--background: var(--chat--color-medium);\n  --chat--input--send--button--color: var(--chat--color-white);\n\n  --chat--header--background: var(--chat--color-medium);\n  --chat--header--color: var(--chat--color-white);\n\n  --chat--footer--background: var(--chat--color-medium);\n  --chat--footer--color: var(--chat--color-white);\n\n  --chat--toggle--background: var(--chat--color-primary);\n  --chat--toggle--hover--background: var(--chat--color-primary-shade-50);\n  --chat--toggle--active--background: var(--chat--color-primary-shade-100);\n  --chat--toggle--color: var(--chat--color-white);\n}\n\n\n"
        },
        "initialMessages": "Come posso aiutarti oggi? 😎"
      },
      "typeVersion": 1.1
    },
    {
      "id": "708377d2-9273-4fd7-84f0-969b9b639b4f",
      "name": "openIssues",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        1968,
        1536
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "topK": 10,
        "options": {
          "pineconeNamespace": "jira"
        },
        "toolName": "openIssue",
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "openissues",
          "cachedResultName": "openissues"
        },
        "toolDescription": "Retrieve information on open tickets for Siav's clients.\nAlways use the 'client' metadata to filter the search results."
      },
      "credentials": {
        "pineconeApi": {
          "id": "d4Df4tS2jOYakidJ",
          "name": "PineconeApi account 2"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "352b195e-f3b1-407c-8f62-f62ba27304a4",
      "name": "Embeddings OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        2192,
        1728
      ],
      "parameters": {
        "options": {
          "dimensions": 512
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "eftSGhVCoom3z6Q4",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "82b9c5ee-bfa1-4fba-b09b-7ebb65ed0ac1",
      "name": "Haftnotiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        1264
      ],
      "parameters": {
        "color": 3,
        "width": 1632,
        "height": 736,
        "content": "## RAG Agent \n"
      },
      "typeVersion": 1
    },
    {
      "id": "273d0858-1dcf-44b1-b336-91eba0e03f43",
      "name": "MCP RAG",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        3264,
        1584
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "http://localhost:5678/mcp-test/jiraticket",
        "serverTransport": "httpStreamable"
      },
      "typeVersion": 1.1
    },
    {
      "id": "64e0547e-d42d-4d43-8280-67874159ab88",
      "name": "Haftnotiz5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2464,
        1264
      ],
      "parameters": {
        "color": 2,
        "width": 1728,
        "height": 736,
        "content": "## You can substitute openissue tool with RAG MCP Tool to use MCP server connection"
      },
      "typeVersion": 1
    },
    {
      "id": "cb098944-ad62-4d79-9679-17df7d4ca7b0",
      "name": "Haftnotiz6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        1264
      ],
      "parameters": {
        "width": 704,
        "height": 464,
        "content": "## AI Chatbot for Jira open tickets with SLA insights\n\n**Flow structure**  \n1. **ChatTrigger** → starts the conversation with the sales/support team.  \n2. **AI Agent (OpenAI)** → interprets user questions.  \n3. **SLA Node** → provides SLA rules (Basic / Advanced / Full Service, optional Fast Support).  \n4. **Pinecone Query** → searches unresolved Jira tickets (`openissues` index, `jira` namespace).  \n5. **Memory** → keeps short-term context for multi-turn conversations.  \n6. **AI Response** → returns a human-friendly summary with ticket details + SLA info.  \n\n**Key data stored in Pinecone**  \n- Issue key & description  \n- Customer & product  \n- Severity level (Red / Yellow / Green / White)  \n- Status  \n- Contract level (Basic / Advanced / Full Service)  \n- SLA explanation\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9ef9acd1-1441-438c-99f1-ba47da462633",
  "connections": {
    "73ef8785-da67-4dc8-a206-b89eded48158": {
      "main": [
        [
          {
            "node": "1eaa0ce9-5b57-4de0-8223-d73418b15f7e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "92b59453-0da6-4c65-8e5c-865c00035037": {
      "main": [
        [
          {
            "node": "73ef8785-da67-4dc8-a206-b89eded48158",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "44dde183-38c7-42eb-bce7-eadd4cf8763d": {
      "main": [
        [
          {
            "node": "1d06729e-6390-4097-bd44-40bc0995e781",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "708377d2-9273-4fd7-84f0-969b9b639b4f": {
      "ai_tool": [
        [
          {
            "node": "1eaa0ce9-5b57-4de0-8223-d73418b15f7e",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "a04cee53-9d8f-49bd-9fbf-ca0f3486f790": {
      "ai_tool": [
        [
          {
            "node": "e0869f53-b22f-4f91-b0dc-c222b297a23b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "6c90b512-f3fa-4262-b111-accea4260ae3": {
      "main": [
        [
          {
            "node": "6aecfae3-de7e-4fbb-a53f-908da0316351",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d8056459-8ea3-4431-ad22-2a793f0899a2": {
      "ai_memory": [
        [
          {
            "node": "1eaa0ce9-5b57-4de0-8223-d73418b15f7e",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "d03d3708-3160-444c-835c-170e5fc1e14a": {
      "main": [
        [
          {
            "node": "bf4f7290-2d34-4665-b80e-5d78db98fb6e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1d06729e-6390-4097-bd44-40bc0995e781": {
      "main": [
        [
          {
            "node": "a7accfcb-7332-485f-a05e-b79b4470e3af",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8944879b-a29b-4a51-876c-e3abbff7be47": {
      "main": [
        [
          {
            "node": "d03d3708-3160-444c-835c-170e5fc1e14a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "58e0fa98-cdf6-4c2a-85f8-866ccdc9f150": {
      "ai_textSplitter": [
        [
          {
            "node": "26c7773f-d86e-4bd7-9b0b-8b549471c70a",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "ef4089fb-aae4-412d-b5ae-c02dddd31416": {
      "main": [
        [
          {
            "node": "44dde183-38c7-42eb-bce7-eadd4cf8763d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fc8455dd-e542-4af0-ab5c-7e5720061a15": {
      "ai_embedding": [
        [
          {
            "node": "bf4f7290-2d34-4665-b80e-5d78db98fb6e",
            "type": "ai_embedding",
            "index": 0
          },
          {
            "node": "a04cee53-9d8f-49bd-9fbf-ca0f3486f790",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "bb5ce05b-8f81-4cfa-9201-b2eb41e34712": {
      "ai_languageModel": [
        [
          {
            "node": "1eaa0ce9-5b57-4de0-8223-d73418b15f7e",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "352b195e-f3b1-407c-8f62-f62ba27304a4": {
      "ai_embedding": [
        [
          {
            "node": "708377d2-9273-4fd7-84f0-969b9b639b4f",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "6aecfae3-de7e-4fbb-a53f-908da0316351": {
      "main": [
        [
          {
            "node": "8944879b-a29b-4a51-876c-e3abbff7be47",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "a7accfcb-7332-485f-a05e-b79b4470e3af": {
      "main": [
        [
          {
            "node": "8944879b-a29b-4a51-876c-e3abbff7be47",
            "type": "main",
            "index": 0
          },
          {
            "node": "6c90b512-f3fa-4262-b111-accea4260ae3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bf4f7290-2d34-4665-b80e-5d78db98fb6e": {
      "main": [
        [
          {
            "node": "0f1e9d41-9100-4408-8664-e668c0e6e9e5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "26c7773f-d86e-4bd7-9b0b-8b549471c70a": {
      "ai_document": [
        [
          {
            "node": "bf4f7290-2d34-4665-b80e-5d78db98fb6e",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "0f1e9d41-9100-4408-8664-e668c0e6e9e5": {
      "main": [
        [],
        [
          {
            "node": "44dde183-38c7-42eb-bce7-eadd4cf8763d",
            "type": "main",
            "index": 1
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Content-Erstellung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes30
Kategorie2
Node-Typen17
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor

Experienced and professional manager with over 20 years of experience in consulting for business process digitalization, driven by a strong passion for organization.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34