MCP & n8n: Hướng dẫn xây dựng ứng dụng AI mạnh mẽ (Model Context Protocol)

Xây dựng mọi thứ với MCP trong n8n: Hướng dẫn chi tiết

n8n vừa bổ sung hỗ trợ gốc cho Model Context Protocol (MCP), và điều này thật tuyệt vời! Có lẽ bạn đã xem rất nhiều video về MCP trên n8n rồi, nhưng những video này đều sử dụng một thành phần cộng đồng thay vì tích hợp chính thức do n8n cung cấp. Trước đây, tôi đã không đề cập đến node cộng đồng vì nó rất khó thiết lập và đòi hỏi phần cứng cực kỳ mạnh. Trên thực tế, phiên bản n8n tự lưu trữ của tôi liên tục bị treo do yêu cầu quá cao từ node cộng đồng này. Vì vậy, tôi không cố ý chỉ trích nhà phát triển của node đó, nhưng thật không may, tôi không thể làm cho nó hoạt động một cách đáng tin cậy. Nhưng rất may, bây giờ chúng ta đã có hỗ trợ gốc với n8n.

Tin tốt là chúng ta có thể xây dựng máy chủ MCP trực tiếp với n8n, và tất nhiên, chúng ta cũng có thể sử dụng n8n làm máy khách MCP. Trong bài viết này, tôi sẽ trình bày cả hai cách tiếp cận và thảo luận về một số hạn chế nhất định với tích hợp gốc ở thời điểm hiện tại.

Đối với tôi, tính năng thú vị nhất là khả năng tạo máy chủ MCP. Ví dụ, tôi có một thiết lập máy chủ MCP rất đơn giản, kết nối với một quy trình làm việc hiện có, có thể gửi email và đọc email, đồng thời có thể quản lý các mục trong danh sách việc cần làm của tôi.

Sau khi bạn đã thiết lập máy chủ MCP, bạn có thể tích hợp nó vào một số ứng dụng dựa trên AI hỗ trợ MCP, như Claude Desktop hoặc các trình chỉnh sửa code như Cursor. Bây giờ bạn sẽ thấy trong Claude Desktop rằng chúng ta có thể thấy sáu công cụ khả dụng. Đây là những công cụ mà tôi đã đính kèm vào máy chủ MCP của mình trong n8n, như thêm việc cần làm, tạo nội dung, tạo email, liệt kê việc cần làm, đọc email và cập nhật việc cần làm. Mỗi công cụ được liệt kê trong quy trình làm việc này. Điều này có nghĩa là Claude có quyền truy cập vào bất kỳ công cụ nào trong số đó.

Ví dụ, tôi có thể hỏi, “Những việc cần làm hiện tại của tôi là gì?” Claude sẽ nhận ra rằng chúng ta có quyền truy cập vào các công cụ này và chỉ đơn giản là xin phép tôi chạy “liệt kê việc cần làm” từ n8n. Hãy phê duyệt yêu cầu này, và bây giờ nó sẽ liệt kê tất cả các việc cần làm của tôi.

Những việc cần làm này đến từ công cụ này, được liên kết với một bảng Airtable. “Mua bánh mì” được đánh dấu là đã hoàn thành, và chúng ta có “gọi cho mẹ” và “mua thức ăn cho chó”, vẫn chưa hoàn thành. Hãy cập nhật danh sách việc cần làm của chúng ta. Hãy thêm một việc cần làm khác có tên là “rửa xe”, và đánh dấu “gọi cho mẹ” là đã hoàn thành.

Agent đang gọi công cụ “thêm việc cần làm” của chúng ta, mà chúng ta có thể phê duyệt. Và bây giờ nó đang cố gắng cập nhật việc cần làm hiện có. Hãy phê duyệt điều này. Và bây giờ Claude đang nói “Xong”. Nếu chúng ta chuyển sang bảng của mình và làm mới nó, chúng ta có thể thấy “gọi cho mẹ” đã thực sự được hoàn thành và “rửa xe” đã được thêm vào danh sách việc cần làm.

Trong quy trình làm việc của chúng ta, chúng ta cũng có quyền truy cập vào email. Vì vậy, những gì chúng ta có thể làm trong Claude là nói, “gửi email danh sách việc cần làm đến taste@taste.com”. Đầu tiên, hãy lấy danh sách việc cần làm. Claude đang hỏi chúng ta liệu nó có được phép gửi email hay không. Hãy cho phép nó làm điều đó. Và nó nói rằng nó đã tạo một bản nháp email. Chuyển sang email và vào thư mục bản nháp email của tôi, tôi có thể thấy bản nháp này chứa danh sách việc cần làm của tôi. Tất nhiên, tôi cũng có thể chỉ cần thêm một công cụ “gửi email”, và công cụ này sẽ ngay lập tức có sẵn cho tất cả các máy khách MCP này.

