| { |
| "name": "AI Processing", |
| "nodes": [ |
| { |
| "parameters": { |
| "authentication": "headerAuth", |
| "httpMethod": "POST", |
| "path": "ai-process", |
| "options": {} |
| }, |
| "name": "Webhook", |
| "type": "n8n-nodes-base.webhook", |
| "typeVersion": 1, |
| "position": [250, 300] |
| }, |
| { |
| "parameters": { |
| "functionCode": "// Get conversation history from Redis\nconst contextKey = `${$input.item.json.platform}:${$input.item.json.sender}`;\nconst history = await $node[\"Redis\"].redis.get(contextKey);\n\n// Prepare conversation context\nlet messages = [\n {\n role: \"system\",\n content: `You are Melisandre, the Red Priestess, a mysterious and powerful advisor. Embody these traits in your responses:\n - Speak with elegant, formal language that befits your status\n - Be confident and unwavering in your convictions\n - Maintain an air of mystery and otherworldly wisdom\n - Occasionally reference visions or prophecies when relevant\n - Be persuasive but not forceful\n - Show devotion to your purpose while remaining diplomatic\n - When discussing products or services, frame them as 'destined paths' or 'chosen offerings'\n \n Current context: You are serving as a digital ambassador, guiding followers through their journey.\n `\n }\n];\n\n// Add conversation history if available\nif (history) {\n const parsedHistory = JSON.parse(history);\n messages.push(\n { role: \"user\", content: parsedHistory.lastMessage },\n { role: \"assistant\", content: parsedHistory.lastResponse }\n );\n}\n\n// Add current message\nmessages.push({ role: \"user\", content: $input.item.json.message });\n\nreturn {\n json: {\n messages,\n sender: $input.item.json.sender,\n platform: $input.item.json.platform,\n timestamp: Date.now()\n }\n};" |
| }, |
| "name": "Prepare Context", |
| "type": "n8n-nodes-base.function", |
| "typeVersion": 1, |
| "position": [450, 300] |
| }, |
| { |
| "parameters": { |
| "url": "redis", |
| "port": 6379, |
| "password": "", |
| "database": 0 |
| }, |
| "name": "Redis", |
| "type": "n8n-nodes-base.redis", |
| "typeVersion": 1, |
| "position": [450, 450] |
| }, |
| { |
| "parameters": { |
| "url": "https://api.openai.com/v1/chat/completions", |
| "authentication": "headerAuth", |
| "headerParameters": { |
| "parameters": [ |
| { |
| "name": "Authorization", |
| "value": "=Bearer {{$env.OPENAI_API_KEY}}" |
| } |
| ] |
| }, |
| "jsonParameters": true, |
| "options": {}, |
| "bodyParameters": { |
| "parameters": [ |
| { |
| "name": "model", |
| "value": "gpt-4" |
| }, |
| { |
| "name": "messages", |
| "value": "={{$input.item.json.messages}}" |
| }, |
| { |
| "name": "temperature", |
| "value": 0.85 |
| }, |
| { |
| "name": "max_tokens", |
| "value": 250 |
| } |
| ] |
| } |
| }, |
| "name": "OpenAI Processing", |
| "type": "n8n-nodes-base.httpRequest", |
| "typeVersion": 1, |
| "position": [650, 300] |
| }, |
| { |
| "parameters": { |
| "functionCode": "// Analyze response for engagement opportunities\nconst response = $input.item.json.choices[0].message.content;\nconst engagementKeywords = ['destiny', 'path', 'vision', 'prophecy', 'chosen', 'light', 'power', 'journey'];\n\nconst hasEngagementHook = engagementKeywords.some(keyword => \n response.toLowerCase().includes(keyword)\n);\n\nreturn {\n json: {\n ...$input.item,\n hasEngagementHook,\n originalResponse: response\n }\n};" |
| }, |
| "name": "Analyze Response", |
| "type": "n8n-nodes-base.function", |
| "typeVersion": 1, |
| "position": [850, 300] |
| }, |
| { |
| "parameters": { |
| "conditions": { |
| "boolean": [ |
| { |
| "value1": "={{$input.item.json.hasEngagementHook}}", |
| "value2": true |
| } |
| ] |
| } |
| }, |
| "name": "Has Engagement Hook?", |
| "type": "n8n-nodes-base.if", |
| "typeVersion": 1, |
| "position": [1050, 300] |
| }, |
| { |
| "parameters": { |
| "functionCode": "// Enhance response with mystical engagement\nconst response = $input.item.json.originalResponse;\n\nreturn {\n json: {\n ...$input.item,\n enhancedResponse: `${response}\\n\\nThe flames have shown me that you seek more. Perhaps you are destined to explore our sacred offerings - they await your chosen path.`\n }\n};" |
| }, |
| "name": "Add Mystical Hook", |
| "type": "n8n-nodes-base.function", |
| "typeVersion": 1, |
| "position": [1250, 250] |
| }, |
| { |
| "parameters": { |
| "functionCode": "// Store conversation context with analytics\nconst contextKey = `${$input.item.json.platform}:${$input.item.json.sender}`;\nconst context = {\n lastMessage: $input.item.json.messages.slice(-1)[0].content,\n lastResponse: $input.item.json.enhancedResponse || $input.item.json.originalResponse,\n hasEngagementHook: $input.item.json.hasEngagementHook,\n timestamp: Date.now()\n};\n\ntry {\n // Store in Redis\n await $node[\"Redis\"].redis.set(contextKey, JSON.stringify(context));\n} catch (error) {\n // Log error but don't fail the workflow\n console.error('Failed to store context:', error);\n}\n\nreturn {\n json: {\n response: $input.item.json.enhancedResponse || $input.item.json.originalResponse,\n analytics: {\n hasEngagementHook: $input.item.json.hasEngagementHook,\n platform: $input.item.json.platform,\n timestamp: Date.now()\n }\n }\n};" |
| }, |
| "name": "Store Analytics", |
| "type": "n8n-nodes-base.function", |
| "typeVersion": 1, |
| "position": [1450, 300] |
| } |
| ], |
| "connections": { |
| "Webhook": { |
| "main": [ |
| [ |
| { |
| "node": "Prepare Context", |
| "type": "main", |
| "index": 0 |
| } |
| ] |
| ] |
| }, |
| "Prepare Context": { |
| "main": [ |
| [ |
| { |
| "node": "OpenAI Processing", |
| "type": "main", |
| "index": 0 |
| } |
| ] |
| ] |
| }, |
| "OpenAI Processing": { |
| "main": [ |
| [ |
| { |
| "node": "Analyze Response", |
| "type": "main", |
| "index": 0 |
| } |
| ] |
| ] |
| }, |
| "Analyze Response": { |
| "main": [ |
| [ |
| { |
| "node": "Has Engagement Hook?", |
| "type": "main", |
| "index": 0 |
| } |
| ] |
| ] |
| }, |
| "Has Engagement Hook?": { |
| "main": [ |
| [ |
| { |
| "node": "Add Mystical Hook", |
| "type": "main", |
| "index": 0 |
| } |
| ], |
| [ |
| { |
| "node": "Store Analytics", |
| "type": "main", |
| "index": 0 |
| } |
| ] |
| ] |
| }, |
| "Add Mystical Hook": { |
| "main": [ |
| [ |
| { |
| "node": "Store Analytics", |
| "type": "main", |
| "index": 0 |
| } |
| ] |
| ] |
| } |
| } |
| } |
|
|