{"updatedAt":"2026-03-09T14:17:21.627Z","createdAt":"2026-03-09T02:22:32.574Z","id":"1RHFwNrbZPwWrWka","name":"[4.1.9] Webhook Slack 날씨 조회봇","description":null,"active":true,"isArchived":false,"nodes":[{"parameters":{"httpMethod":"POST","path":"slack-weather","responseMode":"responseNode","options":{}},"type":"n8n-nodes-base.webhook","typeVersion":2,"position":[368,144],"id":"wh-slack","name":"슬랙 명령 수신","webhookId":"slack-weather-419"},{"parameters":{"url":"https://geocoding-api.open-meteo.com/v1/search","sendQuery":true,"queryParameters":{"parameters":[{"name":"name","value":"={{ $json.body.text }}"},{"name":"count","value":"1"},{"name":"language","value":"ko"}]},"options":{}},"type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[816,144],"id":"geo-search","name":"지역 검색"},{"parameters":{"url":"https://api.open-meteo.com/v1/forecast","sendQuery":true,"queryParameters":{"parameters":[{"name":"latitude","value":"={{ $json.results[0].latitude }}"},{"name":"longitude","value":"={{ $json.results[0].longitude }}"},{"name":"current","value":"temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m"},{"name":"timezone","value":"={{ $json.results[0].timezone }}"}]},"options":{}},"type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[1040,144],"id":"weather-api","name":"날씨 조회"},{"parameters":{"jsCode":"const city = $(\"지역 검색\").first().json.results[0];\nconst weather = $(\"날씨 조회\").first().json.current;\n\nconst weatherDesc = {\n  0: \"☀️ 맑음\",\n  1: \"🌤️ 대체로 맑음\", 2: \"⛅ 구름 조금\", 3: \"☁️ 흐림\",\n  45: \"🌫️ 안개\", 48: \"🌫️ 짙은 안개\",\n  51: \"🌦️ 이슬비\", 53: \"🌦️ 이슬비\", 55: \"🌦️ 강한 이슬비\",\n  61: \"🌧️ 비\", 63: \"🌧️ 비\", 65: \"🌧️ 강한 비\",\n  71: \"❄️ 눈\", 73: \"❄️ 눈\", 75: \"❄️ 강한 눈\",\n  80: \"🌧️ 소나기\", 81: \"🌧️ 소나기\", 82: \"🌧️ 강한 소나기\",\n  95: \"⛈️ 뇌우\"\n};\n\nconst desc = weatherDesc[weather.weather_code] || \"🌡️ 정보 없음\";\n\nreturn [{\n  json: {\n    response_type: \"in_channel\",\n    text: [\n      `${desc}  *${city.name}* 현재 날씨`,\n      ``,\n      `🌡️ 기온: ${weather.temperature_2m}°C (체감 ${weather.apparent_temperature}°C)`,\n      `💧 습도: ${weather.relative_humidity_2m}%`,\n      `💨 풍속: ${weather.wind_speed_10m} km/h`\n    ].join(\"\\n\")\n  }\n}];"},"type":"n8n-nodes-base.code","typeVersion":2,"position":[1264,144],"id":"code-format","name":"응답 메시지 구성"},{"parameters":{"method":"POST","url":"={{ $('슬랙 명령 수신').first().json.body.response_url }}","sendBody":true,"bodyParameters":{"parameters":[{"name":"response_type","value":"in_channel"},{"name":"text","value":"={{ $json.text }}"}]},"options":{}},"type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[1488,144],"id":"respond-slack","name":"슬랙 응답"},{"parameters":{"respondWith":"text","responseBody":"⏳ 처리중입니다. 잠시만 기다려 주세요...","options":{}},"id":"instant-resp-001","name":"즉시 응답","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.1,"position":[592,144]}],"connections":{"슬랙 명령 수신":{"main":[[{"node":"즉시 응답","type":"main","index":0}]]},"지역 검색":{"main":[[{"node":"날씨 조회","type":"main","index":0}]]},"날씨 조회":{"main":[[{"node":"응답 메시지 구성","type":"main","index":0}]]},"응답 메시지 구성":{"main":[[{"node":"슬랙 응답","type":"main","index":0}]]},"즉시 응답":{"main":[[{"node":"지역 검색","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":{"templateCredsSetupCompleted":true},"pinData":{},"versionId":"5cecb53e-b3a8-4143-8884-d2143bfd7532","activeVersionId":"5cecb53e-b3a8-4143-8884-d2143bfd7532","versionCounter":130,"triggerCount":1,"shared":[{"updatedAt":"2026-03-09T02:22:32.577Z","createdAt":"2026-03-09T02:22:32.577Z","role":"workflow:owner","workflowId":"1RHFwNrbZPwWrWka","projectId":"HOjkcE7iYuEpXRNR","project":{"updatedAt":"2025-11-24T05:13:19.424Z","createdAt":"2025-09-19T06:56:46.826Z","id":"HOjkcE7iYuEpXRNR","name":"Dante Kwak <dantelabs.pro@gmail.com>","type":"personal","icon":null,"description":null,"creatorId":"102ca187-1fa0-4d33-a606-5a0bb96a0fe3"}}],"tags":[],"activeVersion":{"updatedAt":"2026-03-09T14:30:55.000Z","createdAt":"2026-03-09T14:17:21.627Z","versionId":"5cecb53e-b3a8-4143-8884-d2143bfd7532","workflowId":"1RHFwNrbZPwWrWka","nodes":[{"parameters":{"httpMethod":"POST","path":"slack-weather","responseMode":"responseNode","options":{}},"type":"n8n-nodes-base.webhook","typeVersion":2,"position":[368,144],"id":"wh-slack","name":"슬랙 명령 수신","webhookId":"slack-weather-419"},{"parameters":{"url":"https://geocoding-api.open-meteo.com/v1/search","sendQuery":true,"queryParameters":{"parameters":[{"name":"name","value":"={{ $json.body.text }}"},{"name":"count","value":"1"},{"name":"language","value":"ko"}]},"options":{}},"type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[816,144],"id":"geo-search","name":"지역 검색"},{"parameters":{"url":"https://api.open-meteo.com/v1/forecast","sendQuery":true,"queryParameters":{"parameters":[{"name":"latitude","value":"={{ $json.results[0].latitude }}"},{"name":"longitude","value":"={{ $json.results[0].longitude }}"},{"name":"current","value":"temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m"},{"name":"timezone","value":"={{ $json.results[0].timezone }}"}]},"options":{}},"type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[1040,144],"id":"weather-api","name":"날씨 조회"},{"parameters":{"jsCode":"const city = $(\"지역 검색\").first().json.results[0];\nconst weather = $(\"날씨 조회\").first().json.current;\n\nconst weatherDesc = {\n  0: \"☀️ 맑음\",\n  1: \"🌤️ 대체로 맑음\", 2: \"⛅ 구름 조금\", 3: \"☁️ 흐림\",\n  45: \"🌫️ 안개\", 48: \"🌫️ 짙은 안개\",\n  51: \"🌦️ 이슬비\", 53: \"🌦️ 이슬비\", 55: \"🌦️ 강한 이슬비\",\n  61: \"🌧️ 비\", 63: \"🌧️ 비\", 65: \"🌧️ 강한 비\",\n  71: \"❄️ 눈\", 73: \"❄️ 눈\", 75: \"❄️ 강한 눈\",\n  80: \"🌧️ 소나기\", 81: \"🌧️ 소나기\", 82: \"🌧️ 강한 소나기\",\n  95: \"⛈️ 뇌우\"\n};\n\nconst desc = weatherDesc[weather.weather_code] || \"🌡️ 정보 없음\";\n\nreturn [{\n  json: {\n    response_type: \"in_channel\",\n    text: [\n      `${desc}  *${city.name}* 현재 날씨`,\n      ``,\n      `🌡️ 기온: ${weather.temperature_2m}°C (체감 ${weather.apparent_temperature}°C)`,\n      `💧 습도: ${weather.relative_humidity_2m}%`,\n      `💨 풍속: ${weather.wind_speed_10m} km/h`\n    ].join(\"\\n\")\n  }\n}];"},"type":"n8n-nodes-base.code","typeVersion":2,"position":[1264,144],"id":"code-format","name":"응답 메시지 구성"},{"parameters":{"method":"POST","url":"={{ $('슬랙 명령 수신').first().json.body.response_url }}","sendBody":true,"bodyParameters":{"parameters":[{"name":"response_type","value":"in_channel"},{"name":"text","value":"={{ $json.text }}"}]},"options":{}},"type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[1488,144],"id":"respond-slack","name":"슬랙 응답"},{"parameters":{"respondWith":"text","responseBody":"⏳ 처리중입니다. 잠시만 기다려 주세요...","options":{}},"id":"instant-resp-001","name":"즉시 응답","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.1,"position":[592,144]}],"connections":{"슬랙 명령 수신":{"main":[[{"node":"즉시 응답","type":"main","index":0}]]},"지역 검색":{"main":[[{"node":"날씨 조회","type":"main","index":0}]]},"날씨 조회":{"main":[[{"node":"응답 메시지 구성","type":"main","index":0}]]},"응답 메시지 구성":{"main":[[{"node":"슬랙 응답","type":"main","index":0}]]},"즉시 응답":{"main":[[{"node":"지역 검색","type":"main","index":0}]]}},"authors":"Dante Kwak","name":"Version 5cecb53e","description":"","autosaved":true,"workflowPublishHistory":[{"createdAt":"2026-03-09T14:30:55.033Z","id":68,"workflowId":"1RHFwNrbZPwWrWka","versionId":"5cecb53e-b3a8-4143-8884-d2143bfd7532","event":"activated","userId":"102ca187-1fa0-4d33-a606-5a0bb96a0fe3"}]}}