Để hoàn thiện, chúng ta có thể thấy các công cụ tương tự trong Cursor. Trong Cursor, chúng ta thấy “cập nhật việc cần làm”, “thêm việc cần làm”, “liệt kê việc cần làm”, “tạo email”, “đọc email” và “tạo nội dung”. Hãy thử viết một câu chuyện về con chó của tôi tên là Ruby, cưỡi một đám mây phép thuật, và tạo một bản nháp email với câu chuyện cuối cùng. Hãy gửi yêu cầu này.

Bây giờ nó đang gọi công cụ “tạo nội dung” của chúng ta. Trong khi nó đang chạy, tôi chỉ muốn chỉ ra rằng công cụ tạo nội dung là công cụ này, thực chất là một quy trình làm việc riêng biệt trong n8n. Được rồi, nó đã tạo câu chuyện. Và tất nhiên, bạn có thể mở rộng bất kỳ điều gì trong số này để xem chính xác những gì đã xảy ra. Chúng ta có thể thấy truy vấn đã được gửi đến n8n. Và trong đầu ra, chúng ta có thể thấy kết quả trả về từ n8n. Nếu tôi cho bạn thấy quy trình làm việc đó trông như thế nào, thì nó đang gọi một AI agent, sau đó tạo câu chuyện cho chúng ta và trả về nó. Điểm mấu chốt là bạn có thể đính kèm các quy trình làm việc tạo sinh như một công cụ.

XEM THÊM:  OpenAI Operator và Deep Research Agent: Cách mạng AI Agent?

Bây giờ chúng ta đã có câu chuyện, nó đang yêu cầu chúng ta tạo email. Hãy tiếp tục và phê duyệt điều này. Được rồi, nó nói rằng nó đã tạo câu chuyện và email, và làm mới bản nháp của tôi. Và đây rồi! Chúng ta đã nhận được email chứa câu chuyện đó. Điều này thật điên rồ!

Bây giờ, hãy xem xét việc thiết lập máy chủ và tích hợp nó vào Claude Desktop hoặc Cursor. Sau đó, tôi sẽ chỉ cho bạn cách sử dụng n8n làm máy khách MCP.

Tạo máy chủ MCP

Để tạo máy chủ MCP, chỉ cần tạo một quy trình làm việc mới. Tôi sẽ gọi nó là “MCP server YouTube demo”. Sau đó, cho bước đầu tiên, hãy tìm kiếm MCP và thêm MCP server trigger. Nhìn vào node này, nó cung cấp cho chúng ta một URL thử nghiệm và một URL sản xuất. Chúng ta cũng có thể thiết lập xác thực. Chúng ta có thể đặt mã thông báo bearer hoặc xác thực header, hoặc đơn giản là không xác thực. Tôi sẽ xóa endpoint này vào thời điểm bạn xem video này. Hãy đổi tên đường dẫn thành “tutorial”. Chúng ta sẽ quay lại URL này sau.

Bây giờ, chúng ta có thể thêm bất kỳ công cụ nào vào MCP trigger này. Các công cụ này sẽ có sẵn cho bất kỳ ứng dụng nào đang sử dụng máy chủ MCP của chúng ta. Điều này có thể cực kỳ đơn giản. Chúng ta có thể đính kèm một cái gì đó như một công cụ tính toán. Và trước khi chúng ta thêm bất cứ điều gì khác, hãy lưu điều này. Hãy xem xét việc thêm máy chủ siêu đơn giản vào Cursor và Claude Desktop.

Tích hợp với Claude Desktop

