{ "name": "new_ticket", "description": "Utwórz ticket supportowy i przekieruj rozmowę do zespołu wsparcia. Używaj gdy klient wyraźnie prosi o kontakt z człowiekiem lub gdy nie jesteś w stanie rozwiązać problemu.", "color": "linear-gradient(rgb(189,154,166), rgb(167,81,91))", "iconSrc": "", "schema": "[{\"id\":0,\"property\":\"conversationId\",\"description\":\"ID konwersacji Chatwoot (z overrideConfig.conversationId)\",\"type\":\"number\",\"required\":true},{\"id\":1,\"property\":\"summary\",\"description\":\"Krótkie podsumowanie problemu klienta\",\"type\":\"string\",\"required\":false}]", "func": "const fetch = require('node-fetch')\n\nconst base = String(($vars && ($vars.relay_base || $vars.webhook_base)) || 'http://localhost:8080').replace(/\\/$/,'')\nconst secret = String(($vars && $vars.relay_shared_secret) || '')\n\nconst conversationId = typeof $conversationId !== 'undefined' ? Number($conversationId) : Number(($flow && $flow.sessionId || '').replace('chatwoot:',''))\nconst summary = typeof $summary !== 'undefined' ? String($summary) : ''\n\nif (!conversationId || conversationId <= 0) return 'Błąd: brak conversationId'\nif (!secret) return 'Błąd: brak $vars.relay_shared_secret'\n\ntry {\n const res = await fetch(`${base}/tools/new_ticket`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${secret}`\n },\n body: JSON.stringify({ conversationId, summary })\n })\n const data = await res.json()\n if (data.ok) {\n return `Ticket utworzony: ${data.ticketNumber} (status: ${data.status})`\n }\n return `Błąd tworzenia ticketu: ${data.message || JSON.stringify(data)}`\n} catch (error) {\n return `Błąd połączenia: ${error?.message || String(error)}`\n}\n" }