Automatisation Intelligente LINE avec Google et OpenAI

Ce workflow n8n optimise la communication en intégrant LINE avec Google Calendar et Gmail, tout en exploitant l'intelligence d'OpenAI. Idéal pour les entreprises souhaitant automatiser la gestion des interactions clients, il permet de répondre instantanément aux messages LINE, de créer des événements dans Google Calendar et de lire des emails pertinents. Cette solution réduit le temps passé sur les tâches manuelles et améliore la précision grâce à un assistant virtuel intelligent.

75,560 vues
18,457 copies
Intégration

Documentation Complète

📋 Automatisation Intelligente LINE avec Google et OpenAI

💡 Description

Ce workflow n8n optimise la communication en intégrant LINE avec Google Calendar et Gmail, tout en exploitant l'intelligence d'OpenAI. Idéal pour les entreprises souhaitant automatiser la gestion des interactions clients, il permet de répondre instantanément aux messages LINE, de créer des événements dans Google Calendar et de lire des emails pertinents. Cette solution réduit le temps passé sur les tâches manuelles et améliore la précision grâce à un assistant virtuel intelligent.

📈 Impact & ROI: Ce workflow réduit considérablement le temps passé sur la gestion manuelle des communications, augmentant ainsi l'efficacité opérationnelle et permettant de se concentrer sur des tâches à plus forte valeur ajoutée.

🚀 Fonctionnalités Clés

  • ✅ Réponses automatiques aux messages LINE - Amélioration de l'efficacité
  • ✅ Création d'événements Google Calendar - Gestion simplifiée du calendrier
  • ✅ Lecture d'emails Gmail - Accès rapide aux informations pertinentes
  • ✅ Utilisation d'OpenAI - Réponses intelligentes et précises

📊 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

Optimisation de la gestion des Pull Requests avec Pipedrive

Ce workflow permet d'automatiser le suivi des Pull Requests GitHub en les intégrant directement dans Pipedrive. Lorsqu'...

Synchronisation Automatisée des Événements Discord et Google Calendar

Ce workflow puissant automatise la synchronisation des événements programmés sur Discord avec Google Calendar, garant...

Automatisez les commandes Squarespace vers Google Sheets

Ce workflow automatise le processus de récupération des commandes de Squarespace et leur enregistrement dans Google Sh...