Để tải xuống Claude Desktop, hãy truy cập claude.ai/download và tải xuống và cài đặt Claude cho hệ điều hành của bạn. Sau đó, từ Claude, hãy vào menu trên cùng, sau đó vào “File” > “Settings”, nhấp vào “Developer”, và tại thời điểm này, bạn sẽ không thấy bất kỳ máy chủ MCP nào. Nhấp vào “Edit Config”. Điều này sẽ đưa bạn đến thư mục chứa tệp cấu hình Claude Desktop này. Bây giờ hãy mở tệp này trong trình soạn thảo văn bản hoặc trình chỉnh sửa code. Bạn có thể sử dụng Claude, hoặc bất kỳ trình soạn thảo văn bản nào bạn muốn. Bây giờ trong tệp này, hãy thêm nội dung sau. Bạn có thể sao chép tất cả nội dung này từ phần mô tả trong video này. Chỉ cần thay thế URL này bằng URL từ cấu hình server trigger của bạn. Vì vậy, trong trigger này, hãy nhấp vào “Production URL”, sao chép bất kỳ giá trị nào trong trường này và thêm nó vào tệp này. Sau đó lưu tệp này. Và cuối cùng, cũng đảm bảo kích hoạt quy trình làm việc này.

Tuyệt vời, nó đã được kích hoạt. Và bây giờ, lần tới khi bạn khởi động Claude, bạn sẽ thấy biểu tượng công cụ này hiển thị các công cụ có sẵn từ máy chủ MCP của bạn, mà hiện tại chỉ là công cụ tính toán. Bạn không còn phải thay đổi bất cứ điều gì trong tệp cấu hình khi bạn thêm các công cụ mới vào quy trình làm việc n8n của mình. Chúng sẽ tự động phản ánh trong danh sách này.

Tích hợp với Cursor

Tôi cũng muốn chỉ cho bạn cách tích hợp điều này với Cursor, một trường hợp sử dụng phổ biến khác. Và đây có lẽ là thứ mà tôi thấy mình sử dụng mọi lúc. Tải xuống và cài đặt Cursor. Và khi bạn truy cập Cursor, bạn có thể vào “File” > “Preferences” > “Cursor Settings”. Và từ đây, hãy vào “MCP”. Sau đó, nhấp vào “Add New Global MCP Server” và dán văn bản tương tự vào. Nếu chúng ta quay lại cài đặt Cursor của mình, chúng ta có thể thấy n8n hiện đã được kết nối, cũng như danh sách các công cụ có sẵn, mà hiện tại chỉ là máy tính. Nếu điều này hiển thị màu vàng hoặc đỏ cho bạn, chỉ cần nhấp vào “Refresh” và điều đó sẽ giải quyết vấn đề.

Bây giờ bạn có thể làm theo bằng Cursor hoặc Claude. Điều đó thực sự tùy thuộc vào bạn. Cá nhân tôi sẽ sử dụng Cursor cho phần còn lại của hướng dẫn này.

Trong ví dụ tôi đã trình bày ở đầu video này, chúng ta thêm quy trình làm việc tạo nội dung này. Và chúng ta sẽ tạo ra nó. Và chúng ta cũng có khả năng quản lý các việc cần làm của mình. Một cái gì đó như gửi email là rất phổ biến. Vì vậy, tôi sẽ không giải thích điều đó trong video này. Nhưng những gì chúng ta sẽ làm là tạo quy trình làm việc tạo nội dung của chúng ta, chỉ để tôi có thể cho bạn cách gọi các quy trình làm việc con. Và sau đó, chúng ta cũng sẽ học cách quản lý các việc cần làm của mình.

Gọi các quy trình làm việc con

Để gọi các quy trình làm việc con, những gì chúng ta có thể làm là quay lại trang tổng quan của mình. Hãy tạo một quy trình làm việc mới. Và hãy gọi quy trình này là “Social Media Post Generator”. Hãy nhấp vào “Add First Step”. Và ở đây, hãy thêm “When Executed by Another Workflow”. Đối với “Input Data Mode”, hãy để nó ở “Define Using Fields Below”. Hãy thêm một trường mới. Tôi sẽ gọi trường này là “query”. Và nó có kiểu chuỗi. Điều này cũng đặt dữ liệu giả của chúng ta, chỉ để chúng ta có thể kiểm tra điều này. Tôi sẽ xóa tất cả những thứ này. Và sử dụng dấu ngoặc nhọn mở và đóng, hãy thêm thuộc tính truy vấn này với giá trị “create a Twitter expo về việc sử dụng AI agents với n8n”. Bây giờ hãy lưu điều này. Và hãy quay lại canvas.

XEM THÊM:  n8n Cloud hay Self-hosting cho AI Agent: Đánh giá chi tiết và lựa chọn tối ưu

