This workflow follows the Agent → OpenAI Chat recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "e37622d2-d9d4-4aff-8c0f-a2945e739ccd",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-180,
40
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "702c21cf-6ca5-4b1b-8511-fd082152e50b",
"name": "Search All Outlook Events",
"type": "n8n-nodes-base.microsoftOutlookTool",
"position": [
180,
40
],
"parameters": {
"limit": 20,
"filters": {
"custom": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_Query', ``, 'string') }}"
},
"resource": "event",
"descriptionType": "manual",
"toolDescription": "Call this tool to consume Microsoft Outlook API and fetch all outlook calendar events across all available calendars for a given filter."
},
"credentials": {
"microsoftOutlookOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "c4d7571d-0d96-42f5-a1dd-d2ee8e467731",
"name": "Create New Calendar Event",
"type": "n8n-nodes-base.microsoftOutlookTool",
"position": [
320,
40
],
"parameters": {
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
"resource": "event",
"operation": "create",
"calendarId": {
"__rl": true,
"mode": "id",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Calendar', ``, 'string') }}"
},
"endDateTime": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}",
"startDateTime": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}",
"descriptionType": "manual",
"toolDescription": "Call this tool to consume Microsoft Outlook API and create a new outlook calendar event. Ensure the calendar ID exists before proceeding.",
"additionalFields": {
"body": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', ``, 'string') }}"
}
},
"credentials": {
"microsoftOutlookOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "db5e44ab-7ec8-4831-9e41-34c963cd2314",
"name": "Get Available Calendars",
"type": "n8n-nodes-base.microsoftOutlookTool",
"position": [
460,
40
],
"parameters": {
"limit": 20,
"filters": {},
"resource": "calendar",
"descriptionType": "manual",
"toolDescription": "Call this tool to consume Microsoft Outlook API and fetch a list of available calendars."
},
"credentials": {
"microsoftOutlookOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "8102e365-eec4-48c6-986b-4ab8aac9e72a",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-20,
40
],
"parameters": {
"sessionKey": "={{ $json.ts }}_{{ $json.user }}",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "ebd79d18-86b9-4e8b-9a27-f9878fd3d617",
"name": "Outlook Calendar Assistant",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-60,
-180
],
"parameters": {
"text": "={{ $json.message.substr($json.message.indexOf('>')+1, 9999).trim() }}",
"options": {
"systemMessage": "=You are a helpful calendar assistant who can help users with calendar and event enquiries.\n* Today's date and time is {{ $now.toISO() }}."
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "f976cea5-be3e-4e14-89f5-b5d05d66f0c7",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1340,
-860
],
"parameters": {
"width": 440,
"height": 720,
"content": "\uc774 n8n \ud15c\ud50c\ub9bf\uc740 AI \uc5d0\uc774\uc804\ud2b8\uac00 \ub3c4\uad6c\ub97c \uc7a5\ucc29\ud55c Outlook \uce98\ub9b0\ub354 \uc5b4\uc2dc\uc2a4\ud134\ud2b8\ub97c \uad6c\ucd95\ud558\ub294 \uac83\uc774 \uc5bc\ub9c8\ub098 \uc26c\uc6b4\uc9c0 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.\n\nn8n\uc758 AI \uc5d0\uc774\uc804\ud2b8\ub294 \uae30\uc874 \uc11c\ube44\uc2a4 \ubc0f \ub3c4\uad6c\uc640 \uc0c1\ud638\uc791\uc6a9\ud560 \uc218 \uc788\ub294 \uac15\ub825\ud55c \uc5b4\uc2dc\uc2a4\ud134\ud2b8\ub97c \uc27d\uac8c \uad6c\ucd95\ud560 \uc218 \uc788\uac8c \ud569\ub2c8\ub2e4. \uc57d\uac04\uc758 \ub178\ub825\uc73c\ub85c \uc774\ub7ec\ud55c \uc5d0\uc774\uc804\ud2b8\ub97c Slack\uacfc \uac19\uc740 \ub3c4\uad6c\ub97c \ud1b5\ud574 \ud300 \uad6c\uc131\uc6d0\uacfc \ub3d9\ub8cc\uc5d0\uac8c \uacf5\uac1c\ud558\uace0 \ud68c\uc0ac \uc804\uccb4 \uc0dd\uc0b0\uc131 \ud5a5\uc0c1\uae30\ub97c \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n### \uc791\ub3d9 \uc6d0\ub9ac\n* \uc9c0\uc815\ub41c \ucc44\ub110\uc5d0\uc11c \"\ubd07 \uba58\uc158\" \uc774\ubca4\ud2b8\ub97c \ud3ec\ucc29\ud558\ub3c4\ub85d Slack Trigger \ub178\ub4dc\uac00 \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.\n* Edit fields \ub178\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \uba54\uc2dc\uc9c0\uc5d0\uc11c \ud544\uc694\ud55c \uc18d\uc131\ub9cc \ucd94\ucd9c\ud569\ub2c8\ub2e4.\n* Outlook \uce98\ub9b0\ub354 \ub3c4\uad6c\ub97c \uc7a5\ucc29\ud55c AI \uc5d0\uc774\uc804\ud2b8\uac00 \uc870\uc9c1\uc758 \uacf5\uc720 \uce98\ub9b0\ub354 \ubc0f \uc774\ubca4\ud2b8\ub97c \uc704\ud55c \uc9c8\ubb38 \ubc0f \ub2f5\ubcc0 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.\n* AI \uc5d0\uc774\uc804\ud2b8\uc758 \uc751\ub2f5\uc774 Slack\uc5d0\uc11c \uc0ac\uc6a9\uc790\uc758 \ucffc\ub9ac\uc5d0 \ub300\ud55c \ub2f5\ubcc0\uc73c\ub85c \ubcf4\ub0b4\uc9d1\ub2c8\ub2e4.\n\n### \uc0ac\uc6a9 \ubc29\ubc95\n* \uc6cc\ud06c\ud50c\ub85c\ub294 \ubd07\uc744 @\uba58\uc158\ud55c \ud6c4 \ucffc\ub9ac\ub97c \uc785\ub825\ud558\uc5ec \ud2b8\ub9ac\uac70\ub429\ub2c8\ub2e4. \uc608: \"@bot \ud3f4\uc774 \uc774\ubc88 \uc8fc\uc5d0 \ucc38\uc11d\ud574\uc57c \ud560 \ud68c\uc758\ub294 \uba87 \uac1c\uc778\uac00?\"\n* \uc2e4\uc81c \uba58\uc158\uc744 \uc218\uc2e0\ud558\ub824\uba74 \uc6cc\ud06c\ud50c\ub85c\ub97c \ud65c\uc131\ud654\ud558\uace0 \ud504\ub85c\ub355\uc158 \ubaa8\ub4dc\ub85c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ubca4\ud2b8 \uad6c\ub3c5\uc5d0 \ud504\ub85c\ub355\uc158 \uc6f9hook URL\uc744 \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.\n\n### \ub3c4\uc6c0\uc774 \ud544\uc694\ud558\uc2e0\uac00\uc694?\n[Discord](https://discord.com/invite/XPKeKXeB7d)\uc5d0 \ucc38\uc5ec\ud558\uac70\ub098 [Forum](https://community.n8n.io/)\uc5d0\uc11c \ubb38\uc758\ud558\uc138\uc694!"
},
"typeVersion": 1
},
{
"id": "03083765-b3bb-42f6-8f30-7087687bc6eb",
"name": "Send Reply",
"type": "n8n-nodes-base.slack",
"position": [
620,
-180
],
"parameters": {
"text": "={{ $json.output }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Get Message').item.json.channel }}"
},
"otherOptions": {
"thread_ts": {
"replyValues": {
"thread_ts": "={{ $('Get Message').item.json.ts }}"
}
},
"includeLinkToWorkflow": false
}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "19c8e68b-2bf1-403a-a43d-cdc465233436",
"name": "Respond to Challenge",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-240,
-440
],
"parameters": {
"options": {},
"respondWith": "text",
"responseBody": "={{ $json.body.challenge }}"
},
"typeVersion": 1.1
},
{
"id": "2b9f7d68-8e76-440b-9a8b-b9eb4fc7061c",
"name": "Is Auth Challenge?",
"type": "n8n-nodes-base.if",
"position": [
-520,
-300
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "cd56f5f2-dbb8-4cf0-83c8-f0566510ff51",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.challenge }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c91350ef-5701-4188-8b1f-de12a0076a56",
"name": "Get Message",
"type": "n8n-nodes-base.set",
"position": [
-240,
-180
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "44da9c3a-35eb-4636-9483-65492e858d96",
"name": "ts",
"type": "string",
"value": "={{ $json.body.event.ts }}"
},
{
"id": "761840aa-d2e3-4345-95bb-e7866b755880",
"name": "message",
"type": "string",
"value": "={{ $json.body.event.text }}"
},
{
"id": "094457fc-c149-4175-bed2-f0906cb70dea",
"name": "is_bot",
"type": "boolean",
"value": "={{ $json.body.authorizations[0].is_bot }}"
},
{
"id": "baf91a59-88fa-45fc-bfcb-ff27d0fe397d",
"name": "user",
"type": "string",
"value": "={{ $json.body.event.user }}"
},
{
"id": "abc6c16e-50e2-4154-9db9-4e12f9009d01",
"name": "channel",
"type": "string",
"value": "={{ $json.body.event.channel }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0681782d-21f3-4130-809c-188d83ebb7a9",
"name": "On BOT/APP Mention",
"type": "n8n-nodes-base.webhook",
"position": [
-800,
-300
],
"parameters": {
"path": "c63b08ce-360d-4185-aae1-294afef5cf2b",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "d0b12a70-e3e8-4149-98ba-dc2cf01f9953",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
-520
],
"parameters": {
"color": 7,
"width": 380,
"height": 180,
"content": "## 1. \ubd07 \uba58\uc158 \ub4e3\uae30 \n[Webhook Trigger\uc5d0 \ub300\ud574 \ub354 \uc77d\uae30](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook) \n\n**\uc608\uc81c**: \n`@bot \ud3f4\uc774 \uc774\ubc88 \uc8fc\uc5d0 \ucc38\uc11d\ud574\uc57c \ud560 \ud68c\uc758\ub294 \uba87 \uac1c\uc778\uac00\uc694?`"
},
"typeVersion": 1
},
{
"id": "095fd13e-a660-46a8-95c6-b960083681f7",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-440
],
"parameters": {
"color": 7,
"width": 540,
"height": 220,
"content": "## 2. Outlook \uce98\ub9b0\ub354 \ub3c4\uad6c\ub97c \uac16\ucd98 AI \uc5d0\uc774\uc804\ud2b8\n\n[AI Agent \ub178\ub4dc\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent)\n\n\uc774 \uc5d0\uc774\uc804\ud2b8\ub294 \uc0ac\uc6a9\uc790\ub97c \uc704\ud574 \uac80\uc0c9, \ud0d0\uc0c9, \uadf8\ub9ac\uace0 \uce98\ub9b0\ub354 \uc774\ubca4\ud2b8\ub97c \uc0dd\uc131\ud558\ub294 3\uac1c\uc758 Outlook \ub3c4\uad6c\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc5d0\uc774\uc804\ud2b8\ub294 \ub3c4\uad6c\ub97c \ubb34\uc5c7\uc744 \uc5b8\uc81c \uc0ac\uc6a9\ud560\uc9c0 \uc54c\ub824\uc904 \ud544\uc694\uac00 \uc5c6\ub2e4\ub294 \uc810\uc5d0\uc11c \ud6cc\ub96d\ud569\ub2c8\ub2e4 - \uc5d0\uc774\uc804\ud2b8\uac00 \uc2a4\uc2a4\ub85c \uadf8 \uacb0\uc815\uc744 \ub0b4\ub9b4 \ud14c\ub2c8\uae4c\uc694!"
},
"typeVersion": 1
},
{
"id": "3b2662a2-9a79-4848-89db-a5699942f39c",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
620,
0
],
"parameters": {
"color": 7,
"width": 400,
"height": 200,
"content": "## 3. \uc0ac\uc6a9\uc790\uc5d0\uac8c \ub2f5\ubcc0\n\n[Slack \ub178\ub4dc\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack)\n\n\ub2e8\uc21c\ud788 \uc0ac\uc6a9\uc790\uc758 \ucffc\ub9ac\uc5d0 \ub2f5\ubcc0\uc744 \ubcf4\ub0b4\uc90d\ub2c8\ub2e4. \ubb3c\ub860, \uc774\uac83\uc740 \uac00\uc7a5 \uac04\ub2e8\ud55c \uacbd\uc6b0\uc774\uba70, \ud544\uc694\uc5d0 \ub530\ub77c \ub2e4\uc911 \ud134 \ub300\ud654\ub97c \ucc98\ub9ac\ud558\ub294 \uac83\uc740 \ub2f9\uc2e0\uc5d0\uac8c \ub9e1\uae41\ub2c8\ub2e4."
},
"typeVersion": 1
},
{
"id": "f00e8727-12f2-4dad-8736-98bd0996f19a",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1340,
-120
],
"parameters": {
"color": 5,
"width": 440,
"height": 340,
"content": "### Slack \uc571 \uc774\ubca4\ud2b8 \uad6c\ub3c5 \uc124\uc815\n1. https://api.slack.com/apps\ub85c \uc774\ub3d9\ud558\uc138\uc694\n2. \uc571\uc744 \uc0dd\uc131\ud558\uac70\ub098 \uc120\ud0dd\ud558\uc138\uc694\n3. \uae30\ub2a5 \uc139\uc158\uc5d0\uc11c \"Event Subscriptions\"\uc744 \ud074\ub9ad\ud558\uc138\uc694\n4. \uc774 \ud398\uc774\uc9c0\uc5d0\uc11c \"Enable Events\" \uc635\uc158\uc744 \ud65c\uc131\ud654\ud558\uc138\uc694\n5. \uc774 \ud15c\ud50c\ub9bf\uc758 \ud504\ub85c\ub355\uc158 URL\uc744 \uc785\ub825\ud558\uc138\uc694 - \ub2f9\uc2e0\uc758 \uc6cc\ud06c\ud50c\ub85c\uc6b0\uac00 \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uace0 \uacf5\uac1c\uc801\uc73c\ub85c \uc811\uadfc \uac00\ub2a5\ud574\uc57c \ud569\ub2c8\ub2e4.\n6. Slack\uc774 \uc774 \uc6cc\ud06c\ud50c\ub85c\uc6b0\uc5d0 \"challenge\" \uc694\uccad\uc744 \ubc1c\uc1a1\ud560 \uac83\uc774\uba70, \uc774\ub294 \uc751\ub2f5\ud558\uc5ec \uad6c\ub3c5\uc744 \ud655\uc778\ud569\ub2c8\ub2e4.\n7. \uc131\uacf5\ud558\uba74, \"subscribe to bot events\" \uc544\ub798\uc5d0\uc11c \"app_mention\" \uc635\uc158\uc744 \ucc3e\uc544 \uc120\ud0dd\ud558\uc138\uc694.\n8. \ud398\uc774\uc9c0 \ud558\ub2e8\uc5d0\uc11c \"save changes\"\ub97c \ud074\ub9ad\ud558\uc138\uc694.\n9. \uc774\uc81c \uc774 \uc6cc\ud06c\ud50c\ub85c\uc6b0\ub294 \ucc44\ub110\uc5d0\uc11c \ubd07\uc774 \"@mention\"\ub420 \ub54c \ud2b8\ub9ac\uac70\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4."
},
"typeVersion": 1
}
],
"connections": {
"Get Message": {
"main": [
[
{
"node": "Outlook Calendar Assistant",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "Outlook Calendar Assistant",
"type": "ai_memory",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Outlook Calendar Assistant",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Is Auth Challenge?": {
"main": [
[
{
"node": "Respond to Challenge",
"type": "main",
"index": 0
}
],
[
{
"node": "Get Message",
"type": "main",
"index": 0
}
]
]
},
"On BOT/APP Mention": {
"main": [
[
{
"node": "Is Auth Challenge?",
"type": "main",
"index": 0
}
]
]
},
"Get Available Calendars": {
"ai_tool": [
[
{
"node": "Outlook Calendar Assistant",
"type": "ai_tool",
"index": 0
}
]
]
},
"Create New Calendar Event": {
"ai_tool": [
[
{
"node": "Outlook Calendar Assistant",
"type": "ai_tool",
"index": 0
}
]
]
},
"Search All Outlook Events": {
"ai_tool": [
[
{
"node": "Outlook Calendar Assistant",
"type": "ai_tool",
"index": 0
}
]
]
},
"Outlook Calendar Assistant": {
"main": [
[
{
"node": "Send Reply",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
microsoftOutlookOAuth2ApiopenAiApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Workflow 3449. Uses lmChatOpenAi, microsoftOutlookTool, memoryBufferWindow, agent. Webhook trigger; 16 nodes.
Source: https://github.com/n8nKOR/n8n-shared-workflow/blob/62a671327e906c22a40d290b339ff6d2373f8d75/workflows/n8n-workflows-by-Zie619/devops/3449_workflow_3449.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Webhook Slack. Uses lmChatOpenAi, microsoftOutlookTool, memoryBufferWindow, agent. Webhook trigger; 16 nodes.
For teams using Outlook Calendar and Slack who need easier calendar management, this workflow can be a great first step to introducing powerful AI tools into your daily activities. A Slack Trigger nod
Enhance your support, onboarding, and internal knowledge workflows with an intelligent RAG-powered chatbot that responds using live data stored in Google Sheets. 🤖📚 Built for teams that rely on struct
Public-facing professionals (developer advocates, founders, marketers, content creators) who get bombarded with LinkedIn messages that aren't actually for them - support requests when you're in market
This workflow automates enterprise resource planning (ERP) operations across Engineering, Finance, HR, and Admin departments for operations managers, ERP administrators, and business process owners wh