This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "My workflow",
"nodes": [
{
"parameters": {
"multipleMethods": true,
"path": "cdio2",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
-304,
-128
],
"id": "2ab00dd7-09ae-4e40-bd20-41fc4a62698c",
"name": "Webhook"
},
{
"parameters": {
"respondWith": "text",
"responseBody": "={{ $json.query['hub.challenge'] }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.3,
"position": [
-80,
-224
],
"id": "b90df58e-b801-4e63-be40-6321cefb6714",
"name": "Respond to Webhook"
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $json['nd tin nh\u1eafn'] }}",
"contextWindowLength": 10000
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
1040,
112
],
"id": "1cce4986-6967-4968-abd3-824ad891d1e2",
"name": "Simple Memory"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
944,
0
],
"id": "7bae23d2-fb3f-43b9-bbf2-7b930f76a2f6",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json['nd tin nh\u1eafn'] }}",
"options": {
"systemMessage": "=SYSTEM:\nB\u1ea1n \u0111ang \u0111\u00f3ng vai chatbot t\u01b0 v\u1ea5n tuy\u1ec3n sinh c\u1ee7a \u0110\u1ea1i h\u1ecdc Duy T\u00e2n.\nD\u1eef li\u1ec7u m\u00e0 b\u1ea1n \u0111\u01b0\u1ee3c cung c\u1ea5p \u0111\u00e3 \u0111\u01b0\u1ee3c load tr\u1ef1c ti\u1ebfp t\u1eeb GitHub repository th\u00f4ng qua n8n, file c\u00f3 t\u00ean l\u00e0 data.json.\n\nD\u1eef li\u1ec7u c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c t\u1ed5 ch\u1ee9c th\u00e0nh 2 nh\u00e1nh ch\u00ednh:\n- File data_thong_tin_chung.json: ch\u1ee9a to\u00e0n b\u1ed9 d\u1eef li\u1ec7u c\u1ee7a nh\u00e1nh Th\u00f4ng tin chung (gi\u1edbi thi\u1ec7u tr\u01b0\u1eddng, c\u01a1 c\u1ea5u t\u1ed5 ch\u1ee9c, ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e0o t\u1ea1o, m\u00f4 t\u1ea3 ng\u00e0nh).\n- File data_thong_tin_tuyen_sinh.json: ch\u1ee9a to\u00e0n b\u1ed9 d\u1eef li\u1ec7u c\u1ee7a nh\u00e1nh Tuy\u1ec3n sinh (quy ch\u1ebf tuy\u1ec3n sinh, ng\u00e0nh h\u1ecdc, \u0111i\u1ec3m chu\u1ea9n, t\u1ed5 h\u1ee3p x\u00e9t tuy\u1ec3n, h\u1ecdc ph\u00ed, h\u1ecdc b\u1ed5ng, \u01b0u ti\u00ean, c\u01a1 h\u1ed9i vi\u1ec7c l\u00e0m, t\u01b0 v\u1ea5n).\nKhi g\u1eb7p c\u00e2u h\u1ecfi li\u00ean quan \u0111\u1ebfn ch\u1ee7 \u0111\u1ec1 n\u00e0o, b\u1ea1n h\u00e3y t\u00ecm th\u00f4ng tin trong nh\u00e1nh d\u1eef li\u1ec7u t\u01b0\u01a1ng \u1ee9ng.\n\nC\u00c2Y T\u1ed4 CH\u1ee8C D\u1eee LI\u1ec6U:\n\nCHATBOT TUY\u1ec2N SINH \u0110\u1ea0I H\u1eccC DUY T\u00c2N\n\u2502\n\u251c\u2500\u2500 Th\u00f4ng tin chung (data_thong_tin_chung.json)\n\u2502 \u251c\u2500\u2500 thong_tin_dai_hoc_duy_tan \u2192 Th\u00f4ng tin t\u1ed5ng quan v\u1ec1 tr\u01b0\u1eddng: m\u00e3 tr\u01b0\u1eddng, \u0111\u1ecba ch\u1ec9, s\u1ee9 m\u1ec7nh, t\u1ea7m nh\u00ecn. \n\u2502 \u251c\u2500\u2500 truong_khoa_truc_thuoc \u2192 Danh s\u00e1ch c\u00e1c tr\u01b0\u1eddng, khoa, vi\u1ec7n tr\u1ef1c thu\u1ed9c. \n\u2502 \u251c\u2500\u2500 chuong_trinh_dao_tao_trong_va_sau_dai_hoc \u2192 Danh m\u1ee5c c\u00e1c ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e0o t\u1ea1o \u0110\u1ea1i h\u1ecdc v\u00e0 Sau \u0110\u1ea1i h\u1ecdc. \n\u2502 \u2514\u2500\u2500 mo_ta_nganh \u2192 M\u00f4 t\u1ea3 chi ti\u1ebft ( Gi\u1edbi Thi\u1ec7u, M\u1ee5c Ti\u00eau, Ch\u01b0\u01a1ng Tr\u00ecnh, C\u01a1 H\u1ed9i ) c\u00e1c ng\u00e0nh/chuy\u00ean ng\u00e0nh.\n\u2502 \n\u2502\n\u2514\u2500\u2500 Tuy\u1ec3n sinh (data_thong_tin_tuyen_sinh.json)\n \u251c\u2500\u2500 thong_tin_tuyen_sinh_DTU_2025 \u2192 Quy \u0111\u1ecbnh v\u00e0 th\u00f4ng b\u00e1o tuy\u1ec3n sinh 2025.\n \u2502 \n \u251c\u2500\u2500 Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e0o t\u1ea1o & Tuy\u1ec3n sinh\n \u2502 \u251c\u2500\u2500 Ng\u00e0nh h\u1ecdc & \u0110i\u1ec3m chu\u1ea9n\n \u2502 \u2502 \u251c\u2500\u2500 chi_tiet_nganh_dtu_2025 \u2192 Danh s\u00e1ch ng\u00e0nh/chuy\u00ean ng\u00e0nh v\u1edbi m\u00e3 ng\u00e0nh, m\u00e3 CN, t\u1ed5 h\u1ee3p x\u00e9t tuy\u1ec3n. \n \u2502 \u2502 \u251c\u2500\u2500 to_hop_xet_tuyen \u2192 Gi\u1ea3i th\u00edch t\u1ed5 h\u1ee3p m\u00f4n x\u00e9t tuy\u1ec3n. \n \u2502 \u2502 \u2514\u2500\u2500 diem_trung_tuyen_theo_cac_phuong_thuc_xet_tuyen \u2192 \u0110i\u1ec3m chu\u1ea9n cho t\u1eebng ph\u01b0\u01a1ng th\u1ee9c x\u00e9t tuy\u1ec3n. \n \u2502 \u2514\u2500\u2500 H\u1ecdc ph\u00ed & H\u1ecdc b\u1ed5ng\n \u2502 \u251c\u2500\u2500 hoc_phi_full \u2192 H\u1ecdc ph\u00ed chi ti\u1ebft theo t\u00edn ch\u1ec9, k\u1ef3, n\u0103m.\n \u2502 \u2514\u2500\u2500 chinh_sach_hoc_bong \u2192 Th\u00f4ng tin ch\u00ednh s\u00e1ch h\u1ecdc b\u1ed5ng.\n \u2502 \n \u251c\u2500\u2500 \u01afu ti\u00ean\n \u2502 \u251c\u2500\u2500 doi_tuong_uu_tien \u2192 Danh s\u00e1ch \u0111\u1ed1i t\u01b0\u1ee3ng \u01b0u ti\u00ean. \n \u2502 \u2514\u2500\u2500 danh_sach_cac_khu_vuc_tai_cac_tinh_thanh \u2192 Th\u00f4ng tin khu v\u1ef1c \u01b0u ti\u00ean. \n \u251c\u2500\u2500 \u0110\u1ec1 xu\u1ea5t ng\u00e0nh h\u1ecdc & vi\u1ec7c l\u00e0m d\u1ef1a v\u00e0o n\u0103ng l\u1ef1c ho\u1eb7c s\u1edf th\u00edch\n \u2502 \u251c\u2500\u2500 de_xuat_viec_lam_theo_nang_luc_va_so_thich \u2192 G\u1ee3i \u00fd vi\u1ec7c l\u00e0m theo n\u0103ng l\u1ef1c v\u00e0 s\u1edf th\u00edch. \n \u2502 \u251c\u2500\u2500 de_xuat_nganh_hoc_theo_nang_luc_ca_nhan \u2192 G\u1ee3i \u00fd ng\u00e0nh h\u1ecdc theo n\u0103ng l\u1ef1c c\u00e1 nh\u00e2n. \n \u2502 \u2514\u2500\u2500 map_xu_huong_theo_CN \u2192 Xu h\u01b0\u1edbng ngh\u1ec1 nghi\u1ec7p theo chuy\u00ean ng\u00e0nh. \n \u2514\u2500\u2500 chuyen_vien_tu_van \u2192 Danh s\u00e1ch chuy\u00ean vi\u00ean t\u01b0 v\u1ea5n tuy\u1ec3n sinh.\n \n\nB\u1ea1n c\u1ea7n hi\u1ec3u m\u1ed9t s\u1ed1 t\u1eeb kh\u00f3a vi\u1ebft t\u1eaft \u0111\u1ec3 gi\u1ea3i th\u00edch \u0111\u00fang m\u00e3 ng\u00e0nh v\u00e0 ch\u01b0\u01a1ng tr\u00ecnh:\nCMU: Carnegie Mellon University\nPSU: Pennsylvania State University\nCSU: California State University\nPNU: Purdue Northwest University\nHP: Ch\u01b0\u01a1ng tr\u00ecnh T\u00e0i n\u0103ng\nVJJ: Ch\u01b0\u01a1ng tr\u00ecnh Vi\u1ec7t Nh\u1eadt\nTROY: Ch\u01b0\u01a1ng tr\u00ecnh Du h\u1ecdc t\u1ea1i ch\u1ed7 l\u1ea5y b\u1eb1ng \u0110\u1ea1i h\u1ecdc Troy (M\u1ef9)\n\nH\u01af\u1edaNG D\u1eaaN TR\u1ea2 L\u1edcI:\n- Ch\u1ec9 tr\u1ea3 l\u1eddi nh\u1eefng c\u00e2u h\u1ecfi c\u00f3 li\u00ean quan \u0111\u1ebfn th\u00f4ng tin v\u1ec1 \u0111\u1ea1i h\u1ecdc Duy T\u00e2n . \n- N\u1ebfu ng\u01b0\u1eddi d\u00f9ng h\u1ecfi v\u1ec1 c\u00e1c th\u00f4ng tin li\u00ean quan \u0111\u1ebfn tr\u01b0\u1eddng (l\u1ecbch s\u1eed th\u00e0nh l\u1eadp, hi\u1ec7u tr\u01b0\u1edfng, ch\u1ee7 t\u1ecbch, c\u00e1n b\u1ed9, ch\u1ec9 ti\u00eau tuy\u1ec3n sinh, c\u01a1 c\u1ea5u t\u1ed5 ch\u1ee9c), h\u00e3y ph\u00e2n lo\u1ea1i c\u00e2u h\u1ecfi n\u00e0y v\u00e0o nh\u00f3m \"thong_tin_truong\".\n- N\u1ebfu ng\u01b0\u1eddi d\u00f9ng h\u1ecfi v\u1ec1 t\u1ed5ng s\u1ed1 nh\u00f3m ng\u00e0nh ho\u1eb7c c\u00e1c nh\u00f3m ng\u00e0nh \u0111\u00e0o t\u1ea1o th\u00ec ch\u1ec9 tr\u1ea3 l\u1eddi c\u00f3 bao nhi\u00eau nh\u00f3m ng\u00e0nh, sau \u0111\u00f3 li\u1ec7t k\u00ea t\u00ean c\u00e1c nh\u00f3m ng\u00e0nh l\u1edbn.\n- Ch\u1ec9 khi n\u00e0o ng\u01b0\u1eddi d\u00f9ng y\u00eau c\u1ea7u li\u1ec7t k\u00ea chi ti\u1ebft ng\u00e0nh trong m\u1ed9t nh\u00f3m ng\u00e0nh th\u00ec m\u1edbi \u0111\u01b0a ra danh s\u00e1ch c\u1ee5 th\u1ec3.\n- N\u1ebfu ng\u01b0\u1eddi d\u00f9ng h\u1ecfi d\u1ea1ng yes/no (c\u00f3 hay kh\u00f4ng) th\u00ec tr\u1ea3 l\u1eddi \"c\u00f3\" ho\u1eb7c \"kh\u00f4ng\", sau \u0111\u00f3 h\u1ecfi th\u00eam \"B\u1ea1n c\u00f3 mu\u1ed1n m\u00ecnh t\u01b0 v\u1ea5n chi ti\u1ebft h\u01a1n kh\u00f4ng?\".\n- Khi c\u1ea7n gi\u1ea3i th\u00edch th\u00f4ng tin v\u1ec1 m\u00e3 ng\u00e0nh hay ch\u01b0\u01a1ng tr\u00ecnh, ch\u1ec9 s\u1eed d\u1ee5ng v\u0103n b\u1ea3n thu\u1ea7n (plain text).\n- H\u00e3y truy c\u1eadp GitHub tool \u0111\u1ec3 l\u1ea5y th\u00f4ng tin t\u1eeb data_thong_tin_chung.json ho\u1eb7c data_thong_tin_tuyen_sinh.json khi c\u1ea7n thi\u1ebft \u0111\u1ec3 tr\u1ea3 l\u1eddi c\u00e2u h\u1ecfi.\n- N\u1ebfu c\u00f3 c\u00e2u h\u1ecfi v\u1ec1 xu h\u01b0\u1edbng vi\u1ec7c l\u00e0m, h\u00e3y t\u00ecm d\u1eef li\u1ec7u \u1edf nh\u00e1nh Tuy\u1ec3n sinh, ph\u1ea7n vi\u1ec7c \u0110\u1ec1 xu\u1ea5t ng\u00e0nh h\u1ecdc & vi\u1ec7c l\u00e0m d\u1ef1a v\u00e0o n\u0103ng l\u1ef1c ho\u1eb7c s\u1edf th\u00edch \u1edf file xu h\u01b0\u1edbng vi\u1ec7c l\u00e0m, tr\u1ea3 l\u1eddi c\u00e1c ng\u00e0nh \u0111ang hot v\u00e0 l\u00fd do v\u00ec sao. N\u1ebfu ng\u01b0\u1eddi d\u00f9ng c\u1ea7n th\u00eam s\u1ed1 li\u1ec7u v\u1ec1 t\u0103ng tr\u01b0\u1edfng tuy\u1ec3n d\u1ee5ng, m\u1ee9c l\u01b0\u01a1ng, h\u00e3y b\u1ed5 sung th\u00f4ng tin c\u00f3 ngu\u1ed3n. Sau \u0111\u00f3 khuy\u1ebfn kh\u00edch ng\u01b0\u1eddi d\u00f9ng: \"B\u1ea1n c\u00f3 mu\u1ed1n m\u00ecnh cung c\u1ea5p th\u00eam v\u1ec1 c\u00e1c ng\u00e0nh h\u1ecdc m\u00e0 DTU \u0111ang \u0111\u00e0o t\u1ea1o kh\u00f4ng n\u00e8?\".\n- N\u1ebfu ng\u01b0\u1eddi d\u00f9ng h\u1ecfi c\u00e1c c\u00e2u h\u1ecfi so s\u00e1nh gi\u1eefa c\u00e1c ng\u00e0nh, b\u1ea1n h\u00e3y t\u00ecm trong ph\u1ea7n data_thong_tin_chung \u1edf m\u1ee5c mo_ta_nganh s\u1ebd t\u00ecm th\u1ea5y chi ti\u1ebft th\u00f4ng tin v\u1ec1 ng\u00e0nh h\u1ecdc, m\u00f4 t\u1ea3 ng\u00e0nh h\u1ecdc v\u00e0 ch\u01b0\u01a1ng tr\u00ecnh h\u1ecdc\n- N\u1ebfu t\u00ecm h\u1ebft th\u00f4ng tin m\u00e0 kh\u00f4ng th\u1ea5y d\u1eef li\u1ec7u c\u00f3 trong data th\u00ec h\u00e3y n\u00f3i r\u1eb1ng th\u00f4ng tin n\u00e0y hi\u1ec7n t\u1ea1i ch\u01b0a \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadp, v\u00e0 b\u1ea1n s\u1ebd g\u1ee3i \u00fd m\u1ed9t s\u1ed1 th\u00e0nh vi\u00ean trong danh s\u00e1ch chuy\u00ean vi\u00ean t\u01b0 v\u1ea5n, h\u1ecd l\u00e0 nh\u1eefng ng\u01b0\u1eddi gi\u1ea3i quy\u1ebft nh\u1eefng v\u1ea5n \u0111\u1ec1 m\u00e0 b\u1ea1n kh\u00f4ng th\u1ec3 tr\u1ea3 l\u1eddi \u0111\u01b0\u1ee3c cho ng\u01b0\u1eddi d\u00f9ng.\n\nQUY \u0110\u1ecaNH \u0110\u1ecaNH D\u1ea0NG:\n- KH\u00d4NG s\u1eed d\u1ee5ng \u0111\u1ecbnh d\u1ea1ng Markdown (*, -, +, #, _).\n- KH\u00d4NG t\u1ea1o bullet list v\u1edbi k\u00fd hi\u1ec7u.\n- Khi li\u1ec7t k\u00ea nhi\u1ec1u items, s\u1eed d\u1ee5ng format t\u1ef1 nhi\u00ean nh\u01b0:\n \"Khoa Khoa h\u1ecdc M\u00e1y t\u00ednh c\u00f3 c\u00e1c ng\u00e0nh: K\u1ef9 thu\u1eadt ph\u1ea7n m\u1ec1m, Tr\u00ed tu\u1ec7 nh\u00e2n t\u1ea1o, Big Data v\u00e0 Khoa h\u1ecdc d\u1eef li\u1ec7u, Khoa h\u1ecdc m\u00e1y t\u00ednh, An to\u00e0n th\u00f4ng tin, M\u1ea1ng m\u00e1y t\u00ednh v\u00e0 Truy\u1ec1n th\u00f4ng d\u1eef li\u1ec7u.\"\n- Ho\u1eb7c n\u1ebfu c\u1ea7n xu\u1ed1ng d\u00f2ng \u0111\u1ec3 d\u1ec5 \u0111\u1ecdc:\n \"Khoa Khoa h\u1ecdc M\u00e1y t\u00ednh c\u00f3 c\u00e1c ng\u00e0nh:\n K\u1ef9 thu\u1eadt ph\u1ea7n m\u1ec1m\n Tr\u00ed tu\u1ec7 nh\u00e2n t\u1ea1o\n Big Data v\u00e0 Khoa h\u1ecdc d\u1eef li\u1ec7u\n Khoa h\u1ecdc m\u00e1y t\u00ednh\n An to\u00e0n th\u00f4ng tin\n M\u1ea1ng m\u00e1y t\u00ednh v\u00e0 Truy\u1ec1n th\u00f4ng d\u1eef li\u1ec7u\"\n- Tr\u1ea3 l\u1eddi ng\u1eafn g\u1ecdn, \u0111\u00fang tr\u1ecdng t\u00e2m, d\u1ec5 \u0111\u1ecdc v\u00e0 th\u00e2n thi\u1ec7n.\n\nUSER PROMPT:\n{{ $json[\"nd tin nh\u1eafn\"] }}"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.1,
"position": [
1040,
-144
],
"id": "fa90c6cf-c811-41d1-ada8-cbccaa07ed82",
"name": "AI Agent"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "d58c9aa0-8132-47f3-bc4a-c10456df8f5c",
"name": "id kh\u00e1ch",
"value": "={{ $json.body.entry[0].messaging[0].sender.id }}",
"type": "string"
},
{
"id": "aa190287-c7bd-43cc-93c6-58c70c3eed53",
"name": "nd tin nh\u1eafn",
"value": "={{ $json.body.entry[0].messaging[0].message.text }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-80,
-32
],
"id": "a2a0a2f5-610c-4ccc-b2be-86c9a867ee25",
"name": "Edit Fields"
},
{
"parameters": {
"sortFieldsUi": {
"sortField": [
{
"fieldName": "order"
}
]
},
"options": {
"disableDotNotation": false
}
},
"type": "n8n-nodes-base.sort",
"typeVersion": 1,
"position": [
1824,
-304
],
"id": "3ff45dbf-e57e-4cd3-bf51-f5c60c92d116",
"name": "Sort"
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json['nd tin nh\u1eafn'] }}",
"options": {
"systemMessage": "=SYSTEM:\nB\u1ea1n l\u00e0 m\u1ed9t tr\u1ee3 l\u00fd AI c\u1ee7a \u0110\u1ea1i h\u1ecdc Duy T\u00e2n trong c\u00f4ng t\u00e1c h\u1ed7 tr\u1ee3 tuy\u1ec3n sinh \u0111\u1ea1i h\u1ecdc.\nB\u1ea1n c\u00f3 nhi\u1ec7m v\u1ee5 ki\u1ec3m tra d\u1eef li\u1ec7u trong file QA.json (\u0111\u01b0\u1ee3c load t\u1eeb GitHub th\u00f4ng qua GitHub tool).\n\nQUAN TR\u1eccNG: B\u1ea1n PH\u1ea2I s\u1eed d\u1ee5ng GitHub tool \u0111\u1ec3 l\u1ea5y d\u1eef li\u1ec7u QA.json tr\u01b0\u1edbc khi tr\u1ea3 l\u1eddi.\n\nT\u1eea KH\u00d3A VI\u1ebeT T\u1eaeT QUAN TR\u1eccNG:\nCMU: Carnegie Mellon University\nPSU: Pennsylvania State University \nCSU: California State University\nPNU: Purdue Northwest University\nHP: Ch\u01b0\u01a1ng tr\u00ecnh T\u00e0i n\u0103ng\nVJJ: Ch\u01b0\u01a1ng tr\u00ecnh Vi\u1ec7t Nh\u1eadt\nTROY: Ch\u01b0\u01a1ng tr\u00ecnh Du h\u1ecdc t\u1ea1i ch\u1ed7 l\u1ea5y b\u1eb1ng \u0110\u1ea1i h\u1ecdc Troy (M\u1ef9)\n\nL\u01afU \u00dd V\u1ec0 T\u00caN NG\u00c0NH T\u01af\u01a0NG T\u1ef0:\n- \"C\u00f4ng ngh\u1ec7 th\u00f4ng tin\" \u2260 \"C\u00f4ng ngh\u1ec7 ph\u1ea7n m\u1ec1m (chu\u1ea9n CMU)\" \u2260 \"C\u00f4ng ngh\u1ec7 th\u00f4ng tin (TROY)\"\n- C\u00e1c ng\u00e0nh c\u00f9ng t\u00ean nh\u01b0ng kh\u00e1c ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e0o t\u1ea1o l\u00e0 HO\u00c0N TO\u00c0N KH\u00c1C NHAU\n- Ph\u1ea3i ch\u00fa \u00fd \u0111\u1ebfn t\u1eeb kh\u00f3a ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e0o t\u1ea1o (CMU, PSU, CSU, PNU, HP, VJJ, TROY)\n- Khi ng\u01b0\u1eddi d\u00f9ng h\u1ecfi v\u1ec1 m\u1ed9t ng\u00e0nh, c\u1ea7n ph\u00e2n bi\u1ec7t r\u00f5 h\u1ecd mu\u1ed1n bi\u1ebft v\u1ec1 ch\u01b0\u01a1ng tr\u00ecnh n\u00e0o\n\nQUY \u0110\u1ecaNH MATCHING CH\u00cdNH X\u00c1C:\n- \"tr\u01b0\u1eddng khoa h\u1ecdc m\u00e1y t\u00ednh\" \u2260 \"ng\u00e0nh khoa h\u1ecdc m\u00e1y t\u00ednh\" \u2260 \"khoa khoa h\u1ecdc m\u00e1y t\u00ednh\"\n- \"tr\u01b0\u1eddng\" = School/Faculty level (t\u1ed5 ch\u1ee9c l\u1edbn)\n- \"ng\u00e0nh\" = Major/Department level (ch\u01b0\u01a1ng tr\u00ecnh h\u1ecdc c\u1ee5 th\u1ec3) \n- \"khoa\" = Department/Faculty level\n- \"chuy\u00ean ng\u00e0nh\" = Specialization level (chuy\u00ean m\u00f4n h\u00f3a trong ng\u00e0nh)\n\nC\u00c1C T\u1eea KH\u00d3A QUAN TR\u1eccNG PH\u1ea2I PH\u00c2N BI\u1ec6T:\n- \"tr\u01b0\u1eddng c\u00f3 nh\u1eefng ng\u00e0nh n\u00e0o\" \u2192 v\u1ec1 c\u1ea5u tr\u00fac t\u1ed5 ch\u1ee9c\n- \"ng\u00e0nh c\u00f3 nh\u1eefng chuy\u00ean ng\u00e0nh n\u00e0o\" \u2192 v\u1ec1 chuy\u00ean m\u00f4n h\u00f3a\n- \"khoa c\u00f3 nh\u1eefng ng\u00e0nh n\u00e0o\" \u2192 v\u1ec1 \u0111\u00e0o t\u1ea1o c\u1ee7a khoa\n- \"\u0111i\u1ec3m chu\u1ea9n ng\u00e0nh X\" \u2260 \"h\u1ecdc ph\u00ed ng\u00e0nh X\" \u2260 \"ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e0o t\u1ea1o ng\u00e0nh X\"\n\nLOGIC MATCHING:\n1. \u0110\u1ecdc TO\u00c0N B\u1ed8 c\u00e2u h\u1ecfi, kh\u00f4ng ch\u1ec9 t\u1eeb kh\u00f3a ch\u00ednh\n2. X\u00e1c \u0111\u1ecbnh CH\u00cdNH X\u00c1C \u00fd \u0111\u1ecbnh c\u00e2u h\u1ecfi\n3. Ki\u1ec3m tra c\u00f3 t\u1eeb kh\u00f3a ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e0o t\u1ea1o (CMU, PSU, CSU, PNU, HP, VJJ, TROY) kh\u00f4ng\n4. N\u1ebfu kh\u00f4ng c\u00f3 t\u1eeb kh\u00f3a ch\u01b0\u01a1ng tr\u00ecnh c\u1ee5 th\u1ec3:\n - T\u00ecm t\u1ea5t c\u1ea3 c\u00e1c ch\u01b0\u01a1ng tr\u00ecnh c\u00f3 t\u00ean t\u01b0\u01a1ng t\u1ef1\n - N\u1ebfu c\u00f3 nhi\u1ec1u ch\u01b0\u01a1ng tr\u00ecnh \u2192 \"N\u1ed9i dung ch\u01b0a c\u00f3\" (\u0111\u1ec3 AI Agent ch\u00ednh x\u1eed l\u00fd)\n - N\u1ebfu ch\u1ec9 c\u00f3 1 ch\u01b0\u01a1ng tr\u00ecnh \u2192 match ch\u00ednh x\u00e1c\n5. So s\u00e1nh v\u1edbi \"question\" field trong QA.json\n6. CH\u1ec8 match khi \u00fd ngh\u0129a HO\u00c0N TO\u00c0N kh\u1edbp (bao g\u1ed3m c\u1ea3 ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e0o t\u1ea1o)\n7. N\u1ebfu c\u00f3 nghi ng\u1edd \u2192 tr\u1ea3 v\u1ec1 \"N\u1ed9i dung ch\u01b0a c\u00f3\"\n\nV\u00cd D\u1ee4 MATCHING:\n- \"ng\u00e0nh c\u00f4ng ngh\u1ec7 th\u00f4ng tin\" (kh\u00f4ng r\u00f5 ch\u01b0\u01a1ng tr\u00ecnh) \u2192 \"N\u1ed9i dung ch\u01b0a c\u00f3\"\n- \"ng\u00e0nh c\u00f4ng ngh\u1ec7 th\u00f4ng tin CMU\" \u2192 match v\u1edbi record c\u00f3 CMU\n- \"ng\u00e0nh c\u00f4ng ngh\u1ec7 th\u00f4ng tin TROY\" \u2192 match v\u1edbi record c\u00f3 TROY\n- \"ng\u00e0nh c\u00f4ng ngh\u1ec7 ph\u1ea7n m\u1ec1m\" \u2192 match ch\u00ednh x\u00e1c (v\u00ec ch\u1ec9 c\u00f3 1 lo\u1ea1i)\n\nQUY \u0110\u1ecaNH TR\u1ea2 L\u1edcI:\n- N\u1ebfu t\u00ecm th\u1ea5y c\u00e2u h\u1ecfi CH\u00cdNH X\u00c1C t\u01b0\u01a1ng t\u1ef1 trong QA.json:\n - Tr\u1ea3 v\u1ec1 answer + timestamp ( tuy\u1ec7t \u0111\u1ed1i kh\u00f4ng b\u1ecba tr\u01b0\u1eddng th\u1eddi gian, ph\u1ea3i l\u1ea5y ch\u00ednh x\u00e1c)\n- N\u1ebfu KH\u00d4NG ch\u1eafc ch\u1eafn ho\u1eb7c ch\u1ec9 t\u01b0\u01a1ng t\u1ef1 m\u1ed9t ph\u1ea7n:\n - Tr\u1ea3 v\u1ec1 \"N\u1ed9i dung ch\u01b0a c\u00f3\"\n- TUY\u1ec6T \u0110\u1ed0I kh\u00f4ng t\u1ef1 b\u1ecba ho\u1eb7c combine nhi\u1ec1u c\u00e2u tr\u1ea3 l\u1eddi\n\nC\u00c1CH X\u1eec L\u00dd:\n1. S\u1eed d\u1ee5ng GitHub tool \u0111\u1ec3 l\u1ea5y QA.json\n2. Ph\u00e2n t\u00edch CH\u00cdNH X\u00c1C \u00fd ngh\u0129a c\u00e2u h\u1ecfi ng\u01b0\u1eddi d\u00f9ng\n3. T\u00ecm match CH\u00cdNH X\u00c1C trong QA.json\n4. N\u1ebfu kh\u00f4ng ch\u1eafc \u2192 \"N\u1ed9i dung ch\u01b0a c\u00f3\"\n\nUSER PROMPT:\n{{ $json[\"nd tin nh\u1eafn\"] }}"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.2,
"position": [
128,
-32
],
"id": "fc190c31-5660-445b-b235-975a824f9c07",
"name": "AI Agent1"
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $json['nd tin nh\u1eafn'] }}",
"contextWindowLength": 10000
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
192,
128
],
"id": "b6d9c647-51d1-4477-9add-4c8614cc5849",
"name": "Simple Memory1"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
32,
128
],
"id": "fb94bef2-43ec-404e-b8fa-25208b8719e8",
"name": "Google Gemini Chat Model1",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "f4ada44d-cc4b-4733-af12-fb308ca3ff8f",
"leftValue": "={{ $json.check_result }}",
"rightValue": "N\u1ed9i dung ch\u01b0a c\u00f3",
"operator": {
"type": "string",
"operation": "notContains"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
624,
-32
],
"id": "89ab4377-b3c8-4494-9523-3d4fadf9f584",
"name": "If"
},
{
"parameters": {
"method": "POST",
"url": "=https://graph.facebook.com/v23.0/{{ $('Webhook').item.json.body.entry[0].messaging[0].recipient.id }}/messages?access_token=EAAKiLjdsBY0BPoR9ZBOHtyxdEjza3ZAwZCM6CLlojUSkBOpALWnI32ciGKIyTqQ5Pj0CkjbZCMM9STgHZALNjrGyAVVAq1ugUAEJnbAwVBhj5wl5bTSp7jQL3XJhHlZB9LJzksCZBOvt8AGBD4X4xggAQfZAYGJIuAuFYkwvWLb4AOdm4slFLfOZAoNRooasjQVe2FQ4KsgZDZD",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{$json}}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
2000,
-304
],
"id": "fd06e4a5-8a9d-40ee-8feb-4de9ccf21f4f",
"name": "HTTP Request"
},
{
"parameters": {
"jsCode": "const inputData = $input.first().json;\nconst recipientId = $('Edit Fields').first().json['id kh\u00e1ch'];\nconst items = [];\nlet orderIndex = 0;\n\nlet fullText = '';\n\n// \u01afu ti\u00ean l\u1ea5y t\u1eeb 'output' n\u1ebfu t\u1ed3n t\u1ea1i v\u00e0 l\u00e0 string (tr\u01b0\u1eddng h\u1ee3p cache hit)\nif (typeof inputData.output === 'string' && inputData.output.length > 0) {\n fullText = inputData.output;\n}\n// N\u1ebfu kh\u00f4ng c\u00f3 'output' ho\u1eb7c 'output' r\u1ed7ng, th\u1eed l\u1ea5y t\u1eeb 'check_result' (tr\u01b0\u1eddng h\u1ee3p cache miss ho\u1eb7c AI Agent ch\u00ednh)\nelse if (typeof inputData.check_result === 'string' && inputData.check_result.length > 0) {\n fullText = inputData.check_result;\n}\n// N\u1ebfu c\u1ea3 hai \u0111\u1ec1u kh\u00f4ng c\u00f3, ho\u1eb7c kh\u00f4ng ph\u1ea3i string h\u1ee3p l\u1ec7, fullText v\u1eabn l\u00e0 ''\n\n// Ch\u1ec9 th\u1ef1c hi\u1ec7n chia chu\u1ed7i n\u1ebfu fullText c\u00f3 n\u1ed9i dung\nif (fullText.length > 0) {\n for (let i = 0; i < fullText.length; i += 1890) {\n items.push({\n json: {\n order: orderIndex,\n recipient: { id: recipientId },\n messaging_type: \"RESPONSE\",\n message: { text: fullText.slice(i, i + 1890) }\n }\n });\n orderIndex++;\n }\n} else {\n // Tr\u01b0\u1eddng h\u1ee3p kh\u00f4ng c\u00f3 n\u1ed9i dung h\u1ee3p l\u1ec7 t\u1eeb c\u1ea3 hai ngu\u1ed3n\n items.push({\n json: {\n order: 0,\n recipient: { id: recipientId },\n messaging_type: \"RESPONSE\",\n message: { text: \"Xin l\u1ed7i, t\u00f4i kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y th\u00f4ng tin b\u1ea1n y\u00eau c\u1ea7u l\u00fac n\u00e0y.\" }\n }\n });\n}\n\nreturn items;"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1648,
-304
],
"id": "effc5f3b-e1ae-410e-9888-fa3792955b79",
"name": "Code",
"executeOnce": false
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "fdd4d80e-e644-4a26-841d-1c9ad0740b9a",
"name": "check_result",
"value": "={{ $json.output }}",
"type": "string"
},
{
"id": "abc123-def4-5678-9abc-def123456789",
"name": "nd tin nh\u1eafn",
"value": "={{ $('Edit Fields').first().json['nd tin nh\u1eafn'] }}",
"type": "string"
},
{
"id": "xyz789-abc1-2345-6789-abc123456def",
"name": "id kh\u00e1ch",
"value": "={{ $('Edit Fields').first().json['id kh\u00e1ch'] }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
448,
-32
],
"id": "95f165cd-07b6-45a3-8bd5-b0592dd2f565",
"name": "Combine Data"
},
{
"parameters": {
"jsCode": "const agent = $('AI Agent').first().json || {};\nconst edit = $('Edit Fields').first().json || {};\nconst ghOut = $('Get file QA1').first().json || {};\n\nconst answer = agent.output || agent.answer || agent.text || '';\nconst question = edit['nd tin nh\u1eafn'] || 'C\u00e2u h\u1ecfi kh\u00f4ng x\u00e1c \u0111\u1ecbnh';\nconst userId = edit['id kh\u00e1ch'] || '';\n\n// TH\u00caM CHECK N\u00c0Y \u0111\u1ec3 kh\u00f4ng l\u01b0u c\u00e2u tr\u1ea3 l\u1eddi \"N\u1ed9i dung ch\u01b0a c\u00f3\"\nif (answer === \"N\u1ed9i dung ch\u01b0a c\u00f3\" || answer.includes(\"Kh\u00f4ng t\u00ecm th\u1ea5y\") || answer.includes(\"kh\u00f4ng t\u00ecm th\u1ea5y\")) {\n return [{ json: { skip: true, message: \"B\u1ecf qua l\u01b0u c\u00e2u tr\u1ea3 l\u1eddi kh\u00f4ng c\u00f3 n\u1ed9i dung\" } }];\n}\n\nlet raw =\n ghOut.data ||\n ghOut.fileContent ||\n (ghOut.content ? Buffer.from(ghOut.content, 'base64').toString('utf-8') : '[]');\n\nif (!raw || !raw.trim()) raw = '[]';\n\nlet arr;\ntry { arr = JSON.parse(raw); if (!Array.isArray(arr)) arr = []; }\ncatch { arr = []; }\n\narr.push({ user_id: userId, question, answer, timestamp: new Date().toISOString() });\n\nreturn [{ json: { fileContent: JSON.stringify(arr, null, 2) } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1792,
-32
],
"id": "76261569-4cad-4c34-a866-d2fabf134a8f",
"name": "Code content"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
1632,
-32
],
"id": "133923de-586e-4c93-8bc3-43c4a26eccef",
"name": "Merge2"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "25a00f54-15c5-42da-8905-9a485201bd1d",
"leftValue": "={{ $json.skip }}",
"rightValue": true,
"operator": {
"type": "boolean",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1952,
-32
],
"id": "8e6e8d68-6684-4f2c-b2ea-23c486f1b5d6",
"name": "If1"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
1472,
-304
],
"id": "8e2cf8f8-e556-4249-b67c-080287568723",
"name": "Merge"
},
{
"parameters": {
"resource": "file",
"operation": "get",
"owner": {
"__rl": true,
"value": "nguyendangthinhit",
"mode": "name"
},
"repository": {
"__rl": true,
"value": "CDIO_2",
"mode": "name"
},
"filePath": "data_thong_tin_chung.json",
"asBinaryProperty": false,
"additionalParameters": {}
},
"type": "n8n-nodes-base.githubTool",
"typeVersion": 1.1,
"position": [
1152,
16
],
"id": "01cee551-7ab8-4ba5-9f03-8efe2d6da961",
"name": "Get a file in thong tin chung",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "file",
"operation": "get",
"owner": {
"__rl": true,
"value": "nguyendangthinhit",
"mode": "name"
},
"repository": {
"__rl": true,
"value": "CDIO_2",
"mode": "name"
},
"filePath": "data_thong_tin_tuyen_sinh.json",
"asBinaryProperty": false,
"additionalParameters": {}
},
"type": "n8n-nodes-base.githubTool",
"typeVersion": 1.1,
"position": [
1264,
96
],
"id": "183c402e-a55f-4942-bd2a-17f32a23da1f",
"name": "Get a file in thong tin tuyen sinh",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "file",
"operation": "edit",
"owner": {
"__rl": true,
"value": "nguyendangthinhit",
"mode": "name"
},
"repository": {
"__rl": true,
"value": "CDIO_2",
"mode": "name"
},
"filePath": "QA.json",
"fileContent": "={{ $json.fileContent }}",
"commitMessage": "commit t\u1eeb n8n"
},
"type": "n8n-nodes-base.github",
"typeVersion": 1.1,
"position": [
2144,
-16
],
"id": "fb841d53-06eb-4545-b925-644fce58f815",
"name": "Edit QA",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "file",
"operation": "get",
"owner": {
"__rl": true,
"value": "nguyendangthinhit",
"mode": "name"
},
"repository": {
"__rl": true,
"value": "CDIO_2",
"mode": "name"
},
"filePath": "QA.json",
"asBinaryProperty": false,
"additionalParameters": {}
},
"type": "n8n-nodes-base.githubTool",
"typeVersion": 1.1,
"position": [
336,
128
],
"id": "3f030399-68bd-4bd4-8cc7-c054b3025e8d",
"name": "Get file QA",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "file",
"operation": "get",
"owner": {
"__rl": true,
"value": "nguyendangthinhit",
"mode": "name"
},
"repository": {
"__rl": true,
"value": "CDIO_2",
"mode": "name"
},
"filePath": "QA.json",
"asBinaryProperty": false,
"additionalParameters": {}
},
"type": "n8n-nodes-base.github",
"typeVersion": 1.1,
"position": [
1104,
272
],
"id": "094dd7e1-8d9e-48a3-ac20-56cba465b405",
"name": "Get file QA1",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Merge2",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "AI Agent1",
"type": "main",
"index": 0
}
]
]
},
"Sort": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory1": {
"ai_memory": [
[
{
"node": "AI Agent1",
"type": "ai_memory",
"index": 0
}
]
]
},
"Google Gemini Chat Model1": {
"ai_languageModel": [
[
{
"node": "AI Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent1": {
"main": [
[
{
"node": "Combine Data",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
],
[
{
"node": "AI Agent",
"type": "main",
"index": 0
},
{
"node": "Get file QA1",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Sort",
"type": "main",
"index": 0
}
]
]
},
"Combine Data": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Code content": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"Merge2": {
"main": [
[
{
"node": "Code content",
"type": "main",
"index": 0
}
]
]
},
"If1": {
"main": [
[],
[
{
"node": "Edit QA",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Get a file in thong tin chung": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get a file in thong tin tuyen sinh": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get file QA": {
"ai_tool": [
[
{
"node": "AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get file QA1": {
"main": [
[
{
"node": "Merge2",
"type": "main",
"index": 1
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "edc8956d-06f1-40b5-9aa3-605ded803094",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "Qol5IGzAyMzNHJCK",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
githubApigooglePalmApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
N8N 30 9. Uses memoryBufferWindow, lmChatGoogleGemini, agent, httpRequest. Webhook trigger; 23 nodes.
Source: https://github.com/nguyendangthinhit/CDIO_2/blob/c0f9695e8942fc2ad548d0350b96917a650e482b/n8n/n8n_30_9.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
N8N 23 9. Uses memoryBufferWindow, lmChatGoogleGemini, githubTool, agent. Webhook trigger; 32 nodes.
N8N 9 9. Uses agent, memoryBufferWindow, githubTool, lmChatGoogleGemini. Webhook trigger; 10 nodes.
N8N. Uses lmChatGoogleGemini, httpRequest, agent, memoryBufferWindow. Webhook trigger; 10 nodes.
N8N-Chat. Uses jwt, agent, memoryBufferWindow, lmChatGoogleGemini. Webhook trigger; 66 nodes.
by Varritech Technologies