Quy trình làm việc này sẽ gọi một AI agent để tạo nội dung này cho chúng ta. Tất nhiên, điều này không nhất thiết phải là một agent. Bạn có thể chỉ cần gọi một chuỗi LLM cơ bản. Nhưng vì tôi hơi lười biếng, tôi sẽ chỉ đính kèm node agent. Hãy thay đổi nguồn thành “Define Below”. Và hãy thêm một truy vấn vào prompt. Chúng ta cũng có thể thêm một tin nhắn hệ thống, nơi chúng ta có thể nói một cái gì đó như, “bạn là một trợ lý hữu ích, người tạo ra nội dung truyền thông xã hội chuyên nghiệp”.

Hãy quay lại canvas. Hãy thêm chat model của chúng ta. Và điều tuyệt vời về điều này là nếu bạn đang chạy n8n cục bộ, bạn có thể sử dụng một mô hình mã nguồn mở bằng Olama. Tôi sẽ chỉ đính kèm OpenAI. Tôi sẽ để điều này trên GPT-4. Và thế là xong. Hãy kiểm tra quy trình làm việc này. Và nếu chúng ta nhìn vào đầu ra của agent, chúng ta có thể thấy bài đăng Twitter của chúng ta ở đây.

Bây giờ hãy lưu điều này. Sau đó, hãy quay lại MCP server của chúng ta. Hãy nhấp vào “Tools”. Hãy chọn “Call n8n Workflow Tool”. Và bây giờ chúng ta có thể đặt tên cho nó như “create_social_media_content”. Và đối với mô tả, hãy nói, “sử dụng công cụ này khi tạo bài đăng trên mạng xã hội”. Bây giờ tất cả những gì chúng ta phải làm là chọn quy trình làm việc của chúng ta, mà chúng ta gọi là “Social Media Post Generator”. Bây giờ vì chúng ta đang sử dụng node AI agent, chúng ta có thể chỉ cần để AI tìm ra truy vấn là gì. Hãy quay lại canvas. Tôi sẽ chỉ đổi tên node này thành “Social Post Generator”.

Hãy xem điều gì sẽ xảy ra khi chúng ta lưu luồng này. Chúng ta có thể chỉ cần khởi động lại Claude Desktop, hoặc nếu bạn đang sử dụng Cursor, chỉ cần làm mới danh sách này và bạn sẽ thấy công cụ mới này. Nếu tôi nhấn Ctrl+I trong Cursor, điều này sẽ hiển thị cửa sổ chat. Và bây giờ chúng ta có thể kiểm tra điều này. Hãy nói, “create an expo về AI agents taking our jobs”.

Cursor thấy rằng chúng ta có công cụ này có sẵn. Hãy phê duyệt nó. Và nếu chúng ta nhìn vào đầu ra của công cụ này, bạn thực sự có thể thấy đầu ra từ agent của chúng ta. Điều này làm cho nó trở nên cực kỳ mạnh mẽ. Bây giờ chúng ta có trình tạo bài đăng trên mạng xã hội và một công cụ tính toán.

Một thứ tôi thực sự sử dụng là danh sách việc cần làm. Vì vậy, những gì chúng ta có thể làm là đi đến Airtable và tạo một bảng với hai cột, một cột “name” và “completed”. Ở đây, tôi đã thêm một vài mục và tôi đã đặt hai trong số đó là đã hoàn thành. Vì vậy, những gì tôi có thể làm trong máy chủ là thêm một công cụ mới. Hãy thêm Airtable. Tôi sẽ đổi tên điều này thành “list to-dos”. Và đối với thao tác, hãy thay đổi điều này thành “search”. Và cho cơ sở, hãy chọn “to-dos”. Và cho các bảng, hãy chọn “to-dos”. Tôi sẽ lọc lại và tôi sẽ trả về tất cả các mục. Và cho các tùy chọn, hãy chọn các trường đầu ra. Và từ đây, hãy chọn “name” cũng như “completed”.

Tôi đã tạo rất nhiều video, nơi tôi chỉ cho bạn cách tích hợp Airtable với n8n. Vì vậy, nếu bạn hơi lạc lõng, tôi sẽ liên kết đến các video khác trong phần mô tả của video này. Hãy quay lại canvas và hãy thêm hai node Airtable nữa. Hãy tìm kiếm Airtable. Cho thao tác, hãy chọn “create”. Hãy chọn cơ sở của chúng ta. Hãy chọn bảng. Và để ánh xạ, chúng ta sẽ để nó trên “map each column manually”. Và cho tên, chúng ta sẽ để AI quyết định và ban đầu “completed” sẽ được đặt thành “false”. Đây là một việc cần làm mới.

