Line-Chatbot-Gehaltsabrechnungs-Textextraktion (Gemini)

Experte

Dies ist ein Finance, AI-Bereich Automatisierungsworkflow mit 17 Nodes. Hauptsächlich werden Set, Switch, Webhook, HttpRequest, GoogleSheets und andere Nodes verwendet, kombiniert mit KI-Technologie für intelligente Automatisierung. Gehaltsdaten über Line Chatbot und Gemini in Google Tabellen extrahieren

Voraussetzungen
  • HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten
  • Google Gemini API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "bPxDenPJ5Ixx0txY",
  "meta": {
    "instanceId": "42d7f9cf04ccdfd3d3df5ffa87039b320845693c4b4e380cbb8cc2807641f810",
    "templateCredsSetupCompleted": true
  },
  "name": "Line_Chatbot_Extract_Text_from_Pay_Slip_with_Gemini",
  "tags": [],
  "nodes": [
    {
      "id": "83f758b4-a80b-4f27-ac13-ee0958ed97f2",
      "name": "Window Buffer Speicher",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        200,
        320
      ],
      "parameters": {
        "sessionKey": "={{ $json.body.events[0].source.userId }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "c41976eb-4a35-4c59-8167-538c651ad7e5",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -200,
        520
      ],
      "parameters": {
        "width": 620,
        "height": 500,
        "content": "## Extract text from image\n**Prompt for Gemini**\nAnalyze image and then return in JSON Response that has the only following value: Status, From, To, Date, Amount"
      },
      "typeVersion": 1
    },
    {
      "id": "c3eb2420-a503-4039-874c-df3c2799c561",
      "name": "Line: Get Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -160,
        660
      ],
      "parameters": {
        "url": "=https://api-data.line.me/v2/bot/message/{{ $json.body.events[0].message.id }}/content ",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "uFkmYj5e89iPyHcG",
          "name": "Line Automate Task Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e39e5392-b287-4efe-a9a9-1f241e82cd92",
      "name": "Message Type",
      "type": "n8n-nodes-base.set",
      "position": [
        -620,
        400
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e9deec19-c171-4af5-bfb7-f0917ba658c5",
              "name": "body.events[0].message.text",
              "type": "string",
              "value": "={{ $json.body.events[0].message.text }}"
            },
            {
              "id": "ae9ee257-494f-4c65-a39d-4dc3505f2c01",
              "name": "body.events[0].message.id",
              "type": "string",
              "value": "={{ $json.body.events[0].message.id }}"
            },
            {
              "id": "5e3dfc31-ed6e-4899-880d-ce73076e0cfd",
              "name": "body.events[0].source.userId",
              "type": "string",
              "value": "={{ $json.body.events[0].source.userId }}"
            },
            {
              "id": "8918e8d3-2a30-40df-b452-c07f340972cf",
              "name": "body.events[0].message.type",
              "type": "string",
              "value": "={{ $json.body.events[0].message.type }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "a166e880-9291-4794-a6be-47f0a86e77e7",
      "name": "Message Classification",
      "type": "n8n-nodes-base.switch",
      "position": [
        -420,
        400
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "7f862599-1eb2-4f76-910f-6caae33ea292",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('Line: Messaging API').item.json.body.events[0].message.type }}",
                    "rightValue": "text"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0b661fab-e556-45ee-b845-67aff27fd862",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('Line: Messaging API').item.json.body.events[0].message.type }}",
                    "rightValue": "image"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "550e6e18-6b3e-4b08-8344-12bc76a1f736",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('Line: Messaging API').item.json.body.events[0].message.stickerId }}",
                    "rightValue": "=150"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "d7c29939-dd8e-43e9-89f2-879dc8ea318c",
      "name": "Haftnotiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 420,
        "height": 460,
        "content": "## Gemini AI Assistant\n\nAI Assistant using Gemini 2.0 Flash Experiment unlocks new possibilities for AI agents - intelligent systems that can use memory, reasoning, and planning to complete tasks for you."
      },
      "typeVersion": 1
    },
    {
      "id": "0df36c5d-ec2a-492d-b688-4bad8d81cf38",
      "name": "Text Message Processing",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        100,
        140
      ],
      "parameters": {
        "text": "=This is the message from User: {{ $json.body.events[0].message.text }}",
        "agent": "conversationalAgent",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "dfafa5ba-a855-4ebf-a19d-2addb556e791",
      "name": "Image Message Processing",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        100,
        660
      ],
      "parameters": {
        "text": "Analyze image and then return in JSON Response that has the only following Value:\nStatus, From, To, Date, Amount",
        "messages": {
          "messageValues": [
            {
              "message": "You are the image analyzer. You can analyze image and extract the important information from image."
            },
            {
              "type": "HumanMessagePromptTemplate",
              "messageType": "imageBinary"
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.5
    },
    {
      "id": "b9a309bf-2c49-40e1-a0e4-9cced43d6e85",
      "name": "Line: Response to User",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        580,
        660
      ],
      "parameters": {
        "url": "https://api.line.me/v2/bot/message/reply",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"replyToken\":\"{{ $('Line: Messaging API').item.json.body.events[0].replyToken }}\",\n  \"messages\":[\n    {\n      \"type\":\"text\",\n      \"text\": {{ JSON.stringify($json.text.replace(/^```(?:json|markdown)?\\n?/, \"\").replace(/\\n?```$/, \"\")) }}\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "uFkmYj5e89iPyHcG",
          "name": "Line Automate Task Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ff5561fa-b334-4639-a513-554ee3507ab0",
      "name": "Line: Text Response to User",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        580,
        140
      ],
      "parameters": {
        "url": "https://api.line.me/v2/bot/message/reply",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"replyToken\":\"{{ $('Line: Messaging API').item.json.body.events[0].replyToken }}\",\n  \"messages\":[\n    {\n      \"type\":\"text\",\n      \"text\": {{ JSON.stringify($json.output) }}\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "uFkmYj5e89iPyHcG",
          "name": "Line Automate Task Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "850f1079-cecf-4680-835f-34af829ee8f5",
      "name": "Text from Slip Result",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1020,
        660
      ],
      "parameters": {
        "columns": {
          "value": {
            "To": "={{ JSON.parse($('Image Message Processing').item.json.text.replace(/^```(?:json|markdown)?\\n?/, \"\").replace(/\\n?```$/, \"\")).To }}",
            "Date": "={{ JSON.parse($('Image Message Processing').item.json.text.replace(/^```(?:json|markdown)?\\n?/, \"\").replace(/\\n?```$/, \"\")).Date }}",
            "From": "={{ JSON.parse($('Image Message Processing').item.json.text.replace(/^```(?:json|markdown)?\\n?/, \"\").replace(/\\n?```$/, \"\")).From}}",
            "Amount": "={{ JSON.parse($('Image Message Processing').item.json.text.replace(/^```(?:json|markdown)?\\n?/, \"\").replace(/\\n?```$/, \"\")).Amount }}",
            "Status": "={{ JSON.parse($('Image Message Processing').item.json.text.replace(/^```(?:json|markdown)?\\n?/, \"\").replace(/\\n?```$/, \"\")).Status }}"
          },
          "schema": [
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "From",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "From",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "To",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "To",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Amount",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Status"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1PUXj_t3G-arnfzNDbY0g9Pr1G4YMGrc68fDs98pV-n4/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1PUXj_t3G-arnfzNDbY0g9Pr1G4YMGrc68fDs98pV-n4/edit?gid=0#gid=0"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "tENCv7liPQDhRoqL",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "a268daa7-76d9-437b-99e9-bd755eb4d36f",
      "name": "Line: Messaging API",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -820,
        400
      ],
      "webhookId": "4c0de537-2889-47d2-ac44-3a9cda89c9f3",
      "parameters": {
        "path": "4c0de537-2889-47d2-ac44-3a9cda89c9f3",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "b3c4c66a-78d6-4ad5-9a5c-afef6f86e5cc",
      "name": "Haftnotiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        460,
        0
      ],
      "parameters": {
        "width": 420,
        "height": 1020,
        "content": "## Reply to User\n\nReply the processing result to the user without coding or OCR processing."
      },
      "typeVersion": 1
    },
    {
      "id": "6c76dc81-6c10-4522-9d5f-da4579391281",
      "name": "Haftnotiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        900,
        520
      ],
      "parameters": {
        "width": 420,
        "height": 500,
        "content": "## Insert result to Google Sheet\nGet all important information from the Pay Slip and insert into Google Sheet in the same format that we have provided in our prompt.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "49bac770-adb1-4ef3-8bf9-c8cf107471ad",
      "name": "Haftnotiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -860,
        260
      ],
      "parameters": {
        "width": 620,
        "height": 500,
        "content": "## Get Line Message from User\nUser can send message in both text and Pay Slip image then classify the message type in text or image so we could have single workflow for AI Assistant that support anything."
      },
      "typeVersion": 1
    },
    {
      "id": "9f034b6f-bb5b-4dc6-941d-b745f15da254",
      "name": "Google Gemini for Text",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        60,
        320
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "Gqc4JMC0dFmMRP7Z",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "15fa3203-9230-4a1d-9e0d-87652cb9d9ab",
      "name": "Google Gemini for Image",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        60,
        880
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "Gqc4JMC0dFmMRP7Z",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "d14ef869-77c2-49a8-9867-1775d8f0b085",
  "connections": {
    "e39e5392-b287-4efe-a9a9-1f241e82cd92": {
      "main": [
        [
          {
            "node": "a166e880-9291-4794-a6be-47f0a86e77e7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c3eb2420-a503-4039-874c-df3c2799c561": {
      "main": [
        [
          {
            "node": "dfafa5ba-a855-4ebf-a19d-2addb556e791",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a268daa7-76d9-437b-99e9-bd755eb4d36f": {
      "main": [
        [
          {
            "node": "e39e5392-b287-4efe-a9a9-1f241e82cd92",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "0df36c5d-ec2a-492d-b688-4bad8d81cf38",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "9f034b6f-bb5b-4dc6-941d-b745f15da254": {
      "ai_languageModel": [
        [
          {
            "node": "0df36c5d-ec2a-492d-b688-4bad8d81cf38",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "b9a309bf-2c49-40e1-a0e4-9cced43d6e85": {
      "main": [
        [
          {
            "node": "850f1079-cecf-4680-835f-34af829ee8f5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a166e880-9291-4794-a6be-47f0a86e77e7": {
      "main": [
        [
          {
            "node": "0df36c5d-ec2a-492d-b688-4bad8d81cf38",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "c3eb2420-a503-4039-874c-df3c2799c561",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "15fa3203-9230-4a1d-9e0d-87652cb9d9ab": {
      "ai_languageModel": [
        [
          {
            "node": "dfafa5ba-a855-4ebf-a19d-2addb556e791",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "0df36c5d-ec2a-492d-b688-4bad8d81cf38": {
      "main": [
        [
          {
            "node": "ff5561fa-b334-4639-a513-554ee3507ab0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dfafa5ba-a855-4ebf-a19d-2addb556e791": {
      "main": [
        [
          {
            "node": "b9a309bf-2c49-40e1-a0e4-9cced43d6e85",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Finanzen, Künstliche Intelligenz

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes17
Kategorie2
Node-Typen10
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Sirisak Chantanate

Sirisak Chantanate

@openmymai

Automation consultant with 1 year experience helping Sales & Marketing teams to streamline their processes. Use my link to book an initial consultation for custom n8n work.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34