Automatisation Intelligente LINE avec Google et OpenAI

Ce workflow innovant connecte LINE, Google Calendar, Gmail et OpenAI pour offrir une solution d'assistance virtuelle automatisée. Il permet de gérer efficacement les interactions utilisateur via LINE, d'extraire des informations pertinentes à partir de Google Calendar et Gmail, et d'utiliser l'intelligence artificielle pour fournir des réponses précises et contextuelles. En intégrant ces services, le workflow améliore la productivité en automatisant les tâches répétitives et en réduisant le temps nécessaire à la gestion des communications.

81,261 vues
31,423 copies
Automatisation

Documentation Complète

📋 Automatisation Intelligente LINE avec Google et OpenAI

💡 Description

Ce workflow innovant connecte LINE, Google Calendar, Gmail et OpenAI pour offrir une solution d'assistance virtuelle automatisée. Il permet de gérer efficacement les interactions utilisateur via LINE, d'extraire des informations pertinentes à partir de Google Calendar et Gmail, et d'utiliser l'intelligence artificielle pour fournir des réponses précises et contextuelles. En intégrant ces services, le workflow améliore la productivité en automatisant les tâches répétitives et en réduisant le temps nécessaire à la gestion des communications.

📈 Impact & ROI: Améliore considérablement l'efficacité opérationnelle en automatisant les interactions clients et la gestion des calendriers, réduisant ainsi le besoin de ressources humaines dédiées.

🚀 Fonctionnalités Clés

  • ✅ Intégration fluide de LINE avec Google Services
  • ✅ Réponses intelligentes grâce à OpenAI
  • ✅ Gestion automatique des événements dans Google Calendar
  • ✅ Filtrage et traitement efficace des emails avec Gmail

📊 Architecture Technique

14
Nodes
12
Connexions
4
Services

🔌 Services Intégrés

LINEGoogle CalendarGmailOpenAI

🔧 Composition du Workflow

NodeTypeDescription
AI Agent@n8n/n8n-nodes-langchain.agentTraitement des données
Window Buffer Memory@n8n/n8n-nodes-langchain.memoryBufferWindowTraitement des données
OpenAI Chat Model@n8n/n8n-nodes-langchain.lmChatOpenAiTraitement des données
Wikipedia@n8n/n8n-nodes-langchain.toolWikipediaTraitement des données
OpenAI@n8n/n8n-nodes-langchain.openAiTraitement des données
Switch Between Text and OthersswitchTraitement des données
Line ReceivingwebhookRéception de données via webhook
Error Handling from AI ResponseswitchTraitement des données
Text CleansingsetTraitement des données
Line Answering (Error Case)httpRequestRequête HTTP vers une API externe
Line Answering (Ordinary Case)httpRequestRequête HTTP vers une API externe
Google Calendar CreategoogleCalendarToolTraitement des données
Google Calendar ReadgoogleCalendarToolTraitement des données
Gmail ReadgmailToolTraitement des données

📖 Guide d'Implémentation

  1. Import du workflow: Téléchargez le fichier JSON et importez-le dans votre instance n8n
  2. Configuration des credentials: Configurez les accès pour chaque service utilisé
  3. Personnalisation: Adaptez les paramètres selon vos besoins spécifiques
  4. Test: Exécutez le workflow en mode test pour vérifier le bon fonctionnement
  5. Activation: Activez le workflow pour une exécution automatique

🏷️ Tags

LINEGoogle CalendarGmailOpenAI

Structure JSON