Hãy đổi tên node này thành “add to-do”. Và hãy thêm cái cuối cùng. Hãy gọi cái này là Airtable. Hãy thay đổi thao tác thành “update”. Và hãy thực sự đổi tên node này thành “update to-do”. Công cụ này sẽ cho phép chúng ta đặt một việc cần làm là đã hoàn thành hoặc chưa hoàn thành. Được rồi. Vì vậy, đối với các giá trị để cập nhật, hãy để AI quyết định. Và hãy thêm một mô tả. Và hãy thêm một cái gì đó như ID bản ghi Airtable, thường ở định dạng như thế này. Vì vậy, chúng ta có thể sử dụng trường mô tả này chỉ để hỗ trợ AI trong việc xác định cách nó sẽ điền vào trường này. Tôi đã gặp sự cố với ID Airtable trong quá khứ. Vì vậy, tôi muốn cung cấp cho nó một số hướng dẫn.

Đối với tên, tôi cũng sẽ để AI quyết định. Và tôi cũng sẽ để agent quyết định cách đặt “completed”. Và tôi nghĩ thế là xong. Hãy quay lại canvas. Hãy lưu máy chủ của chúng ta. Và quay lại Cursor. Hãy làm mới danh sách này. Và tuyệt vời! Bây giờ chúng ta có các công cụ việc cần làm của chúng ta. Hãy thử điều này. Hãy nói, “những việc cần làm hiện tại của tôi là gì?”. Hãy chạy công cụ này. Và thật tuyệt vời! Bây giờ chúng ta nhận lại được danh sách việc cần làm của mình. Hãy thử thêm một việc cần làm. Hãy nói, “add a new to-do called create_n8n_mcp_tutorial”.

XEM THÊM:  OpenAI: Kéo Dài "Thời Gian Suy Nghĩ" Của Mô Hình Giúp Chống Lại Các Lỗ Hổng An Ninh Mạng Mới Nổi

Hãy phê duyệt cuộc gọi công cụ này. Và hãy phê duyệt cả cuộc gọi này nữa. Vì vậy, nó chỉ đang cố gắng truy xuất các công cụ để xem liệu nó có được thêm hay không. Và nhìn vào Airtable, chúng ta thực sự có thể thấy việc cần làm của chúng ta ở đây. Chúng ta cũng có thể sử dụng các máy chủ này làm công cụ trong các luồng agent khác của chúng ta.

Ở đây, tôi có một thiết lập agent siêu đơn giản. Nó có thể nhận tin nhắn chat. Chúng ta có node AI agent. Và không có gì lạ mắt ở đây cả. Và chúng ta chỉ đơn giản là sử dụng OpenAI làm LLM của mình. Bây giờ, để thêm máy chủ MCP làm công cụ, tất cả những gì chúng ta phải làm là nhấp vào “Tool”. Sau đó, hãy chọn “MCP Client Tool”. Và tất cả những gì chúng ta phải làm bây giờ là cung cấp endpoint cho máy chủ của chúng ta. Hãy nhấp vào máy chủ của chúng ta. Hãy lấy endpoint này. Và trong MCP Client Tool, hãy thêm endpoint của chúng ta. Nếu chúng ta bật xác thực trên máy chủ, đây là nơi chúng ta phải đặt xác thực đó. Và ở đây chúng ta có thể cho nó biết những công cụ nào sẽ bao gồm. Theo mặc định, chúng ta có thể chỉ cần kéo tất cả các công cụ, đó là những gì Claude và Cursor đang làm. Nhưng nếu chúng ta muốn, chúng ta có thể rất cụ thể. Vì vậy, trong danh sách này, chúng ta có thể thấy tất cả các công cụ có sẵn từ máy chủ. Tôi sẽ chỉ để nó ở “all” và để agent quyết định khi nào gọi công cụ nào. Phải. Vì vậy, hãy lưu điều này.

Hãy thử điều này. Hãy nói, “liệt kê các việc cần làm của tôi”. Và tuyệt vời! Ở đây chúng ta có thể thấy tất cả các việc cần làm của tôi. Và bây giờ hãy nói, “mark the createN8NMCPTutorial as done”. Được rồi. Agent đang nói nó đã được đánh dấu là đã hoàn thành. Và đi đến Airtable, chúng ta có thể thấy rằng bản cập nhật này thực sự đã xảy ra.

