Après chaque service, envoyez automatiquement un questionnaire à vos clients, centralisez les réponses et identifiez les axes d’amélioration. L’automatisation permet de réagir rapidement aux retours négatifs et de fidéliser les clients satisfaits.
Après chaque service, envoyez automatiquement un questionnaire à vos clients, centralisez les réponses et identifiez les axes d’amélioration. L’automatisation permet de réagir rapidement aux retours négatifs et de fidéliser les clients satisfaits.
{
"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.nnHere 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 "u0e14u0e39u0e40u0e1eu0e34u0e48u0e21u0e40u0e15u0e34u0e21" or "u0e14u0e39u0e23u0e32u0e22u0e25u0e30u0e40u0e2du0e35u0e22u0e14u0e44u0e14u0e49u0e17u0e35u0e48u0e19u0e35u0e48.""
},
{
"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": "u0e01u0e23u0e38u0e13u0e32u0e2au0e48u0e07u0e2du0e22u0e48u0e32u0e07u0e2du0e37u0e48u0e19u0e40u0e16u0e2du0e30u0e19u0e30u0e40u0e15u0e07u0e2du0e31u0e27"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
}
]
]
}
}
}