Voir le code JSON complet
{
    "id": "Z5OgwYfK4reCTv9y",
    "meta": {
        "instanceId": "c59c4acfed171bdc864e7c432be610946898c3ee271693e0303565c953d88c1d"
    },
    "name": "LINE Assistant with Google Calendar and Gmail Integration",
    "tags": [],
    "nodes": [
        {
            "id": "9e1e1c11-f406-47de-8f65-9669cf078d3d",
            "name": "AI Agent",
            "type": "@n8n\/n8n-nodes-langchain.agent",
            "position": [
                -1140,
                120
            ],
            "parameters": {
                "text": "={{ $json.body.events[0].message.text }}",
                "options": {
                    "systemMessage": "=You are a helpful assistant.\n\nHere is the current date {{ $now }}"
                },
                "promptType": "define"
            },
            "typeVersion": 1.7
        },
        {
            "id": "fa722820-8804-47da-bb21-02c0d2b5d665",
            "name": "Window Buffer Memory",
            "type": "@n8n\/n8n-nodes-langchain.memoryBufferWindow",
            "position": [
                -1020,
                580
            ],
            "parameters": {
                "sessionKey": "={{ $json.body.events[0].source.userId }}",
                "sessionIdType": "customKey"
            },
            "typeVersion": 1.3
        },
        {
            "id": "5149b91a-5934-4037-a444-dfdb93d0cd16",
            "name": "OpenAI Chat Model",
            "type": "@n8n\/n8n-nodes-langchain.lmChatOpenAi",
            "position": [
                -1180,
                580
            ],
            "parameters": {
                "options": []
            },
            "typeVersion": 1
        },
        {
            "id": "211a120d-d65f-4708-adc2-66dc8f4a40d6",
            "name": "Wikipedia",
            "type": "@n8n\/n8n-nodes-langchain.toolWikipedia",
            "position": [
                -360,
                380
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "0e03137d-0300-47a4-bbd8-03c87c93d6e2",
            "name": "OpenAI",
            "type": "@n8n\/n8n-nodes-langchain.openAi",
            "position": [
                -780,
                120
            ],
            "parameters": {
                "modelId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "gpt-4o-mini",
                    "cachedResultName": "GPT-4O-MINI"
                },
                "options": [],
                "messages": {
                    "values": [
                        {
                            "role": "system",
                            "content": "Your task is to extract and condense the answer into an easily readable format. Don't provide a link or details such as \"ดูเพิ่มเติม\" or \"ดูรายละเอียดได้ที่นี่.\""
                        },
                        {
                            "content": "={{ $json.output }}"
                        }
                    ]
                }
            },
            "typeVersion": 1.7
        },
        {
            "id": "8c6e96bc-aa9d-44d1-b7ce-6bb85b175cf1",
            "name": "Switch Between Text and Others",
            "type": "n8n-nodes-base.switch",
            "position": [
                -1820,
                640
            ],
            "parameters": {
                "rules": {
                    "values": [
                        {
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": true,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "operator": {
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $('Line Receiving').item.json.body.events[0].message.type }}",
                                        "rightValue": "text"
                                    }
                                ]
                            }
                        }
                    ]
                },
                "options": {
                    "fallbackOutput": "extra"
                }
            },
            "typeVersion": 3.2
        },
        {
            "id": "721a5e5e-3a9a-435e-9302-03ca7cf64fb7",
            "name": "Line Receiving",
            "type": "n8n-nodes-base.webhook",
            "position": [
                -2320,
                560
            ],
            "webhookId": "********-****-****-****-************",
            "parameters": {
                "path": "linechatbotagent",
                "options": [],
                "httpMethod": "POST"
            },
            "typeVersion": 2
        },
        {
            "id": "2b47f8f1-a501-4204-9221-c838edfceae7",
            "name": "Error Handling from AI Response",
            "type": "n8n-nodes-base.switch",
            "position": [
                -220,
                100
            ],
            "parameters": {
                "rules": {
                    "values": [
                        {
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": true,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "operator": {
                                            "type": "string",
                                            "operation": "exists",
                                            "singleValue": true
                                        },
                                        "leftValue": "={{ $json.message.content }}",
                                        "rightValue": "={{ $json.output }}"
                                    }
                                ]
                            }
                        }
                    ]
                },
                "options": {
                    "fallbackOutput": "extra"
                }
            },
            "typeVersion": 3.2
        },
        {
            "id": "99218c08-5ec7-44b9-a795-e98f1ec4aab3",
            "name": "Text Cleansing",
            "type": "n8n-nodes-base.set",
            "position": [
                0,
                0
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "********-****-****-****-************",
                            "name": "message.content",
                            "type": "string",
                            "value": "={{ $json.message.content.replaceAll(\"\\n\",\"\\\\n\").replaceAll(\"\\n\",\"\").removeMarkdown().removeTags().replaceAll('\"',\"\") }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.4
        },
        {
            "id": "39476f44-9dc7-4c72-a857-9e79f85ccd72",
            "name": "Line Answering (Error Case)",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                760,
                680
            ],
            "parameters": {
                "url": "https:\/\/api.line.me\/v2\/bot\/message\/reply",
                "method": "POST",
                "options": [],
                "jsonBody": "={\n  \"replyToken\": \"{{ $('Line Receiving').item.json.body.events[0].replyToken }}\",\n  \"messages\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"กรุณาส่งอย่างอื่นเถอะนะเตงอัว\"\n    }\n  ]}",
                "sendBody": true,
                "jsonHeaders": "{\n\"Authorization\": \"Bearer ****************************************\",\n\"Content-Type\": \"application\/json\"\n}",
                "sendHeaders": true,
                "specifyBody": "json",
                "specifyHeaders": "json"
            },
            "typeVersion": 4.2
        },
        {
            "id": "a7f8837d-c21b-457d-ad8b-b0b69e3c1ba7",
            "name": "Line Answering (Ordinary Case)",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                600,
                120
            ],
            "parameters": {
                "url": "https:\/\/api.line.me\/v2\/bot\/message\/reply",
                "method": "POST",
                "options": [],
                "jsonBody": "={\n  \"replyToken\": \"{{ $('Line Receiving').item.json.body.events[0].replyToken }}\",\n  \"messages\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"{{ $json.message.content }}\"\n    }\n  ]}",
                "sendBody": true,
                "jsonHeaders": "{\n\"Authorization\": \"Bearer ****************************************\",\n\"Content-Type\": \"application\/json\"\n}",
                "sendHeaders": true,
                "specifyBody": "json",
                "specifyHeaders": "json"
            },
            "typeVersion": 4.2
        },
        {
            "id": "3280f331-0130-41c2-a581-14feccf76514",
            "name": "Google Calendar Create",
            "type": "n8n-nodes-base.googleCalendarTool",
            "position": [
                -640,
                400
            ],
            "parameters": {
                "end": "=  {{ $fromAI(\"createenddate\",\"end date and time to create event\") }}",
                "start": "=  {{ $fromAI(\"createstartdate\",\"start date and time to create event\") }}",
                "calendar": {
                    "__rl": true,
                    "mode": "list",
                    "value": "***********@gmail.com",
                    "cachedResultName": "***********@gmail.com"
                },
                "additionalFields": {
                    "summary": "={{ $fromAI(\"event_name\",\"Name of an Event\") }}"
                }
            },
            "credentials": {
                "googleCalendarOAuth2Api": {
                    "id": "0PzHsuCKdTBU5E2Q",
                    "name": "Google Calendar account"
                }
            },
            "typeVersion": 1.2
        },
        {
            "id": "7701895f-9781-41b9-aa80-8440e4e9cbd3",
            "name": "Google Calendar Read",
            "type": "n8n-nodes-base.googleCalendarTool",
            "position": [
                -880,
                580
            ],
            "parameters": {
                "limit": 5,
                "options": {
                    "timeMax": "={{ $fromAI(\"enddate\",\"end date user mentioned about\") }}",
                    "timeMin": "={{ $fromAI(\"startdate\",\"start date user mentioned about\") }}"
                },
                "calendar": {
                    "__rl": true,
                    "mode": "list",
                    "value": "***********@gmail.com",
                    "cachedResultName": "***********@gmail.com"
                },
                "operation": "getAll"
            },
            "credentials": {
                "googleCalendarOAuth2Api": {
                    "id": "0PzHsuCKdTBU5E2Q",
                    "name": "Google Calendar account"
                }
            },
            "typeVersion": 1.2
        },
        {
            "id": "881daa7f-cf9a-4d1f-8235-55d206925ac0",
            "name": "Gmail Read",
            "type": "n8n-nodes-base.gmailTool",
            "position": [
                -700,
                560
            ],
            "webhookId": "********-****-****-****-************",
            "parameters": {
                "limit": 5,
                "filters": {
                    "receivedAfter": "={{ $fromAI(\"receiveddate\",\"the date email received\") }}"
                },
                "operation": "getAll"
            },
            "credentials": {
                "gmailOAuth2": {
                    "id": "cZmU8EQya5OtXVgQ",
                    "name": "Gmail account"
                }
            },
            "typeVersion": 2.1
        }
    ],
    "active": false,
    "pinData": {
        "Line Receiving": [
            {
                "json": {
                    "body": {
                        "events": [
                            {
                                "mode": "active",
                                "type": "message",
                                "source": {
                                    "type": "user",
                                    "userId": "****************************************"
                                },
                                "message": {
                                    "id": "539986086979174564",
                                    "text": "",
                                    "type": "text",
                                    "quoteToken": "****************************************"
                                },
                                "timestamp": 1734688093030,
                                "replyToken": "********************************",
                                "webhookEventId": "01JFHQFD2KQE4BA5VVW32YDBZV",
                                "deliveryContext": {
                                    "isRedelivery": false
                                }
                            }
                        ],
                        "destination": "****************************************"
                    },
                    "query": [],
                    "params": [],
                    "headers": {
                        "host": "n8n-9pul.onrender.com",
                        "cf-ray": "****************",
                        "rndr-id": "****************",
                        "cdn-loop": "cloudflare; loops=1; subreqs=1",
                        "cf-ew-via": "15",
                        "cf-worker": "onrender.com",
                        "cf-visitor": "{\"scheme\":\"https\"}",
                        "user-agent": "LineBotWebhook\/2.0",
                        "cf-ipcountry": "JP",
                        "content-type": "application\/json; charset=utf-8",
                        "content-length": "619",
                        "true-client-ip": "***.***.***.**",
                        "accept-encoding": "gzip, br",
                        "x-forwarded-for": "***.***.***.***, ***.***.***.**",
                        "x-request-start": "1734688093431195",
                        "cf-connecting-ip": "***.***.***.**",
                        "render-proxy-ttl": "4",
                        "x-line-signature": "****************************************",
                        "x-forwarded-proto": "https"
                    },
                    "webhookUrl": "https:\/\/n8n-9pul.onrender.com\/webhook\/linechatbotagent",
                    "executionMode": "production"
                }
            }
        ]
    },
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "14065639-6706-4161-9380-4f4dde6eb501",
    "connections": {
        "OpenAI": {
            "main": [
                [
                    {
                        "node": "Error Handling from AI Response",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "AI Agent": {
            "main": [
                [
                    {
                        "node": "OpenAI",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Wikipedia": {
            "ai_tool": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_tool",
                        "index": 0
                    }
                ]
            ]
        },
        "Gmail Read": {
            "ai_tool": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_tool",
                        "index": 0
                    }
                ]
            ]
        },
        "Line Receiving": {
            "main": [
                [
                    {
                        "node": "Switch Between Text and Others",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Text Cleansing": {
            "main": [
                [
                    {
                        "node": "Line Answering (Ordinary Case)",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "OpenAI Chat Model": {
            "ai_languageModel": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "Google Calendar Read": {
            "ai_tool": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_tool",
                        "index": 0
                    }
                ]
            ]
        },
        "Window Buffer Memory": {
            "ai_memory": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_memory",
                        "index": 0
                    }
                ]
            ]
        },
        "Google Calendar Create": {
            "ai_tool": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_tool",
                        "index": 0
                    }
                ]
            ]
        },
        "Switch Between Text and Others": {
            "main": [
                [
                    {
                        "node": "AI Agent",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Line Answering (Error Case)",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Error Handling from AI Response": {
            "main": [
                [
                    {
                        "node": "Text Cleansing",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Line Answering (Error Case)",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
                                

Workflows Similaires

Public Form Auto Triage

Workflow automatisé avec 12 nodes incluant : stickyNote, webhook, @n8n/langchain.textSplitterCharacterTextSplitter, @n8...

Image Captioning

Workflow automatisé avec 12 nodes incluant : stickyNote, webhook, @n8n/langchain.textSplitterCharacterTextSplitter, @n8...

Daily Content Ideas

Workflow automatisé avec 12 nodes incluant : stickyNote, webhook, @n8n/langchain.textSplitterCharacterTextSplitter, @n8...