基于AI的学生助手(通过Twilio SMS提供课程信息)
中级
这是一个AI领域的自动化工作流,包含 12 个节点。主要使用 Set, Twilio, Airtable, AirtableTool, TwilioTrigger 等节点,结合人工智能技术实现智能自动化。 基于AI的学生助手(通过Twilio SMS提供课程信息)
前置要求
- •Airtable API Key
- •OpenAI API Key
分类
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "c2429079-50b7-4da8-9fe4-9a1879bd681c",
"name": "Twilio Trigger",
"type": "n8n-nodes-base.twilioTrigger",
"position": [
-380,
-460
],
"webhookId": "47604448-e049-480d-899e-d3318a93276b",
"parameters": {
"updates": [
"com.twilio.messaging.inbound-message.received"
]
},
"credentials": {
"twilioApi": {
"id": "TJv4H4lXxPCLZT50",
"name": "Twilio account"
}
},
"typeVersion": 1
},
{
"id": "b1c0dc4c-593f-49aa-8fec-a77c7e40928e",
"name": "Search Available Courses",
"type": "n8n-nodes-base.airtableTool",
"position": [
380,
-80
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appO5xvP1aUBYKyJ7",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7",
"cachedResultName": "Northvale Institute of Technology Courses 2025-2026"
},
"limit": 5,
"table": {
"__rl": true,
"mode": "list",
"value": "tblRfh0t0KNSJYJVw",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7/tblRfh0t0KNSJYJVw",
"cachedResultName": "Imported table"
},
"options": {},
"operation": "search",
"returnAll": false,
"descriptionType": "manual",
"filterByFormula": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}",
"toolDescription": "Call this tool to access the course database. Ensure you have the course database schema before using this tool."
},
"credentials": {
"airtableTokenApi": {
"id": "Und0frCQ6SNVX3VV",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "ad06d5f6-cd6d-4804-b633-cf065866f41e",
"name": "Get Course Database Schema",
"type": "n8n-nodes-base.airtableTool",
"position": [
240,
-160
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appO5xvP1aUBYKyJ7",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7",
"cachedResultName": "Northvale Institute of Technology Courses 2025-2026"
},
"resource": "base",
"operation": "getSchema",
"descriptionType": "manual",
"toolDescription": "Call this tool to get the course database schema."
},
"credentials": {
"airtableTokenApi": {
"id": "Und0frCQ6SNVX3VV",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "7d16ef89-3e63-4f64-9470-eb1bf9c76ece",
"name": "Get User Message",
"type": "n8n-nodes-base.set",
"position": [
-160,
-460
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5ca2fffb-2926-42df-ae2b-95ba081345ef",
"name": "message",
"type": "string",
"value": "={{ $json.Body || $json.chatInput }}"
},
{
"id": "3bfdb166-0ab1-44b9-b6e4-ce6ad52a465c",
"name": "sessionId",
"type": "string",
"value": "={{ $json.From || $json.sessionId }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b2b03e59-2c1d-4852-a8a6-37fb20f38b55",
"name": "Send SMS reply",
"type": "n8n-nodes-base.twilio",
"position": [
660,
-460
],
"parameters": {
"to": "={{ $json.fields.from }}",
"from": "={{ $('Twilio Trigger').item.json.To }}",
"message": "={{ $('Course Assistant Agent').item.json.output }}",
"options": {}
},
"credentials": {
"twilioApi": {
"id": "TJv4H4lXxPCLZT50",
"name": "Twilio account"
}
},
"typeVersion": 1
},
{
"id": "c07ba0c0-2e22-48fc-bca9-cbaeb221ccf9",
"name": "Append to Call Log",
"type": "n8n-nodes-base.airtable",
"position": [
440,
-460
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appO5xvP1aUBYKyJ7",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7",
"cachedResultName": "Northvale Institute of Technology Courses 2025-2026"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblRFuaayw0En6T0c",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7/tblRFuaayw0En6T0c",
"cachedResultName": "Call Log"
},
"columns": {
"value": {
"from": "={{ $('Get User Message').first().json.sessionId }}",
"answer": "={{ $json.output }}",
"question": "={{ $('Get User Message').first().json.message }}"
},
"schema": [
{
"id": "from",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "from",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "question",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "question",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "answer",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "answer",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Created",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "Und0frCQ6SNVX3VV",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "ba7b4d7b-7b78-41f0-b158-3d1f09d14120",
"name": "Course Assistant Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
60,
-460
],
"parameters": {
"text": "={{ $json.message }}",
"options": {
"systemMessage": "=You are a course enquiry assistant for the Northvale Institute of Technology helping students with various questions about the available courses for the year.\n* Answer factually and source the information from the course database to ensure you have updated information.\n* Avoid answering or engaging in any discussion not related to the Northvale Institute of Technology courses and instead, direct the student to contact helpdesk@northvale.edu.\n* always query the course database schema before using tools.\n\nNote: The airtable filter by query syntax was updated\n* Wrap your query in AND() or OR() to join parameters.\n* To filter select or multiple select finds, use the FIND() operation. eg. AND({Schedule_from}>=900, FIND('Wed', {Schedule_day}))\n* times should be inclusive unless otherwise stated. Use the >= or <= operators."
},
"promptType": "define"
},
"typeVersion": 1.8
},
{
"id": "3c790125-6665-4a0c-85b4-397e71faae35",
"name": "Get List of Professors",
"type": "n8n-nodes-base.airtableTool",
"position": [
560,
-180
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appO5xvP1aUBYKyJ7",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7",
"cachedResultName": "Northvale Institute of Technology Courses 2025-2026"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblRfh0t0KNSJYJVw",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7/tblRfh0t0KNSJYJVw",
"cachedResultName": "Imported table"
},
"options": {
"fields": [
"Instructor"
]
},
"operation": "search",
"descriptionType": "manual",
"toolDescription": "Call this tool to get a list of active professors."
},
"credentials": {
"airtableTokenApi": {
"id": "Und0frCQ6SNVX3VV",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "27aacf1e-b8a7-46d0-915e-0481d9608251",
"name": "Get List of Departments",
"type": "n8n-nodes-base.airtableTool",
"position": [
500,
-20
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appO5xvP1aUBYKyJ7",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7",
"cachedResultName": "Northvale Institute of Technology Courses 2025-2026"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblRfh0t0KNSJYJVw",
"cachedResultUrl": "https://airtable.com/appO5xvP1aUBYKyJ7/tblRfh0t0KNSJYJVw",
"cachedResultName": "Imported table"
},
"options": {
"fields": [
"Department"
]
},
"operation": "search",
"descriptionType": "manual",
"toolDescription": "Call this tool to get a list of departments."
},
"credentials": {
"airtableTokenApi": {
"id": "Und0frCQ6SNVX3VV",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "f1991f1f-9666-43d9-88ce-a2c083491a78",
"name": "模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-40,
-240
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "8gccIjcuf3gvaoEr",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "2afd9d28-a1ba-4364-a576-ed3e86c640b6",
"name": "记忆存储",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
100,
-240
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "774472f7-eb3d-4251-97e3-8e4033a0cf4f",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-940,
-1100
],
"parameters": {
"width": 420,
"height": 1320,
"content": "## Try It Out!\n### This n8n template offers a simple yet capable chatbot assistant who can answer course enquiries over SMS.\n\nGiven the right access to data, AI Agents are capable of planning and performing relatively complex research tasks to get their answers. In this example, the agent must first understand the database schema, retrieve lists of values before generating it's own query to search over the database.\n\n**Checkout the example database here - https://airtable.com/appO5xvP1aUBYKyJ7/shr8jSFDaghubDOrw**\n\n### How it works\n* A Twilio trigger gives us the ability to receive SMS input into our workflow via webhook.\n* The message is then directed to our AI agent who is instructed to assist the user and use the course database as reference. The database is an Airtable base.\n* The agent autonomously figures out which tool it needs to use and generates it's own \"filter_by_formula\" query to search over the available courses.\n* On successful search results, the Agent can then use this information to answer the user's query.\n* The Agent's output is logged in a second sheet of the Airtable base. We can use this later for analysis and lead gen.\n* Finally, the response is sent back to the user through SMS using Twilio.\n\n### How to use\n* Ensure your Twilio number is set to forward messages to this workflow's webhook URL.\n* Configure and update the course database as required. If you're not interested in courses, you can swap this out for inventory, deliveries or any other data relevant to your business.\n* Ask questions like:\n * \"Can you help me find suitable courses to fill my Wednesday mornings?\"\n * \"Which courses are being instructed by profession Lee?\"\n * \"I'm interested in creative arts. What courses are available which could be relevant to me?\"\n\n### Requirements\n* Twilio for SMS receiving and sending\n* OpenAI for LLM and Agent\n* Airtable for Course Database\n\n### Customising this workflow\n* Add additional tools and expand the range of queries the agent is able to answer or assist with.\n* Not using Airtable? This technique also works with SQL databases like PostgreSQL.\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n\nHappy Hacking!"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Model": {
"ai_languageModel": [
[
{
"node": "Course Assistant Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Memory": {
"ai_memory": [
[
{
"node": "Course Assistant Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Twilio Trigger": {
"main": [
[
{
"node": "Get User Message",
"type": "main",
"index": 0
}
]
]
},
"Get User Message": {
"main": [
[
{
"node": "Course Assistant Agent",
"type": "main",
"index": 0
}
]
]
},
"Append to Call Log": {
"main": [
[
{
"node": "Send SMS reply",
"type": "main",
"index": 0
}
]
]
},
"Course Assistant Agent": {
"main": [
[
{
"node": "Append to Call Log",
"type": "main",
"index": 0
}
]
]
},
"Get List of Professors": {
"ai_tool": [
[
{
"node": "Course Assistant Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get List of Departments": {
"ai_tool": [
[
{
"node": "Course Assistant Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Search Available Courses": {
"ai_tool": [
[
{
"node": "Course Assistant Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get Course Database Schema": {
"ai_tool": [
[
{
"node": "Course Assistant Agent",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 人工智能
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
通过Twilio和Redis缓冲消息增强客户聊天体验
使用Twilio和Redis缓冲消息功能增强客户聊天体验
If
Set
Wait
+9
18 节点Jimleuk
客户支持
使用Qdrant、Mistral.ai和OpenAI构建税法助手
使用Qdrant、Mistral.ai和OpenAI构建税法助手
Set
Wait
Filter
+18
38 节点Jimleuk
财务
构建自定义n8n工作流MCP服务器
构建自定义n8n工作流MCP服务器
If
N8n
Set
+15
46 节点Jimleuk
其他
使用 OpenAI 和 Redis 会话管理的聊天支持客户认证
使用 OpenAI 和 Redis 会话管理的聊天支持客户认证
Set
Form
Redis
+10
19 节点Jimleuk
客户支持
邮件订阅服务 - n8n表单、Airtable和AI
邮件订阅服务 - 集成n8n表单、Airtable和AI
Set
Code
Gmail
+14
32 节点Jimleuk
人工智能
使用OpenAI驱动的Outlook助手通过Slack管理日历事件
使用OpenAI驱动的Outlook助手通过Slack管理日历事件
If
Set
Slack
+7
16 节点Jimleuk
人工智能
工作流信息
难度等级
中级
节点数量12
分类1
节点类型9
作者
Jimleuk
@jimleukFreelance consultant based in the UK specialising in AI-powered automations. I work with select clients tackling their most challenging projects. For business enquiries, send me an email at hello@jimle.uk LinkedIn: https://www.linkedin.com/in/jimleuk/ X/Twitter: https://x.com/jimle_uk
外部链接
在 n8n.io 查看 →
分享此工作流