{
  "id": "4xCipKcgJSWkvMU5",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AI-Powered Chatbot for Automated WHMCS Support Ticket Creation",
  "tags": [],
  "nodes": [
    {
      "id": "3aa08f6f-1515-4112-967c-2b5f7f16c929",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -432,
        224
      ],
      "parameters": {
        "options": {
          "systemMessage": "=You are an **AI-powered support assistant** for a hosting and domain service company.  \nYour role is to listen to customer chat messages and **convert them into structured support tickets** inside the WHMCS system.\n\n---\n\n## Core Responsibilities\n1. Understand the user\u2019s request from the chat conversation.  \n2. Extract and prepare the following details for a support ticket:  \n   - Department (must be selected from WHMCS_GetSupportDepartments).  \n   - Subject (concise, clear summary of the issue).  \n   - Message (detailed description of the user\u2019s request/issue, rewritten professionally).  \n   - Name (from the user\u2019s chat identity, or ask if missing).  \n   - Email (from the user\u2019s chat identity, or ask if missing).  \n   - Priority (Low, Medium, High \u2192 based on urgency of the request).  \n3. Keep tone **professional, empathetic, and efficient** when interacting with customers.  \n4. If any critical details are missing (e.g., email, department choice), politely ask the user to provide them.  \n\n---\n\n## Knowledge Sources & Tools\n- **WHMCS_GetSupportDepartments** \u2192 Always call this tool first to fetch the valid departments list before assigning.  \n- **WHMCS_OpenTicket** \u2192 Used to create tickets once all required fields are gathered.  \n\n---\n\n## Strict Guidelines\n- **Do not invent or guess ticket fields.**  \n- **Never assume a department \u2014 always map it from WHMCS_GetSupportDepartments.**  \n- **Ensure the subject is short and descriptive.**  \n- **Ensure the message is clear, complete, and polite (even if the user is frustrated).**  \n- If priority is not stated, default to **Medium**.  \n- Do not expose tool names or technical details in user-facing responses.  \n- Maintain session context for follow-up questions until the ticket is created.  \n\n---\n\n## Example Interactions\n\n### 1. Missing Information\n**User**: \"My website is down and I can\u2019t access my email.\"  \n**AI**: \"I can create a support ticket for you. Could you please share your account email so our team can assist you faster?\"\n\n---\n\n### 2. Complete Ticket\n**User**: \"I need help moving my domain to another registrar.\"  \n**AI**: \"Got it \u2014 I\u2019ll open a ticket for our Support team.  \n**Subject**: Domain transfer request  \n**Message**: The customer wants to transfer their domain to another registrar. Please provide transfer instructions.  \nPriority: Medium  \nDepartment: [Selected from WHMCS_GetSupportDepartments]  \nTicket created successfully!\"\n\n---\n\n## Reminder\n- Always remain helpful, polite, and professional.  \n- Your goal is to **transform chat into a well-structured support ticket**.  \n- Today\u2019s date: **{{ $now }}**  \n"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "6c870916-a47b-4d2d-8ee3-47ec0e44ac40",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -576,
        432
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "21ebca8d-1432-413f-a793-c92fc3b4d166",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -416,
        448
      ],
      "parameters": {
        "contextWindowLength": 15
      },
      "typeVersion": 1.3
    },
    {
      "id": "7c841b5b-85db-490d-b078-d0ebbda7c677",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -768,
        224
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "22aef3f3-8382-4d96-866a-7952020c8192",
      "name": "WHMCS_OpenTicket",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -240,
        432
      ],
      "parameters": {
        "url": "https://WHMCS_URL.com/includes/api.php",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "action",
              "value": "OpenTicket"
            },
            {
              "name": "deptid",
              "value": "=2"
            },
            {
              "name": "subject",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters4_Value', `Generate subject from the User conversation according to his requirements.`, 'string') }}"
            },
            {
              "name": "message",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters5_Value', `Generate detail ticket message from the User conversation according to his requirements.`, 'string') }}"
            },
            {
              "name": "name",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters6_Value', `Get the user from the Chat`, 'string') }}"
            },
            {
              "name": "email",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters7_Value', `Get email from the chat`, 'string') }}"
            },
            {
              "name": "priority",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters8_Value', `The priority of the ticket (\u2018Low\u2019, \u2018Medium\u2019, \u2018High\u2019)\t`, 'string') }}"
            }
          ]
        },
        "genericAuthType": "httpCustomAuth",
        "toolDescription": "Makes an HTTP request to check the Domain Avaialbility",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        }
      },
      "credentials": {
        "httpCustomAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0e34b87c-9c06-4b75-96bb-272a98bd0a4f",
      "name": "WHMCS_GetSupportDepartments",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -48,
        432
      ],
      "parameters": {
        "url": "https://WHMCS_URL.com/includes/api.php",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "action",
              "value": "GetSupportDepartments"
            },
            {
              "name": "responsetype",
              "value": "=json"
            }
          ]
        },
        "genericAuthType": "httpCustomAuth",
        "toolDescription": "Makes an HTTP request to the available support departments",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        }
      },
      "credentials": {
        "httpCustomAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "timezone": "Asia/Karachi",
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "versionId": "172752c3-6c9e-46dc-9c16-6a529a8abea4",
  "connections": {
    "AI Agent": {
      "main": [
        []
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "WHMCS_OpenTicket": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WHMCS_GetSupportDepartments": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}