Bây giờ, tôi sẽ cho bạn một mẹo rất hài hước. Nhưng trước khi tôi làm điều đó, tôi muốn đề cập đến một hạn chế với việc triển khai hiện tại. Đối với máy khách MCP, chúng ta chỉ có thể gọi các endpoint SSE. Nếu bạn quen thuộc với Model Context Protocol, bạn biết rằng có rất nhiều máy chủ khác cũng có sẵn. Nếu tôi xem xét BRIVE Search, ví dụ, một số máy chủ yêu cầu bạn chạy các lệnh NPX, rất khác với SSE. Và thật không may, chúng ta không thể sử dụng bất kỳ máy chủ nào trong số này một cách tự nhiên trong n8n. Tuy nhiên, có một thủ thuật rất hài hước mà bạn có thể làm. Zapier cũng cung cấp một endpoint SSE, cung cấp cho bạn quyền truy cập vào rất nhiều tích hợp khác nhau. Và tôi biết Zapier thực tế là đối thủ cạnh tranh của n8n. Nhưng nếu có một tích hợp trong Zapier mà bạn muốn sử dụng trong n8n, tất cả những gì bạn phải làm là truy cập zapier.com/mcp, sau đó nhấp vào “Get Started”. Và ở đây bạn sẽ tìm thấy một endpoint SSE cho Zapier. Vì vậy, tất cả những gì bạn phải làm là sao chép URL này và sau đó thêm nó vào n8n. Vì vậy, tôi chỉ cần xóa điều này và dán URL Zapier vào. Bây giờ bạn có thể quyết định những hành động nào bạn muốn thêm vào máy chủ của mình bằng cách nhấp vào “Edit MCP Actions”. Và hiện tại, tôi đã thiết lập Gmail, nhưng bạn có thể nhấp vào “Add New Action”. Và tôi có thể tìm kiếm thông qua hàng ngàn tích hợp do Zapier cung cấp. Ví dụ: hãy tìm kiếm Discord. Và bây giờ bạn có thể tìm thấy tất cả các hành động khác nhau liên quan đến Discord, chẳng hạn như gửi tin nhắn kênh này. Và tất nhiên, Zapier sẽ hướng dẫn bạn qua các hướng dẫn thiết lập để kết nối với Discord.

Dù bằng cách nào, nếu bạn đi đến n8n, và nếu chúng ta nhấp vào “selected”, chúng ta có thể xem tất cả các hành động không được kéo từ chính Zapier. Vì vậy, tôi chỉ nghĩ rằng đây là một mẹo rất hay để thêm nhiều chức năng hơn vào n8n.

Bạn có thấy hữu ích không? Hãy cho chúng tôi +1 nhé

Tìm kiếm tức thì các thông tin tại website: tranxuanloc.com

Mẹo tìm kiếm: "Từ khóa cần tìm kiếm" site:tranxuanloc.com để tìm được kết quả chính xác trên công cụ tìm kiếm của google

Trần Xuân Lộc Blog cung cấp dịch vụ

TOP ĐỐI TÁC CUNG CẤP DỊCH VỤ DU LỊCH TRỰC TUYẾN HÀNG ĐẦU

(Đặt phòng, đặt tour, đặt xe, đặt vé máy bay...Nhấn vào link logo để đặt dịch vụ với nhiều ưu đãi hấp dẫn)

Zalo
Cảnh báo: Hiện nay có rất nhiều đơn vị SỬ DỤNG LẠI các THÔNG TIN NỘI DUNG ĐÀO TẠO của KHÓA HỌC SALE OTA TỪ OTAVN mà không đảm bảo chất lượng và hỗ trợ về sau. Các bạn muốn đăng ký học SALE OTA uy tín hãy liên hệ trực tiếp với OTA Việt Nam. OTAVN có xây dựng các hình thức đào tạo trực tiếp offline cho doanh nghiệp, đào tạo 1-1 từ xa và tự học online. Chúng tôi có 2 tên miền là: otavietnam.com và tranxuanloc.com (founder) có chia sẻ và đăng tải các thông tin liên quan về OTA/ Sale OTA/ Digital Marketing/ Thiết kế website... Với khách hàng/ đối tác đã sử dụng dịch vụ của OTAVN sẽ được HỖ TRỢ MIỄN PHÍ các vấn đề phát sinh, tư vấn giải đáp sau khi đã hoàn thành khóa học hoặc sau khi đã sử dụng dịch vụ trọn đời. Hotline:0934552325 (iMessage/ Zalo/ Whatsapp) - Email: info@scovietnam.com