AutomationFlowsAI & RAG › Aga Complaint Agent (line)

Aga Complaint Agent (line)

AGA Complaint Agent (LINE). Uses httpRequest, googleSheets. Webhook trigger; 13 nodes.

Webhook trigger★★★☆☆ complexity13 nodesHTTP RequestGoogle Sheets
AI & RAG Trigger: Webhook Nodes: 13 Complexity: ★★★☆☆ Added:

This workflow follows the Google Sheets → HTTP Request 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 →

Download .json
{
  "name": "AGA Complaint Agent (LINE)",
  "nodes": [
    {
      "parameters": {
        "content": "## \u0e23\u0e30\u0e1a\u0e1a 1 \u00b7 \u0e15\u0e2d\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e01\u0e25\u0e38\u0e48\u0e21 LINE\n\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 \u2192 \u0e41\u0e22\u0e01\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17 \u2192 AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c / \u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19 / \u0e41\u0e19\u0e1a\u0e23\u0e39\u0e1b \u2192 \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 Google Sheet \u2192 \u0e15\u0e2d\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21",
        "height": 620,
        "width": 1280,
        "color": 4
      },
      "id": "sticky_system1",
      "name": "\u0e23\u0e30\u0e1a\u0e1a 1",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -120,
        -120
      ]
    },
    {
      "parameters": {
        "content": "## \u0e23\u0e30\u0e1a\u0e1a 2 \u00b7 \u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e15\u0e32\u0e21\u0e40\u0e27\u0e25\u0e32\n\u0e15\u0e31\u0e49\u0e07\u0e40\u0e27\u0e25\u0e32 08:30 / 12:00 / 17:30 \u2192 \u0e2d\u0e48\u0e32\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e08\u0e32\u0e01 Google Sheet \u2192 Push \u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e01\u0e25\u0e38\u0e48\u0e21",
        "height": 260,
        "width": 900,
        "color": 3
      },
      "id": "sticky_system2",
      "name": "\u0e23\u0e30\u0e1a\u0e1a 2",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -120,
        600
      ]
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "line-webhook",
        "responseMode": "onReceived",
        "options": {}
      },
      "id": "node_webhook",
      "name": "\u0e01\u0e25\u0e38\u0e48\u0e21 LINE (Webhook)",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        220
      ]
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": false,
                  "typeValidation": "loose"
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.body.events[0].message.type }}",
                    "rightValue": "image",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "outputKey": "\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": false,
                  "typeValidation": "loose"
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.body.events[0].message.text }}",
                    "rightValue": "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19|\u0e08\u0e1a\u0e07\u0e32\u0e19|\u0e40\u0e04\u0e25\u0e35\u0e22\u0e23\u0e4c|\u0e40\u0e2a\u0e23\u0e47\u0e08",
                    "operator": {
                      "type": "string",
                      "operation": "regex"
                    }
                  }
                ],
                "combinator": "and"
              },
              "outputKey": "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19 Wxxx"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": false,
                  "typeValidation": "loose"
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.body.events[0].message.text }}",
                    "rightValue": "",
                    "operator": {
                      "type": "string",
                      "operation": "exists"
                    }
                  }
                ],
                "combinator": "and"
              },
              "outputKey": "\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b"
            }
          ]
        },
        "options": {}
      },
      "id": "node_switch",
      "name": "\u0e41\u0e22\u0e01\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3,
      "position": [
        280,
        220
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "x-goog-api-key",
              "value": "={{ $env.GEMINI_API_KEY }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"contents\": [{\n    \"parts\": [{ \"text\": \"\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e08\u0e49\u0e07\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e41\u0e21\u0e25\u0e07 \u0e41\u0e25\u0e49\u0e27\u0e15\u0e2d\u0e1a\u0e40\u0e1b\u0e47\u0e19 JSON: pest_type, location, floor, severity, is_complaint. \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21: \" }]\n  }]\n}",
        "options": {}
      },
      "id": "node_gemini",
      "name": "Gemini AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        560,
        40
      ]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "YOUR_GOOGLE_SHEET_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "Complaints",
          "mode": "name"
        },
        "options": {}
      },
      "id": "node_sheet_append",
      "name": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48 (Sheet)",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        840,
        40
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.line.me/v2/bot/message/reply",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.LINE_CHANNEL_ACCESS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"replyToken\": \"{{ $json.replyToken }}\",\n  \"messages\": [{ \"type\": \"text\", \"text\": \"\ud83d\udccb \u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19 Work Order \u0e40\u0e1b\u0e34\u0e14\u0e41\u0e25\u0e49\u0e27\" }]\n}",
        "options": {}
      },
      "id": "node_reply_new",
      "name": "\u0e15\u0e2d\u0e1a\u0e40\u0e25\u0e02\u0e07\u0e32\u0e19\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1120,
        40
      ]
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "YOUR_GOOGLE_SHEET_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "Complaints",
          "mode": "name"
        },
        "options": {}
      },
      "id": "node_sheet_close",
      "name": "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a (Sheet)",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        560,
        240
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.line.me/v2/bot/message/reply",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.LINE_CHANNEL_ACCESS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"replyToken\": \"{{ $json.replyToken }}\",\n  \"messages\": [{ \"type\": \"text\", \"text\": \"\u2705 \u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27 \u2014 \u0e41\u0e2a\u0e14\u0e07\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d\" }]\n}",
        "options": {}
      },
      "id": "node_reply_close",
      "name": "\u0e15\u0e2d\u0e1a\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        840,
        240
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "=https://api-data.line.me/v2/bot/message/{{ $json.body.events[0].message.id }}/content",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.LINE_CHANNEL_ACCESS_TOKEN }}"
            }
          ]
        },
        "options": {}
      },
      "id": "node_photo",
      "name": "\u0e41\u0e19\u0e1a\u0e23\u0e39\u0e1b\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19 (GCS)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        560,
        420
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "30 8 * * *"
            },
            {
              "field": "cronExpression",
              "expression": "0 12 * * *"
            },
            {
              "field": "cronExpression",
              "expression": "30 17 * * *"
            }
          ]
        }
      },
      "id": "node_schedule",
      "name": "\u0e15\u0e31\u0e49\u0e07\u0e40\u0e27\u0e25\u0e32 3 \u0e23\u0e2d\u0e1a/\u0e27\u0e31\u0e19",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        720
      ]
    },
    {
      "parameters": {
        "operation": "read",
        "documentId": {
          "__rl": true,
          "value": "YOUR_GOOGLE_SHEET_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "Complaints",
          "mode": "name"
        },
        "options": {}
      },
      "id": "node_sheet_read",
      "name": "\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07 (Sheet)",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        280,
        720
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.line.me/v2/bot/message/push",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.LINE_CHANNEL_ACCESS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"to\": \"YOUR_GROUP_ID\",\n  \"messages\": [{ \"type\": \"text\", \"text\": \"\ud83d\udd34 \u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\" }]\n}",
        "options": {}
      },
      "id": "node_push",
      "name": "\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e01\u0e25\u0e38\u0e48\u0e21 (Push)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        560,
        720
      ]
    }
  ],
  "connections": {
    "\u0e01\u0e25\u0e38\u0e48\u0e21 LINE (Webhook)": {
      "main": [
        [
          {
            "node": "\u0e41\u0e22\u0e01\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u0e41\u0e22\u0e01\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21": {
      "main": [
        [
          {
            "node": "\u0e41\u0e19\u0e1a\u0e23\u0e39\u0e1b\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19 (GCS)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a (Sheet)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Gemini AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c": {
      "main": [
        [
          {
            "node": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48 (Sheet)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48 (Sheet)": {
      "main": [
        [
          {
            "node": "\u0e15\u0e2d\u0e1a\u0e40\u0e25\u0e02\u0e07\u0e32\u0e19\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a (Sheet)": {
      "main": [
        [
          {
            "node": "\u0e15\u0e2d\u0e1a\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u0e15\u0e31\u0e49\u0e07\u0e40\u0e27\u0e25\u0e32 3 \u0e23\u0e2d\u0e1a/\u0e27\u0e31\u0e19": {
      "main": [
        [
          {
            "node": "\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07 (Sheet)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07 (Sheet)": {
      "main": [
        [
          {
            "node": "\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e01\u0e25\u0e38\u0e48\u0e21 (Push)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templatecredsSetupCompleted": false,
    "description": "\u0e1c\u0e31\u0e07\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 AGA Complaint Agent (\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e23\u0e34\u0e07\u0e40\u0e02\u0e35\u0e22\u0e19\u0e14\u0e49\u0e27\u0e22 Node.js \u0e1a\u0e19 Cloud Run \u2014 \u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d presentation/\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e31\u0e07\u0e43\u0e19 n8n)"
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

AGA Complaint Agent (LINE). Uses httpRequest, googleSheets. Webhook trigger; 13 nodes.

Source: https://github.com/13azukaoab/AGA-Complaint-Agent-LINE/blob/262248c97310502073be9798dc64c9334c55dea6/AGA-Complaint-Agent.n8n.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Automate the entire product return process with an intelligent AI-powered agent that navigates return portals on your behalf 🤖. This workflow receives customer return requests, analyzes portal structu

HTTP Request, Gmail, Google Sheets
AI & RAG

Ecotrustia — WhatsApp AI Agent. Uses httpRequest, googleSheets. Webhook trigger; 13 nodes.

HTTP Request, Google Sheets
AI & RAG

Legal AI Agent for WhatsApp. Uses httpRequest, googleSheets. Webhook trigger; 12 nodes.

HTTP Request, Google Sheets
AI & RAG

Sistema Automação Jurídica - Workflow Principal. Uses googleDrive, httpRequest, googleDocs, googleSheets. Webhook trigger; 11 nodes.

Google Drive, HTTP Request, Google Docs +2
AI & RAG

AI Lead Generation & Outreach Agent. Uses httpRequest, googleSheets, gmail. Webhook trigger; 6 nodes.

HTTP Request, Google Sheets, Gmail