Hàm tùy chỉnh
Các hàm tùy chỉnh cho phép bot AI của bạn kết nối với các hệ thống khác trong các cuộc trò chuyện trực tiếp. Thay vì nói “Tôi sẽ kiểm tra và phản hồi lại cho bạn”, bot có thể tra cứu trạng thái đơn hàng, kiểm tra hàng tồn kho hoặc tạo bản ghi trong CRM của bạn (hệ thống quản lý quan hệ khách hàng - phần mềm bạn sử dụng để theo dõi khách hàng tiềm năng và khách hàng, chẳng hạn như HubSpot hoặc Salesforce) - tất cả đều diễn ra trong thời gian thực, ngay khi khách hàng đang chờ đợi.
Hàm tùy chỉnh so với Webhook
Đây là điểm gây nhầm lẫn phổ biến nhất, vì vậy cần làm rõ trước khi bạn bắt đầu xây dựng bất cứ thứ gì.
| Webhook | Hàm tùy chỉnh | |
|---|---|---|
| Hướng | Một chiều (gửi và quên) | Hai chiều (gọi và chờ) |
| Bot làm gì | Gửi thông báo khi có sự kiện xảy ra, sau đó tiếp tục công việc. | Gọi ra ngoài, tạm dừng, chờ phản hồi và sử dụng kết quả trả về để tiếp tục cuộc trò chuyện. |
| Khả năng hiển thị trong cuộc trò chuyện | Kết quả ở phía sau là vô hình đối với bot — nó không bao giờ thấy điều gì đã xảy ra. | Phản hồi được đưa trực tiếp trở lại AI, vì vậy bot có thể trích dẫn, suy luận về nó và trả lời khách hàng bằng thông tin đó. |
| Phù hợp nhất cho | Ghi nhật ký sự kiện, đồng bộ dữ liệu với CRM, kích hoạt tự động hóa bên ngoài (Zapier, Make, n8n). | Bất cứ việc gì mà bot cần câu trả lời trước khi có thể phản hồi — tra cứu trực tiếp, định giá thời gian thực, tạo nội dung ngay lập tức. |
Khi nào chọn cái nào: Nếu bạn chỉ cần thông báo cho một hệ thống khác rằng điều gì đó đã xảy ra, hãy sử dụng webhook - một tin nhắn tự động một chiều được gửi đến hệ thống khác (xem Cài đặt → Tích hợp → Webhooks). Nếu bot cần tìm hiểu điều gì đó từ hệ thống khác trước khi tiếp tục cuộc trò chuyện, hãy sử dụng hàm tùy chỉnh.
Ví dụ về những gì Hàm tùy chỉnh có thể thực hiện
Vì phản hồi được đưa ngược lại vào cuộc trò chuyện, các hàm tùy chỉnh mở ra những khả năng mà webhook đơn thuần không thể làm được:
- Tra cứu hàng tồn kho trực tiếp trên Shopify hoặc WooCommerce — Trước khi báo giá cho khách hàng, bot kiểm tra hàng tồn kho theo thời gian thực và trả lời “Vâng, chúng tôi còn 12 chiếc size M” thay vì “để tôi kiểm tra và phản hồi lại cho bạn sau”.
- Định giá động từ Google Sheet — Nhóm bán hàng của bạn cập nhật giá trong bảng tính; bot đọc dòng mới nhất ngay giữa cuộc trò chuyện và báo giá hiện tại mà không cần ai phải can thiệp vào cấu hình AI.
- Tác nhân gọi lại bằng AI giọng nói — Khi bot xác định được khách hàng tiềm năng, nó kích hoạt một tác nhân giọng nói (ví dụ: trình gọi điện được hỗ trợ bởi ElevenLabs) để gọi lại cho khách hàng trong vài phút và xác nhận với khách hàng “tuyệt vời, hãy chờ cuộc gọi trong 5 phút tới”.
- Tạo và gửi email báo giá PDF ngay trong lúc chat — Bot thu thập các yêu cầu, gọi đến trình tạo báo giá của bạn, nhận lại URL tệp PDF và nói với khách hàng “Tôi vừa gửi email báo giá cho bạn — hãy kiểm tra hộp thư đến nhé.”
Hàm tùy chỉnh có thể làm được gì?
Hãy coi các hàm tùy chỉnh như việc cung cấp cho bot của bạn những siêu năng lực vượt xa việc chỉ trò chuyện. Dưới đây là các ví dụ thực tế:
- Theo dõi đơn hàng - Khách hàng hỏi “Đơn hàng của tôi ở đâu?” và bot kiểm tra hệ thống thương mại điện tử của bạn rồi trả lời kèm trạng thái vận chuyển và liên kết theo dõi
- Kiểm tra hàng tồn kho - “Bạn có món này size 10 không?” Bot kiểm tra hệ thống kho của bạn và đưa ra câu trả lời theo thời gian thực
- Cập nhật CRM - Khi bot xác định được khách hàng tiềm năng, nó tự động tạo hoặc cập nhật bản ghi trong HubSpot, Salesforce hoặc bất kỳ CRM nào khác
- Tạo báo giá - Bot thu thập các yêu cầu của khách hàng và tạo báo giá cá nhân hóa từ hệ thống định giá của bạn
- Đặt lịch - Bot tạo một cuộc hẹn trong hệ thống đặt lịch bên ngoài của bạn
- Xác minh giảm giá - “Mã giảm giá này có hợp lệ không?” Bot kiểm tra và xác nhận
- Tra cứu tài khoản - Khách hàng cũ được tự động nhận diện và thông tin chi tiết tài khoản của họ được truy xuất
Khách hàng không bao giờ thấy những gì xảy ra ở hậu trường. Họ chỉ đơn giản trải nghiệm một con bot có thể trả lời các câu hỏi của họ bằng thông tin thực tế, cập nhật.
Hàm tùy chỉnh hoạt động như thế nào (Phiên bản đơn giản)
Đây là những gì xảy ra khi một hàm tùy chỉnh được kích hoạt trong cuộc trò chuyện:
- Khách hàng hỏi một điều gì đó cần dữ liệu thời gian thực (ví dụ: “Đơn hàng của tôi đâu rồi?”)
- Bot nhận diện rằng nó cần sử dụng một hàm tùy chỉnh để trả lời
- Bot thu thập bất kỳ thông tin còn thiếu nào từ khách hàng (ví dụ: “Số đơn hàng của bạn là gì?”)
- Nền tảng gửi yêu cầu đến hệ thống của bạn (trang web, CRM hoặc bất kỳ công cụ nào khác) kèm theo các chi tiết liên quan
- Hệ thống của bạn phản hồi bằng dữ liệu (ví dụ: trạng thái đơn hàng, mã vận đơn, ngày giao hàng)
- Bot đọc phản hồi và soạn một câu trả lời tự nhiên: “Đơn hàng ORD-4582 của bạn đã được gửi và dự kiến sẽ đến vào thứ Sáu!”
Chi phí cho một lệnh gọi hàm tùy chỉnh
Mỗi lệnh gọi hàm tùy chỉnh được tính phí theo cấp độ Chất lượng AI của Tác nhân (Agent) của bạn:
| Cấp độ chất lượng AI | Tín dụng cho mỗi lần gọi hàm tùy chỉnh | Khi kết nối với khóa Anthropic của riêng bạn (BYOK) |
|---|---|---|
| Pro | 1 tín dụng | 0 tín dụng — chạy bằng khóa của bạn |
| Economy (đã ngừng hỗ trợ) | 0.5 tín dụng | 0 tín dụng — chạy bằng khóa của bạn |
| Max | 0.25 tín dụng | vẫn là 0.25 tín dụng, vẫn bị tính phí ngay cả khi đã kết nối khóa của riêng bạn |
| Mini | 0.15 tín dụng | vẫn là 0.15 tín dụng, vẫn bị tính phí ngay cả khi đã kết nối khóa của riêng bạn |
Thiết lập Hàm Tùy chỉnh (Từng bước)
- Trong thanh bên chính, bên dưới AI Studio, nhấp vào Custom Functions.
- Nhấp vào nút + Add Function (hoặc New function) màu xanh lá cây ở góc trên bên phải.
Danh sách các hàm tùy chỉnh hiển thị một bảng với các cột sau:
| Cột | Nội dung hiển thị |
|---|---|
| Name | Tên hàm (ví dụ: check_order_status) |
| Description | Tóm tắt ngắn gọn về chức năng của hàm (bị cắt bớt còn 50 ký tự trong bảng) |
| Method | Phương thức HTTP được sử dụng, hiển thị dưới dạng huy hiệu màu: GET (xanh dương), POST (xanh lá), PUT (cam), DELETE (đỏ) |
| Created | Ngày tạo hàm |
Điều này giúp bạn dễ dàng xem lướt qua các hàm của mình và tìm thấy hàm bạn cần.
Bước 1: Đặt tên và mô tả
| Trường | Nội dung cần nhập | Ví dụ |
|---|---|---|
| Name | Một tên ngắn gọn sử dụng chữ cái, số và dấu gạch dưới | check_order_status |
| Description | Giải thích chức năng của hàm này (AI đọc phần này để quyết định khi nào nên sử dụng) | “Tra cứu trạng thái hiện tại của đơn hàng khách hàng bằng số đơn hàng” |
| Purpose (AI Action) | Cho AI biết chính xác khi nào và làm thế nào để sử dụng hàm này | “Sử dụng khi khách hàng hỏi về trạng thái đơn hàng, vận chuyển hoặc giao hàng. Hãy hỏi số đơn hàng của họ trước.” |
Mẹo: Hãy thật cụ thể trong phần mô tả và mục đích. Bạn càng làm rõ khi nào hàm nên được sử dụng, bot sẽ càng sử dụng nó một cách đáng tin cậy vào đúng thời điểm.
Bước 2: Thiết lập kết nối
Bạn cần cho ứng dụng biết nơi gửi yêu cầu:
| Trường | Nội dung cần nhập | Ví dụ |
|---|---|---|
| URL | Địa chỉ web của điểm cuối (endpoint) hệ thống của bạn (địa chỉ cụ thể trên hệ thống của bạn nhận yêu cầu và gửi lại dữ liệu) | https://api.yourstore.com/v1/orders/status |
| Method | Loại yêu cầu cần gửi | Xem các tùy chọn bên dưới |
Cách chọn phương thức:
| Phương thức | Khi nào nên sử dụng |
|---|---|
| GET | Tra cứu thông tin (trạng thái đơn hàng, hàng tồn kho, chi tiết tài khoản) |
| POST | Tạo bản ghi mới (phiếu hỗ trợ, khách hàng tiềm năng, đặt chỗ) hoặc tra cứu phức tạp |
| PUT | Cập nhật hoàn toàn một bản ghi hiện có |
| PATCH | Cập nhật một phần của bản ghi hiện có |
| DELETE | Xóa một bản ghi |
Nếu bạn không chắc chắn nên sử dụng phương thức nào, hãy kiểm tra với nhà phát triển của bạn hoặc tài liệu của hệ thống mà bạn đang kết nối. GET (để tra cứu) và POST (để tạo bản ghi) là những phương thức phổ biến nhất.
Bước 3: Thêm Tiêu đề Xác thực
Hầu hết các hệ thống đều yêu cầu xác thực để chấp nhận yêu cầu. Hãy thêm bất kỳ tiêu đề bắt buộc nào:
| Tiêu đề | Giá trị Ví dụ |
|---|---|
Authorization |
Bearer your-api-key-here |
Content-Type |
application/json |
Các giá trị của tiêu đề chứa khóa hoặc mật khẩu, chẳng hạn như Authorization hoặc X-API-Key, sẽ hiển thị dưới dạng dấu chấm sau khi nhập. Nhấp vào biểu tượng con mắt bên cạnh giá trị để xem nội dung.
Mẹo bảo mật: Sử dụng khóa API chuyên dụng với quyền hạn hạn chế. Không sử dụng thông tin đăng nhập cấp quản trị viên.
Nơi tìm khóa API: Kiểm tra phần cài đặt hoặc phần dành cho nhà phát triển của hệ thống mà bạn đang kết nối (ví dụ: CRM, nền tảng thương mại điện tử hoặc công cụ đặt chỗ của bạn).
Bước 4: Xác định Đầu vào (Những gì Bot gửi đi)
Các tham số đầu vào là những thông tin mà bot thu thập từ cuộc trò chuyện và gửi đến hệ thống của bạn.
Đối với mỗi tham số, bạn cần chỉ định:
| Thuộc tính | Ý nghĩa |
|---|---|
| Tên | Tên tham số (phải khớp với những gì hệ thống của bạn mong đợi) |
| Loại | Loại dữ liệu (văn bản, số, đúng/sai, v.v.) |
| Mô tả | Cho AI biết thông tin này là gì và tìm thấy nó ở đâu trong cuộc trò chuyện |
| Bắt buộc | Nếu đặt là Có, bot sẽ hỏi khách hàng thông tin này trước khi tiếp tục |
Các loại tham số khả dụng:
| Loại | Ý nghĩa |
|---|---|
| string | Văn bản (tên, số đơn hàng, địa chỉ) |
| number | Giá trị số (số lượng, giá cả) |
| boolean | Đúng hoặc sai (giá trị có/không) |
| array | Một danh sách các mục. Được gửi dưới dạng danh sách JSON thực — trong Run Test, bạn có thể nhập dưới dạng [8624], ["a", "b"] hoặc đơn giản là phân tách bằng dấu phẩy (8624, 8625) và nó sẽ được chuyển đổi cho bạn. Nếu API của bạn nghiêm ngặt về nội dung danh sách — ví dụ: chỉ chứa số — hãy đặt Item type tùy chọn bên cạnh loại và mọi giá trị trong danh sách sẽ được chuyển đổi sang loại đó. |
| query_param | Văn bản được gửi dưới dạng tham số URL thay vì trong phần thân yêu cầu. Sử dụng loại này khi API của bạn yêu cầu dữ liệu trong URL (ví dụ: ?order_id=123). |
Mỗi tham số cũng có một trường Đường dẫn nội dung yêu cầu (Request body path) tùy chọn. Thông thường, một tham số được gửi dưới dạng trường cấp cao nhất trong nội dung yêu cầu (hoặc dưới dạng giá trị chuỗi truy vấn, đối với loại query_param). Nếu endpoint của bạn yêu cầu tham số đó được lồng bên trong — ví dụ: {"order": {"id": "ORD-123"}} — hãy đặt đường dẫn thành order.id và nền tảng sẽ tự động lồng giá trị đó vào cho bạn.
Ví dụ: Để tra cứu trạng thái đơn hàng, bạn có thể xác định:
- order_number (chuỗi, bắt buộc): “Số đơn hàng của khách hàng. Thường bắt đầu bằng ORD- theo sau là các chữ số. Hãy hỏi khách hàng thông tin này nếu họ chưa đề cập đến.”
- email (chuỗi, tùy chọn): “Địa chỉ email của khách hàng để xác minh thêm. Chỉ cần thiết nếu số đơn hàng không tìm thấy kết quả khớp.”
Những gì Hệ thống của bạn Tự động Nhận được
Ngoài các tham số đầu vào mà bạn xác định, nền tảng sẽ tự động bao gồm dữ liệu hệ thống trong mỗi yêu cầu. Điểm cuối (endpoint) của bạn sẽ nhận dữ liệu này trong trường system:
| Trường hệ thống | Nội dung chứa |
|---|---|
system.contactId |
ID nền tảng của liên hệ trong cuộc hội thoại |
system.campaignId |
Xác định tác nhân AI đang xử lý cuộc hội thoại, dưới dạng agent:<agentId> (trường này giữ tên cũ) |
system.userId |
ID người dùng của bạn |
system.channel |
Kênh nhắn tin (ví dụ: "whatsapp", "instagram") |
system.contact |
Bản ghi liên hệ đầy đủ (tên, điện thoại, email, thẻ, v.v.) |
system.campaign |
Các cài đặt của tác nhân AI đang xử lý cuộc hội thoại (trường này giữ tên cũ) |
system.test |
true nếu đây là bản thử nghiệm Try Out, false cho các cuộc hội thoại trực tiếp |
system.callback_url |
Chỉ khi Kết quả trả về sau được bật: liên kết để gửi kết quả đến (xem Các tác vụ chạy dài) |
system.callback_expires_at |
Chỉ khi Kết quả trả về sau được bật: thời điểm liên kết đó hết hạn |
Điều này hữu ích nếu hệ thống của bạn cần xác định liên hệ, kiểm tra xem agent nào đã gọi hàm hoặc cần xử lý khác biệt trong quá trình kiểm thử.
Khi một kiểm tra tiếp theo gọi hàm của bạn (xem Chỉ gửi khi kiểm tra thành công), yêu cầu này khác với lệnh gọi trong cuộc hội thoại: nó không có tham số đầu vào và trường
systemchỉ chứasystem.contact(cùng vớiidcủa nó) cộng với một khốisystem.follow_up(type,cycle_number,follow_up_number,reason,campaign_id,agent_id). Không có đối tượngcampaignnào trong đó. Bỏ qua Dữ liệu Hệ thống cũng áp dụng cho lệnh gọi đó.
Bạn không cần dữ liệu hệ thống? Hãy bật nút Bỏ qua dữ liệu hệ thống (Skip System Data) trong trình tạo hàm. Bot sau đó sẽ chỉ gửi các tham số đầu vào mà bạn đã xác định — không có dữ liệu liên hệ hoặc agent. Hãy sử dụng tùy chọn này nếu endpoint của bạn từ chối các trường không mong muốn hoặc bạn chỉ đơn giản muốn một payload gọn nhẹ hơn.
Bước 5: Kiểm tra, sau đó để bot đọc phản hồi
Thông thường, bạn không cần phải ánh xạ các trường phản hồi. Khi endpoint của bạn phản hồi, bot sẽ đọc toàn bộ phản hồi JSON và sử dụng Mô tả và Mục đích (Hành động AI) của hàm — cộng với mô tả riêng của từng tham số — để xác định những gì quan trọng và trình bày một cách tự nhiên. Một Mô tả rõ ràng về chính hàm đó (“Truy xuất trạng thái hiện tại của đơn hàng khách hàng bao gồm thông tin vận chuyển và theo dõi”) sẽ mang lại hiệu quả cao hơn so với việc ánh xạ từng trường một.
Nếu endpoint của bạn trả về một phản hồi lớn và bạn chỉ muốn bot thấy một vài giá trị cụ thể, hãy mở phần Ánh xạ phản hồi (Response mapping) (mặc định bị thu gọn, ngay phía trên phần Kiểm tra). Mỗi hàng sẽ chọn một trường cấp cao nhất từ phản hồi: Trường phản hồi (Response field) là tên trường trong phản hồi JSON của API của bạn, và Trường đầu ra (Output field) là tên mà bot sẽ nhận được. Với ít nhất một hàng được điền, bot sẽ chỉ nhận được các giá trị bạn đã ánh xạ thay vì toàn bộ nội dung phản hồi. Hãy để trống phần này để giữ hành vi phản hồi đầy đủ mặc định.
Trước khi lưu, hãy sử dụng phần Kiểm tra ở cuối trình tạo để gửi yêu cầu chính xác như đã cấu hình và xem phản hồi thực tế mà không cần rời khỏi ứng dụng:
Phản hồi bạn thấy ở đây là phản hồi thô từ endpoint. Nếu bạn đã thiết lập Ánh xạ phản hồi ở trên, bot trong cuộc trò chuyện thực tế sẽ chỉ nhận được các trường đã ánh xạ đó — bài kiểm tra luôn hiển thị toàn bộ phản hồi thô để bạn có thể thấy những gì khả dụng để ánh xạ. Nếu có điều gì đó không ổn (tên trường không mong đợi, lồng ghép thừa), hãy sửa nó trên endpoint của bạn hoặc điều chỉnh ánh xạ của bạn.
Gán hàm cho một Agent
Sau khi tạo một hàm tùy chỉnh, bạn cần cho mỗi Agent biết những hàm nào nó có thể sử dụng:
- Mở Agent trong mục AI Studio → AI Agents.
- Chuyển đến tab AI Abilities.
- Bạn sẽ thấy danh sách mọi hàm tùy chỉnh mà bạn đã tạo. Bật từng hàm mà bạn muốn bot của Agent này có thể gọi.
- Nhấp vào Lưu thay đổi (Save changes) ở phía dưới. Các lựa chọn chỉ được áp dụng sau khi đã lưu.
Chỉ những hàm được gán mới khả dụng cho bot của Agent đó. Điều này ngăn bot vô tình sử dụng các hàm không liên quan.
Kiểm thử các hàm tùy chỉnh của bạn
Trước khi triển khai thực tế, hãy kiểm tra kỹ lưỡng:
- Chạy Kiểm tra tích hợp - Sử dụng phần Kiểm tra bên trong trình tạo hàm (xem ở trên) để kiểm tra nhanh mà không cần rời khỏi ứng dụng — điền các giá trị thực tế và nhấp vào Chạy kiểm tra.
- Kiểm tra trực tiếp endpoint hệ thống của bạn - Đối với danh sách kiểm tra đầy đủ bên dưới, một công cụ chuyên dụng như Postman (hoặc nhà phát triển của bạn) sẽ đi sâu hơn một lần Chạy kiểm tra đơn lẻ.
- Kiểm tra trong Thử nghiệm (Try Out) - Mô phỏng một cuộc trò chuyện nơi khách hàng hỏi điều gì đó sẽ kích hoạt hàm.
- Kiểm tra phản hồi - Đảm bảo bot đọc và trình bày dữ liệu một cách chính xác.
- Kiểm tra các tình huống lỗi - Điều gì sẽ xảy ra nếu khách hàng cung cấp số đơn hàng không hợp lệ? Điều gì xảy ra nếu hệ thống của bạn tạm thời ngừng hoạt động?
Khi kết quả kiểm tra trả về 401 hoặc 403
Lỗi 401 hoặc 403 có nghĩa là điểm cuối (endpoint) của bạn đã nhận được yêu cầu nhưng từ chối nó. Dấu hiệu nhận biết là không có gì xuất hiện trong nhật ký của chính bạn — hầu hết các công cụ đều từ chối một lệnh gọi không được ủy quyền trước khi chúng bắt đầu quy trình làm việc, vì vậy không có gì để xem ở phía bạn và có vẻ như yêu cầu chưa bao giờ đến nơi.
Hầu như luôn luôn đây là sự không khớp về xác thực: điểm cuối của bạn muốn một loại thông tin xác thực và hàm đang gửi một loại khác. Hãy kiểm tra xem tiêu đề bạn đã thêm trong Bước 3 có chính xác là tiêu đề mà hệ thống của bạn mong đợi hay không.
Phiên bản phổ biến nhất của lỗi này là webhook được bảo vệ bằng Basic Auth (n8n, Make và hầu hết các công cụ tự lưu trữ đều cung cấp tùy chọn này dưới dạng hộp kiểm trên chính webhook) trong khi hàm gửi một tiêu đề bí mật tùy chỉnh như X-My-Secret. Basic Auth chỉ chấp nhận tiêu đề Authorization, vì vậy tiêu đề tùy chỉnh sẽ bị bỏ qua và lệnh gọi bị từ chối. Bạn có hai lựa chọn:
- Tắt Basic Auth trên webhook và kiểm tra tiêu đề tùy chỉnh của bạn bên trong quy trình làm việc thay thế.
- Giữ Basic Auth bật và thêm tiêu đề
Authorizationvào hàm với giá trị là từBasictheo sau làusername:passwordđã được mã hóa base64 của bạn.
Cách nào cũng được — chỉ cần đảm bảo cả hai bên đều thống nhất.
Khi kết quả kiểm tra trả về 404
URL điểm cuối không chính xác hoặc quy trình làm việc chưa được xuất bản. Đặc biệt trong n8n, mỗi webhook có một URL Kiểm tra (Test) và URL Sản xuất (Production) riêng biệt, và URL Kiểm tra chỉ lắng nghe khi bạn đang mở trình chỉnh sửa. Hãy sao chép URL Sản xuất và đảm bảo quy trình làm việc đang hoạt động.
Xem các lỗi trong Try Out và Chats
Khi AI gọi một hàm tùy chỉnh trong cuộc hội thoại và lệnh gọi đó thất bại, ví dụ do sai thông tin xác thực, điểm cuối (endpoint) bị lỗi hoặc hết thời gian chờ, cuộc hội thoại hiện sẽ hiển thị điều đó: một dấu hiệu “(tên hàm) thất bại” màu đỏ xuất hiện trong luồng, cả trong tab Try Out của tác nhân và các cuộc hội thoại thực tế trong Chats. Nhấp vào dấu hiệu này để mở rộng chi tiết: mã trạng thái mà điểm cuối của bạn đã trả về và nội dung phản hồi của nó, thường là đủ để cho bạn biết chính xác cần sửa gì (một 401 với thông báo “unauthorized” nghĩa là tiêu đề xác thực bị sai, hết thời gian chờ nghĩa là điểm cuối của bạn mất hơn 30 giây; đối với tác vụ cần nhiều thời gian hơn, hãy xem Các tác vụ chạy dài).
Các lệnh gọi thành công cũng hiển thị một dấu hiệu — hãy nhấp vào đó để xem điểm cuối của bạn thực sự đã phản hồi lại những gì. Đây là cách nhanh nhất để gỡ lỗi tích hợp từ đầu đến cuối: thực hiện cuộc trò chuyện thử nghiệm trong Try Out, sau đó nhấp vào dấu hiệu hàm để xem kết quả yêu cầu thực tế mà không cần rời khỏi trang.
Khi một công cụ liên tục gặp lỗi trong các cuộc hội thoại thực tế
Nếu cùng một hàm tùy chỉnh gặp lỗi 3 lần trong vòng 24 giờ khi tác nhân AI của bạn đang trò chuyện, bạn sẽ nhận được một thông báo mỗi ngày về vấn đề đó: qua email, trong mục thông báo (biểu tượng cái chuông) và dưới dạng thông báo đẩy nếu bạn đã bật tính năng này. Thông báo sẽ nêu tên công cụ, hiển thị lỗi gần nhất và liên kết đến các cuộc trò chuyện bị ảnh hưởng, vì tác nhân sẽ thông báo cho những người liên hệ đó rằng nó đã gặp sự cố kỹ thuật. Dòng của hàm trong phần Cài đặt sẽ hiển thị trạng thái Đang lỗi kèm theo số lần lỗi và lỗi gần nhất cho đến khi công cụ hoạt động trở lại; một lần gọi hàm thành công sẽ xóa trạng thái này. Bạn có thể tắt các thông báo này trong mục Cài đặt → Thông báo → Lỗi công cụ.
Ví dụ hoàn chỉnh: Tra cứu trạng thái đơn hàng
Dưới đây là một ví dụ đã được cấu hình đầy đủ mà bạn có thể sử dụng làm mẫu:
Thông tin cơ bản:
- Tên:
check_order_status - Mô tả: “Truy xuất trạng thái hiện tại của đơn hàng khách hàng bao gồm thông tin vận chuyển và theo dõi”
- Hành động AI: “Gọi hàm này khi khách hàng hỏi về trạng thái đơn hàng, vị trí gói hàng hoặc thời gian hàng đến. Luôn yêu cầu số đơn hàng trước.”
Kết nối:
- URL:
https://api.mystore.com/orders/lookup - Phương thức: POST
Tiêu đề (Headers):
Authorization:Bearer sk_live_abc123Content-Type:application/json
Tham số đầu vào:
order_number(văn bản, bắt buộc): “Số đơn hàng do khách hàng cung cấp”customer_email(văn bản, tùy chọn): “Email của khách hàng để xác minh bổ sung”
Không cần ánh xạ phản hồi — với Mô tả và AI Action rõ ràng đã được thiết lập ở trên, bot sẽ đọc bất kỳ JSON nào mà endpoint của bạn trả về (trạng thái, số theo dõi, ngày giao hàng, mặt hàng) và tìm cách trình bày về nó.
Cuộc hội thoại sẽ diễn ra như sau:
Khách hàng: Này, đơn hàng của tôi đâu rồi?
Bot: Xin chào! Tôi rất sẵn lòng kiểm tra đơn hàng giúp bạn. Bạn có thể chia sẻ số đơn hàng với tôi không?
Khách hàng: Là ORD-78234
Bot: Để tôi tra cứu giúp bạn…
Đơn hàng ORD-78234 của bạn đã được gửi đi và đang trên đường đến! Ngày giao hàng dự kiến là ngày 10 tháng 3. Bạn có thể theo dõi gói hàng của mình tại đây: https://tracking.example.com/1Z999AA1
Tôi có thể giúp gì thêm cho bạn không?
Ví dụ hoàn chỉnh: Trạng thái đơn hàng Shopify
Nếu cửa hàng chạy trên Shopify, bạn không cần nhà phát triển để xây dựng điểm cuối tra cứu — hệ thống của chính Shopify có thể trả lời trực tiếp các câu hỏi về đơn hàng. (Đối với các câu hỏi về sản phẩm và kho hàng trên cửa hàng Shopify, bạn hoàn toàn không cần hàm tùy chỉnh: hãy kết nối máy chủ tích hợp sẵn của cửa hàng thay thế — xem Kết nối cửa hàng Shopify.)
Trước tiên, hãy tạo một mã truy cập (access token) trong Shopify. Shopify đã thay đổi điều này trong năm 2026: các ứng dụng không còn có thể được tạo bên trong trang quản trị Shopify nữa, và màn hình ứng dụng mới sẽ cung cấp cho bạn Client ID và Client secret thay vì một mã token có sẵn. Các bước dưới đây sẽ chuyển đổi chúng thành một mã token vĩnh viễn. Hãy dành khoảng mười phút, thực hiện một lần cho mỗi cửa hàng. (Nếu cửa hàng đã có một ứng dụng cũ được tạo theo cách cũ, mã token hiện tại của nó vẫn sẽ tiếp tục hoạt động — hãy bỏ qua và chuyển thẳng đến hàm tùy chỉnh bên dưới.)
- Truy cập Bảng điều khiển dành cho nhà phát triển Shopify tại dev.shopify.com, mở tổ chức của bạn và nhấp vào Ứng dụng → Tạo ứng dụng. Đặt tên cho ứng dụng, ví dụ như
Order lookup. - Cấp cho ứng dụng quyền read_orders, phát hành phiên bản và cài đặt ứng dụng trên cửa hàng.
- Mở Cài đặt của ứng dụng và thêm địa chỉ web của cửa hàng (ví dụ:
https://www.yourstore.com/) vào các URL chuyển hướng được phép. Lưu lại. - Vẫn trong Cài đặt, sao chép ID khách hàng và Mã bí mật khách hàng.
- Trong trình duyệt mà bạn đã đăng nhập vào quản trị viên Shopify của cửa hàng đó, hãy mở địa chỉ bên dưới, thay thế tên cửa hàng, ID khách hàng và địa chỉ chuyển hướng bằng thông tin của riêng bạn:
https://YOUR-STORE.myshopify.com/admin/oauth/authorize?client_id=YOUR-CLIENT-ID&scope=read_orders&redirect_uri=https://www.yourstore.com/&state=12345Phê duyệt màn hình xuất hiện. Trình duyệt sẽ chuyển đến địa chỉ chuyển hướng của bạn và thanh địa chỉ bây giờ chứacode=theo sau là một giá trị dài — hãy sao chép giá trị đó. Nó chỉ có hiệu lực trong vài phút, vì vậy hãy chuyển ngay sang bước tiếp theo. - Đổi mã đó lấy mã thông báo, bạn có thể thực hiện việc này bên trong Your AI Connector. Trong trình tạo hàm tùy chỉnh, đặt Phương thức thành POST và URL thành
https://YOUR-STORE.myshopify.com/admin/oauth/access_token, thêm ba tham số đầu vào văn bản có tênclient_id,client_secretvàcode, sau đó nhấp vào Kiểm tra, điền ba giá trị và chạy nó. Phản hồi chứaaccess_token— đó là mã thông báo vĩnh viễn của bạn. Sao chép nó vào nơi an toàn, sau đó xóa trình tạo và thiết lập hàm thực tế bên dưới.
Sau đó thiết lập hàm tùy chỉnh:
Thông tin cơ bản:
- Tên:
check_shopify_order - Mô tả: “Tra cứu đơn hàng trong hệ thống Shopify của cửa hàng và trả về trạng thái, thông tin theo dõi và các mặt hàng”
- Hành động AI: “Gọi hàm này khi khách hàng hỏi về trạng thái đơn hàng hoặc việc giao hàng. Luôn yêu cầu cung cấp số đơn hàng trước.”
Kết nối:
- URL:
https://YOUR-STORE.myshopify.com/admin/api/2026-01/orders.json?status=any— thay thếYOUR-STOREbằng tên.myshopify.comcủa cửa hàng (địa chỉ này sử dụng tên miền kỹ thuật của Shopify, không phải tên miền tùy chỉnh của cửa hàng) - Phương thức: GET
Tiêu đề (Headers):
X-Shopify-Access-Token:shpat_...(mã truy cập từ bước trên)
Tham số đầu vào:
name(query_param, bắt buộc): “Số đơn hàng của khách hàng chính xác như hiển thị trong xác nhận đơn hàng của họ, bao gồm cả dấu # — ví dụ: #1001. Hãy hỏi khách hàng nếu họ chưa đề cập đến số này.”
Không cần ánh xạ phản hồi — bot sẽ đọc đơn hàng được trả về (trạng thái thanh toán, trạng thái hoàn tất, thông tin theo dõi, các mặt hàng) và trả lời một cách tự nhiên.
Điều cần biết: mã truy cập được tạo theo cách này có thể xem các đơn hàng trong 60 ngày qua — đủ cho các câu hỏi hỗ trợ hàng ngày, nhưng không phải là toàn bộ lịch sử đơn hàng.
Ví dụ hoàn chỉnh: Đặt lịch hẹn
Thông tin cơ bản:
- Tên:
create_booking - Mô tả: “Tạo một cuộc hẹn mới trong hệ thống đặt lịch của chúng tôi”
- Hành động AI: “Sử dụng hàm này sau khi xác nhận ngày, giờ và chi tiết liên hệ với khách hàng. Không gọi hàm cho đến khi khách hàng xác nhận rõ ràng rằng họ muốn đặt lịch.”
Kết nối:
- URL:
https://booking.mycompany.com/api/appointments - Phương thức: POST
Tham số đầu vào:
date(văn bản, bắt buộc): “Ngày hẹn theo định dạng YYYY-MM-DD”time(văn bản, bắt buộc): “Giờ hẹn theo định dạng HH:MM”name(văn bản, bắt buộc): “Họ và tên khách hàng”phone(văn bản, bắt buộc): “Số điện thoại khách hàng”service_type(văn bản, bắt buộc): “Loại dịch vụ được đặt”
Ví dụ hoàn chỉnh: Thêm người đăng ký bản tin vào CRM của bạn
Một mô hình rất phổ biến: bot trả lời xong, đề nghị người dùng đăng ký bản tin, liên hệ trả lời bằng địa chỉ email của họ và địa chỉ đó sẽ được gửi thẳng vào công cụ email của bạn. Hầu hết các CRM (FluentCRM, ActiveCampaign, MailerLite, Brevo và các công cụ khác) đều chấp nhận một yêu cầu POST đơn giản cho việc này, vì vậy không cần nền tảng tự động hóa trung gian.
Ví dụ này sử dụng FluentCRM trên WordPress. Cấu trúc này cũng tương tự cho bất kỳ công cụ nào cung cấp cho bạn “webhook đầu vào” hoặc điểm cuối “tạo người đăng ký”.
Trước tiên, hãy lấy URL từ CRM của bạn. Trong WordPress, mở FluentCRM → Settings → Incoming Webhooks và tạo một webhook. Chọn danh sách, thẻ và trạng thái đăng ký mà các liên hệ mới sẽ nhận được, sau đó sao chép URL webhook mà nó tạo ra. Mọi thứ bạn thiết lập ở đây sẽ được áp dụng tự động, vì vậy bot chỉ cần gửi địa chỉ email.
Sau đó thiết lập hàm tùy chỉnh:
Thông tin cơ bản:
- Tên:
add_newsletter_subscriber - Mô tả: “Thêm một người vào danh sách bản tin của chúng tôi bằng địa chỉ email họ đã cung cấp trong cuộc trò chuyện”
- Hành động AI: “Sử dụng hành động này ngay khi liên hệ đồng ý đăng ký bản tin và cung cấp địa chỉ email của họ. Không gọi hành động này trước khi họ thực sự cung cấp địa chỉ và không gọi hai lần cho cùng một người.”
Kết nối:
- URL: URL webhook bạn đã sao chép từ CRM của mình
- Phương thức: POST
Tham số đầu vào:
email(chuỗi, bắt buộc): “Địa chỉ email mà liên hệ đã cung cấp trong cuộc trò chuyện”first_name(chuỗi, tùy chọn): “Tên của liên hệ, nếu họ đã đề cập đến”
Bỏ qua dữ liệu hệ thống: bật tùy chọn này on. CRM của bạn chỉ cần các trường ở trên và một payload gọn nhẹ hơn sẽ tránh được lỗi từ các công cụ từ chối các trường không mong đợi.
Ánh xạ phản hồi: không cần thiết ở đây. Không cần phản hồi gì để bot tiếp tục hoạt động.
Đừng quên bật hàm cho Tác nhân chạy cuộc hội thoại (xem Gán Hàm cho Tác nhân). Đây là lý do phổ biến nhất khiến một hàm được xây dựng chính xác không bao giờ kích hoạt.
Mẹo: bot cũng có một công cụ Cập nhật Email liên hệ tích hợp sẵn, giúp lưu địa chỉ vào hồ sơ liên hệ bên trong nền tảng. Công cụ này tách biệt với chức năng này và rất hữu ích khi dùng kèm — công cụ tích hợp giúp giữ cho hồ sơ liên hệ của riêng bạn đầy đủ, còn chức năng tùy chỉnh sẽ đẩy địa chỉ đó vào CRM của bạn.
Mẹo để có các hàm tùy chỉnh đáng tin cậy
-
Đảm bảo các yêu cầu lặp lại là an toàn. Nếu cùng một yêu cầu vô tình được gửi hai lần, nó không được tạo ra các bản ghi trùng lặp. Các sự cố mạng đôi khi có thể gây ra điều này.
-
Trả về thông báo lỗi rõ ràng. Nếu có sự cố xảy ra từ phía hệ thống của bạn, hãy trả về một thông báo lỗi mà con người có thể đọc được. Bot sẽ chuyển tiếp thông báo đó đến khách hàng một cách khéo léo.
-
Giữ thời gian phản hồi dưới 10 giây. Nếu hệ thống của bạn mất nhiều thời gian hơn, hãy cân nhắc việc gửi phản hồi xác nhận nhanh trước.
-
Xử lý thông tin xác thực hết hạn hoặc không hợp lệ. Nếu khóa API của bạn hết hạn, hãy đảm bảo thông báo lỗi rõ ràng để bot biết cần thông báo cho con người thay vì thử lại.
-
Viết mô tả chi tiết. AI sử dụng các mô tả của bạn để xác định thời điểm gọi hàm và cách trích xuất thông tin chính xác từ cuộc trò chuyện. Những mô tả mơ hồ sẽ dẫn đến sai sót.
-
Kiểm tra với các cuộc trò chuyện thực tế. Try Out rất tốt cho việc kiểm tra ban đầu, nhưng hãy theo dõi một vài cuộc trò chuyện trực tiếp đầu tiên để đảm bảo mọi thứ hoạt động với các truy vấn thực tế của khách hàng.
-
Lưu giữ nhật ký ở phía bạn. Hãy yêu cầu nhà phát triển của bạn ghi lại các yêu cầu đến từ ứng dụng để bạn có thể nhanh chóng gỡ lỗi mọi vấn đề.
-
Nếu tường lửa của bạn cần danh sách cho phép IP (allowlist), mọi lệnh gọi hàm tùy chỉnh (và mọi kiểm tra tiếp theo) đều được gửi từ một địa chỉ IPv4 cố định, địa chỉ này giống với địa chỉ mà các webhook của chúng tôi sử dụng; không có dải IP, không có IPv6, không xoay vòng. Hãy liên hệ với bộ phận hỗ trợ và chúng tôi sẽ cung cấp địa chỉ đó cho bạn. Hãy bật ký yêu cầu và kiểm tra chữ ký như một bước xác thực thực sự, đồng thời coi IP như một bộ lọc bổ sung.
-
Sử dụng URL cuối cùng công khai. URL hàm của bạn phải là một địa chỉ web (HTTP/HTTPS) công khai. Các địa chỉ nội bộ, localhost và mạng riêng tư sẽ bị từ chối vì lý do bảo mật, và nền tảng không tuân theo các chuyển hướng — hãy trỏ hàm trực tiếp đến URL cuối cùng, không trỏ đến URL chuyển hướng đến đó.
Các tác vụ chạy dài: nhận kết quả sau
Thông thường, một hàm tùy chỉnh phải phản hồi trong vòng 30 giây trong khi liên hệ chờ đợi câu trả lời. Một số tác vụ mất nhiều thời gian hơn thế: kết xuất video, chạy kiểm tra tín dụng, chờ đợi một người bên phía bạn phê duyệt điều gì đó. Đối với những tác vụ này, hãy bật Kết quả trả về sau (chạy dài). Lệnh gọi của AI khi đó chỉ bắt đầu tác vụ. Dịch vụ của bạn trả lời ngay lập tức, AI thông báo cho liên hệ rằng kết quả đang được xử lý và tiếp tục cuộc hội thoại, sau đó dịch vụ của bạn gửi kết quả đến liên kết gọi lại (callback link) bất cứ khi nào hoàn tất.
Khi nào nên sử dụng
Sử dụng tính năng này khi dịch vụ của bạn không thể phản hồi đáng tin cậy trong vòng 30 giây. Hãy tắt nó đối với các truy vấn nhanh (trạng thái đơn hàng, kiểm tra kho, giá cả): những truy vấn đó đơn giản hơn khi thực hiện dưới dạng lệnh gọi thông thường, vì AI sẽ trả lời với kết quả ngay trong cùng một phản hồi.
Các cài đặt trong trình chỉnh sửa
Bạn có thể tìm thấy các cài đặt này trong trình chỉnh sửa hàm tùy chỉnh, bên cạnh Bỏ qua dữ liệu hệ thống.
| Cài đặt | Chức năng |
|---|---|
| Kết quả trả về sau (chạy dài) | Chuyển hàm thành tín hiệu bắt đầu. Dịch vụ của bạn có 30 giây để trả lời lệnh gọi đầu tiên (bất kỳ trạng thái 2xx nào, phần nội dung sẽ bị bỏ qua), và sau đó có tối đa thời gian trong Chờ tối đa để gửi kết quả. |
| Khi kết quả đến | AI viết tin nhắn tiếp theo (mặc định): AI đọc kết quả và viết tin nhắn tiếp theo bằng giọng văn của chính nó, tuân theo Mục đích (Hành động AI) của hàm. Gửi văn bản nguyên trạng: văn bản bạn đăng sẽ được gửi đến liên hệ từng chữ một. |
| Chờ tối đa | Thời gian liên kết gọi lại vẫn còn hiệu lực, tính bằng giờ, từ 1 đến 168 (7 ngày). Mặc định là 24. |
Những gì dịch vụ của bạn nhận được
Khi bật nút chuyển đổi này, mọi lệnh gọi đều mang theo liên kết gọi lại ở ba nơi, ngoài tất cả những gì đã mô tả ở trên (các tham số đầu vào của bạn, khối system và các tiêu đề ký tên):
| Vị trí | Nội dung chứa |
|---|---|
Tiêu đề X-Callback-Url |
Liên kết gọi lại. |
Trường nội dung callback_url |
Liên kết tương tự, dành cho POST, PUT, PATCH và DELETE. Đối với GET và HEAD, đó là một tham số truy vấn có tên callback_url. |
system.callback_url và system.callback_expires_at |
Liên kết và thời điểm hết hạn (ngày và giờ theo chuẩn ISO 8601). Bị bỏ qua khi Bỏ qua dữ liệu hệ thống được bật. |
Liên kết này là duy nhất cho mỗi lệnh gọi, thuộc về liên hệ đó và lệnh gọi đó, chỉ hoạt động một lần và hết hạn sau thời gian Chờ tối đa. Bạn không cần khóa API để sử dụng nó: bản thân liên kết đó chính là quyền truy cập. Hãy coi nó như mật khẩu và không bao giờ ghi nó vào nhật ký công khai.
Gửi kết quả
Khi tác vụ hoàn tất, hãy gửi một POST đến liên kết gọi lại:
POST https://api.<your host>/v1/custom-functions/callback/d3f9...
Content-Type: application/json
{
"result": { "video_url": "https://cdn.example.com/spring-offer.mp4", "duration_seconds": 42 },
"message": "Your video is ready: https://cdn.example.com/spring-offer.mp4"
}
resultlà nội dung AI đọc. Nó có thể là văn bản hoặc một đối tượng JSON.messagelà tùy chọn. Với Gửi văn bản nguyên trạng, liên hệ sẽ nhận đượcmessagekhi bạn gửi một cái, nếu không thì làresultkhi đó là văn bản.media_urllà tùy chọn: một liên kếthttpstới tệp (hình ảnh, video, âm thanh hoặc tài liệu) mà liên hệ nhận được dưới dạng tệp đính kèm thực sự, không phải dưới dạng liên kết. Xem Gửi tệp bên dưới.- Bạn cũng có thể gửi nội dung văn bản thuần túy với
Content-Type: text/plain. Nó được xử lý nhưresult. - Nội dung có thể lên tới 64 KB.
Phản hồi của liên kết callback:
| Trạng thái | Nội dung | Ý nghĩa |
|---|---|---|
202 |
{"ok":true,"received":true} |
Kết quả đã được nhận. |
200 |
{"ok":true,"duplicate":true} |
Liên kết này đã nhận kết quả. Không có gì xảy ra lần thứ hai, vì vậy việc thử lại luôn an toàn. |
400 |
Nội dung không hợp lệ. | |
404 |
Liên kết không xác định. Hãy kiểm tra xem bạn đã sử dụng chính xác liên kết từ yêu cầu chưa. | |
410 |
Liên kết đã hết hạn. AI đã được thông báo rằng kết quả không bao giờ đến. | |
413 |
Nội dung lớn hơn 64 KB. | |
429 |
Hơn 20 bài đăng trong một phút tới cùng một liên kết. Hãy đợi và thử lại. |
Một ví dụ hoàn chỉnh: video mất ba phút để xử lý
- AI gọi hàm của bạn. Bạn nhận được (đã rút gọn):
POST https://api.example.com/render
X-Callback-Url: https://api.<your host>/v1/custom-functions/callback/d3f9...
Content-Type: application/json
{
"video_title": "Spring offer",
"callback_url": "https://api.<your host>/v1/custom-functions/callback/d3f9...",
"system": {
"contactId": "...",
"callback_url": "https://api.<your host>/v1/custom-functions/callback/d3f9...",
"callback_expires_at": "2026-10-20T19:15:00.000Z"
}
}
- Dịch vụ của bạn bắt đầu kết xuất và trả lời ngay lập tức:
{ "status": "started" }
- AI thông báo cho liên hệ rằng video đang được tạo và tiếp tục trò chuyện.
- Ba phút sau, dịch vụ của bạn đăng kết quả lên liên kết callback:
{ "result": { "video_url": "https://cdn.example.com/spring-offer.mp4", "duration_seconds": 42 } }
- AI viết tin nhắn tiếp theo bằng ngôn ngữ của riêng nó, ví dụ: “Video của bạn đã sẵn sàng: https://cdn.example.com/spring-offer.mp4”.
Bạn đang sử dụng Zapier hoặc Make? Hãy để webhook kích hoạt nhận cuộc gọi và thực hiện bước cuối cùng của luồng là POST tới callback_url từ dữ liệu kích hoạt.
Điều gì xảy ra trong cuộc trò chuyện
Kết quả được lưu trong cuộc hội thoại dưới dạng mục nhập hàm, vì vậy bạn sẽ thấy nó trong hộp thư đến giống như bất kỳ lệnh gọi hàm tùy chỉnh nào khác. Sau đó, tùy thuộc vào Khi kết quả đến, AI sẽ viết và gửi tin nhắn tiếp theo (việc này tốn một lượt trả lời của AI, giống như bất kỳ tin nhắn AI nào), hoặc văn bản của bạn được gửi nguyên trạng. Với Gửi văn bản nguyên trạng, trường message được gửi khi bạn bao gồm một trường, nếu không thì result được gửi khi đó là văn bản thuần túy; nếu bạn chỉ đăng một đối tượng mà không có văn bản, AI sẽ viết tin nhắn thay thế.
Nếu AI bị tắt đối với liên hệ đó khi kết quả đến (một thành viên trong nhóm đã tiếp quản, AI bị tạm dừng, tác nhân đã tắt hoặc hết tín dụng), kết quả vẫn được lưu trong cuộc hội thoại, nhưng không có tin nhắn nào được gửi đi. Nó cũng sẽ không được gửi sau đó khi AI được bật lại. Thành viên trong nhóm sẽ thấy kết quả trong cuộc trò chuyện và có thể sử dụng nó.
Trong tab Thử nghiệm của tác nhân, toàn bộ luồng cũng hoạt động: kết quả sẽ đến trong cuộc trò chuyện thử nghiệm.
Gửi tệp (video, hình ảnh, PDF)
Một kết quả là tệp, ví dụ như video mà dịch vụ của bạn đã kết xuất trong nền, sẽ đến tay liên hệ dưới dạng tệp đính kèm mà họ có thể mở trong cuộc trò chuyện, ở cả hai chế độ. Nền tảng tìm thấy tệp trong lệnh gọi lại (callback) của bạn như sau:
media_urltrong nội dung, khi bạn gửi một cái.- Nếu không, một trường tệp trên đối tượng
result:file_url,video_url,image_url,pdf_url,document_url,audio_url,attachment_urlhoặcdownload_url. - Nếu không, liên kết
httpsđầu tiên trong văn bản kết thúc bằng phần mở rộng tệp như.mp4,.jpg,.pnghoặc.pdf.
Với AI viết tin nhắn tiếp theo, AI sẽ viết văn bản và tệp được đính kèm vào tin nhắn đó (AI được yêu cầu không dán liên kết). Với Gửi văn bản nguyên trạng, message của bạn là chú thích của tệp đính kèm.
{
"result": { "status": "done", "title": "Spring offer" },
"message": "Your video is ready.",
"media_url": "https://cdn.example.com/spring-offer.mp4"
}
Các tệp có thể lên tới 16 MB và phải có thể truy cập được qua https. Mỗi kênh hỗ trợ các loại khác nhau: ví dụ, email và các kênh WhatsApp chấp nhận video, hình ảnh, âm thanh và tài liệu, SMS không hỗ trợ tệp. Khi một kênh không thể nhận tệp hoặc tệp quá lớn, liên hệ vẫn nhận được tin nhắn, với liên kết tới tệp được thêm vào cuối.
Khi kết quả không bao giờ đến
Nếu không có gì được đăng trước khi thời gian Chờ tối đa kết thúc, AI sẽ được thông báo rằng kết quả không bao giờ đến, để nó có thể thông báo cho liên hệ. Một mục nhập với mã APP-3103 sẽ xuất hiện trong Cài đặt → Nhật ký lỗi và bạn sẽ nhận được thông báo lỗi công cụ.
Tổng quan về các giới hạn
- Một kết quả cho mỗi liên kết callback. Các bài đăng sau đó tới cùng một liên kết sẽ được trả lời là trùng lặp và không thay đổi gì.
- Tối đa 64 KB cho mỗi kết quả.
- Một tệp cho mỗi kết quả, tối đa 16 MB, qua
https. - Tối đa 20 bài đăng mỗi phút cho một liên kết.
- Chờ tối đa từ 1 đến 168 giờ.
- Dịch vụ của bạn vẫn có 30 giây để trả lời cuộc gọi đầu tiên.
Xác minh một lệnh gọi thực sự đến từ chúng tôi
Bất kỳ ai biết URL hàm của bạn đều có thể gửi cho nó một yêu cầu giả mạo. Một chuỗi bí mật dài trong tiêu đề xác thực có thể hữu ích, nhưng nó là cùng một giá trị cho mọi lệnh gọi, vì vậy bất kỳ ai nhìn thấy một yêu cầu (trong nhật ký hoặc ảnh chụp màn hình) đều có thể sử dụng lại nó. Ký yêu cầu giải quyết vấn đề đó: mọi lệnh gọi đều mang một chữ ký mà chỉ người nắm giữ bí mật của bạn mới có thể tạo ra và chữ ký này sẽ hết hạn sau vài phút.
Việc ký là tùy chọn và mặc định bị tắt, đây là một cài đặt cho toàn bộ tài khoản của bạn: một chuỗi bí mật duy nhất dùng để ký mọi hàm tùy chỉnh.
Bật tính năng ký
- Mở Custom Functions.
- Bên dưới danh sách các hàm của bạn, hãy tìm thẻ Request signing và nhấp vào Turn on signing.
- Nhấp vào Show, sao chép chuỗi bí mật (bắt đầu bằng
whsec_) và lưu trữ nó trong hệ thống nhận các lệnh gọi. Hãy coi nó như một mật khẩu.
Từ cùng thẻ đó, bạn có thể sao chép lại chuỗi bí mật, Xoay vòng (Rotate) nó (chuỗi cũ sẽ ngừng hoạt động ngay lập tức) hoặc Tắt (Turn off) việc ký.
Những gì chúng tôi gửi
Khi tính năng ký được bật, mọi lệnh gọi mà hàm tùy chỉnh thực hiện sẽ mang theo hai tiêu đề bổ sung: các lệnh gọi của AI trong khi trò chuyện, các điều kiện gửi tiếp theo và nút Run Test trong trình chỉnh sửa.
| Tiêu đề | Ý nghĩa |
|---|---|
X-Webhook-Signature |
Chữ ký, ở định dạng v1=<hex>. |
X-Webhook-Timestamp |
Thời điểm chúng tôi gửi, dưới dạng dấu thời gian Unix tính bằng giây. |
Mọi lệnh gọi, dù có được ký hay không, cũng đều mang theo User-Agent: Custom-Function/1.0 trừ khi bạn tự thiết lập tiêu đề User-Agent của riêng mình.
Các tiêu đề và chữ ký hoạt động chính xác giống như webhook đã ký, vì vậy nếu bạn đã xác minh webhook của chúng tôi, cùng một mã đó cũng sẽ hoạt động ở đây. Chỉ có chuỗi bí mật là khác biệt.
Cách xác minh
Chữ ký là HMAC-SHA256 của chuỗi <timestamp>.<raw request body>, sử dụng chuỗi bí mật ký của bạn làm khóa. Hãy kiểm tra nó dựa trên phần thân thô (raw), chính xác là các byte bạn đã nhận được: việc phân tích cú pháp JSON và chuyển đổi nó trở lại thành văn bản có thể làm thay đổi các byte, và chữ ký sẽ không khớp.
Một hàm sử dụng GET (hoặc POST không có nội dung gửi đi) sẽ không có phần thân, vì vậy chuỗi được ký chỉ là <timestamp>. với phần thân trống. Chữ ký sau đó chứng minh lệnh gọi đến từ chúng tôi và là gần đây, nhưng nó không bao gồm chuỗi truy vấn.
Ví dụ cho Node.js:
const crypto = require("crypto");
function verify(rawBody, headers, secret) {
const timestamp = headers["x-webhook-timestamp"];
const signature = headers["x-webhook-signature"] || ""; // "v1=<hex>"
// Reject anything older than 5 minutes so a captured request can't be replayed later.
if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false;
const expected = crypto.createHmac("sha256", secret).update(`${timestamp}.${rawBody}`).digest("hex");
const received = signature.replace("v1=", "");
return received.length === expected.length && crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));
}
Ví dụ cho Python:
import hashlib, hmac, time
def verify(raw_body: bytes, headers, secret: str) -> bool:
timestamp = headers.get("X-Webhook-Timestamp", "")
signature = headers.get("X-Webhook-Signature", "").replace("v1=", "")
if not timestamp or abs(time.time() - int(timestamp)) > 300:
return False
expected = hmac.new(secret.encode(), f"{timestamp}.".encode() + raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(signature, expected)
Kiểm tra nó bằng Run Test trong trình chỉnh sửa: khi tính năng ký được bật, lệnh gọi kiểm tra được ký chính xác như một lệnh gọi trực tiếp, vì vậy một hàm vượt qua bài kiểm tra cũng sẽ vượt qua bước kiểm tra của bạn trong các cuộc trò chuyện thực tế.
Bạn đang sử dụng API? Cùng một chuỗi bí mật có thể được đọc, tạo hoặc xoay vòng và xóa bằng
GET,POSTvàDELETEtrên/v1/custom-functions/signing-secret.
Giới hạn thực thi
Mỗi hàm tùy chỉnh đều có phần Giới hạn thực thi tùy chọn ở cuối trình chỉnh sửa. Phần này kiểm soát tần suất AI có thể chạy hàm và liệu kết quả trước đó có thể được sử dụng lại hay không. Mọi thứ ở đây đều là tùy chọn — hãy để trống tất cả và hàm sẽ hoạt động chính xác như trước đây.
Hàm chỉ đọc. Hãy bật tùy chọn này nếu hàm của bạn chỉ đọc dữ liệu — như tra cứu cổ phiếu, kiểm tra giá, tìm kiếm trạng thái đơn hàng — và không bao giờ tạo hoặc thay đổi bất kỳ thứ gì. Khi một sự cố mạng tạm thời làm gián đoạn AI trong lúc đang phản hồi, nền tảng có thể thử lại lượt hội thoại một cách an toàn thay vì để khách hàng không nhận được câu trả lời. Chỉ bật tùy chọn này nếu hàm thực sự không bao giờ ghi bất kỳ dữ liệu nào: một hàm tạo bản ghi phải được tắt, để việc thử lại không bao giờ vô tình chạy hàm đó hai lần. Các hàm sử dụng phương thức GET được tự động coi là chỉ đọc, vì các yêu cầu GET chỉ nhằm mục đích tìm nạp dữ liệu; các hàm POST, PUT, PATCH và DELETE cần phải bật tùy chọn này.
Phục vụ kết quả đã lưu vào bộ nhớ đệm khi gọi lặp lại. Khi AI gọi lại hàm với cùng các đầu vào (ví dụ: khách hàng hỏi cùng một câu hỏi hai lần), kết quả trước đó sẽ được sử dụng lại thay vì gọi lại điểm cuối (endpoint) của bạn. Các kết quả đã lưu vào bộ nhớ đệm được giữ trong tối đa 24 giờ, và một lệnh gọi với các đầu vào khác nhau sẽ luôn được gửi đến điểm cuối của bạn như một lệnh gọi mới.
Số lần chạy tối đa mỗi cuộc hội thoại. Một giới hạn cứng về số lần hàm có thể chạy trong một cuộc hội thoại. Đặt thành 1 cho các hàm chỉ nên kích hoạt một lần mỗi cuộc trò chuyện — như tạo báo giá, kích hoạt cuộc gọi lại, bắt đầu tự động hóa. Khi đạt đến giới hạn, AI sẽ được thông báo rằng hàm đã chạy và được cung cấp kết quả gần đây nhất, vì vậy nó vẫn có thể trả lời khách hàng thay vì im lặng.
Số lần chạy tối đa mỗi khoảng thời gian. Một giới hạn tốc độ theo thời gian: ví dụ, tối đa 5 lần chạy trong vòng 60 phút. Hữu ích cho các hàm gọi các dịch vụ bên thứ ba trả phí hoặc kích hoạt các tự động hóa nặng hơn. Cả hai ô phải được điền cùng nhau (số lần chạy và khoảng thời gian tính bằng phút, tối đa 7 ngày).
Gửi đề nghị, hợp đồng hoặc hóa đơn trên LinkedIn. Khi AI trả lời trên LinkedIn, nó sẽ viết từ chính hộp thư đến của chủ tài khoản, vì vậy nó không nên gửi đề nghị, hợp đồng, báo giá, hóa đơn, liên kết thanh toán hoặc quyền truy cập thay mặt cho chủ sở hữu trừ khi chủ sở hữu yêu cầu. Với Tự động (mặc định), một chức năng có tên hoặc mô tả cho biết nó gửi một trong những thứ đó sẽ không được chạy trên LinkedIn: AI được thông báo rằng không có gì được gửi và cho người đó biết chủ sở hữu sẽ xử lý việc này. Chọn Được phép để cho phép chức năng chạy trên LinkedIn, hoặc Không bao giờ trên LinkedIn để chặn một chức năng mà kiểm tra tự động có thể bỏ sót. Các kênh khác không bị ảnh hưởng và không giống như các giới hạn ở trên, cài đặt này cũng áp dụng trong phần Thử nghiệm.
Một vài điều cần lưu ý:
- Các giới hạn chỉ tính các lần chạy thành công. Một lệnh gọi thất bại ở phía điểm cuối của bạn sẽ không làm tiêu tốn ngân sách giới hạn.
- Khi một lần chạy bị chặn bởi giới hạn, khách hàng sẽ không bao giờ bị bỏ rơi — AI sẽ được thông báo lý do và làm việc với thông tin mà nó đã có.
- Các giới hạn áp dụng ở mọi nơi hàm chạy: các cuộc trò chuyện thông thường trên mọi kênh và các hàm được quản lý bởi tự động hóa. Các cuộc hội thoại thử nghiệm trong phần Thử nghiệm (Try Out) không được tính và không bị giới hạn.
Các công cụ Bot tích hợp sẵn
Ngoài các hàm tùy chỉnh mà bạn tự xây dựng, nền tảng còn đi kèm với một thư viện các công cụ được xây dựng sẵn mà bot AI có thể sử dụng trong cuộc trò chuyện. Các công cụ này bao gồm những việc phổ biến nhất mà một bot cần làm — cảnh báo cho đồng đội, đặt lịch hẹn, gắn thẻ liên hệ, tìm kiếm trên trang web của bạn, lên lịch theo dõi, v.v. — vì vậy bạn không cần phải tự thiết lập từ đầu.
Bot sẽ quyết định thời điểm sử dụng từng công cụ dựa trên những gì đang diễn ra trong cuộc hội thoại và cách Agent của bạn được cấu hình. Hầu hết các công cụ này sẽ tự động bật khi tính năng liên quan được kích hoạt (ví dụ: các công cụ đặt lịch chỉ khả dụng sau khi bạn kết nối lịch và bật tính năng đặt lịch).
Chi phí tín dụng: Mỗi lệnh gọi công cụ được tính phí theo cấp độ Chất lượng AI của Tác nhân của bạn, và các hàm tùy chỉnh do bạn tự xây dựng cũng được tính phí theo cách tương tự:
| Cấp độ chất lượng AI | Tín dụng cho mỗi lần gọi công cụ | Khi kết nối với khóa Anthropic của riêng bạn (BYOK) |
|---|---|---|
| Pro | 1 tín dụng | 0 tín dụng — chạy bằng khóa của bạn |
| Economy (đã ngừng hỗ trợ) | 0.5 tín dụng | 0 tín dụng — chạy bằng khóa của bạn |
| Max | 0.25 tín dụng | vẫn là 0.25 tín dụng, vẫn bị tính phí ngay cả khi đã kết nối khóa của riêng bạn |
| Mini | 0.15 tín dụng | vẫn là 0.15 tín dụng, vẫn bị tính phí ngay cả khi đã kết nối khóa của riêng bạn |
Công cụ Nhóm & Tác vụ
| Công cụ | Chức năng | Khi nào Bot sử dụng |
|---|---|---|
| Alert a Team Member (Cảnh báo thành viên nhóm) | Tạm dừng bot cho liên hệ này và gửi email cho nhóm của bạn rằng cần có sự can thiệp của con người. Cuộc trò chuyện được gắn cờ để đồng nghiệp có thể tiếp nhận. | Khi khách hàng yêu cầu gặp người thật, cảm thấy thất vọng hoặc hỏi điều gì đó mà bot không được phép hoặc không thể trả lời. |
| Create a Task (Tạo tác vụ) | Tạo một tác vụ mới trên bảng tác vụ của bạn, tùy chọn liên kết với liên hệ và cuộc trò chuyện. Bot vẫn tiếp tục trả lời như bình thường — tác vụ chỉ là một ghi chú để nhóm của bạn theo dõi. | Đối với các mục không khẩn cấp như yêu cầu tính năng, cơ hội bán thêm hoặc cuộc gọi lại mà nhóm nên xử lý sau. |
| Suggest an FAQ Update (Đề xuất cập nhật FAQ) | Khi bot gặp câu hỏi không thể trả lời tốt, nó tạo một tác vụ yêu cầu nhóm của bạn thêm câu trả lời vào cơ sở kiến thức. | Khi một liên hệ hỏi điều gì đó không có trong các FAQ hiện có — để lỗ hổng kiến thức được khắc phục cho lần sau. |
| Add Context to an FAQ Suggestion (Thêm ngữ cảnh vào đề xuất FAQ) | Nếu một liên hệ khác sau đó hỏi một câu hỏi tương tự với góc độ khác, bot sẽ thêm ngữ cảnh đó vào đề xuất FAQ hiện có thay vì tạo tác vụ trùng lặp. | Tự động — giữ cho danh sách tác vụ của bạn gọn gàng khi nhiều người cùng nêu ra một lỗ hổng kiến thức. |
Công cụ Liên hệ
| Công cụ | Chức năng | Khi nào Bot sử dụng |
|---|---|---|
| Gắn thẻ | Chạy tự động sau mỗi lần bot trả lời — đây không phải là công cụ mà bot hướng tới khách hàng quyết định gọi. Hệ thống xem xét cuộc trò chuyện gần đây và áp dụng các thẻ liên quan, sử dụng lại các thẻ hiện có của bạn nếu có thể (và chỉ tạo thẻ mới khi cần). | Tự động — bất cứ khi nào cuộc trò chuyện tiết lộ điều gì đó đáng để phân đoạn, chẳng hạn như sự quan tâm, ý định, chất lượng khách hàng tiềm năng hoặc ngôn ngữ. |
| Cập nhật tên liên hệ | Lưu tên và/hoặc họ của liên hệ khi họ chia sẻ. | Khi khách hàng giới thiệu bản thân hoặc sửa lại tên. |
| Cập nhật email liên hệ | Lưu địa chỉ email của liên hệ khi họ chia sẻ. | Khi khách hàng cung cấp email — cho bản tin, biên lai, tra cứu tài khoản, v.v. |
Công cụ Đặt lịch & Hẹn giờ
Các công cụ này chỉ khả dụng khi tính năng đặt lịch được bật trên Agent của bạn và loại sự kiện lịch đã được cấu hình.
| Công cụ | Chức năng | Khi nào Bot sử dụng |
|---|---|---|
| Kiểm tra khung giờ trống | Tìm kiếm các khung giờ còn trống trong lịch đã kết nối của bạn cho một ngày hoặc khoảng thời gian cụ thể. | Khi khách hàng muốn đặt lịch và bot cần đưa ra các khung giờ khả dụng thực tế. |
| Đặt lịch hẹn | Tạo cuộc hẹn trong lịch của bạn và xác nhận việc đặt lịch cho khách hàng. | Sau khi khách hàng xác nhận ngày và giờ cụ thể. |
| Dời lịch hẹn | Thay đổi lịch hẹn hiện có sang ngày và giờ mới. | Khi khách hàng yêu cầu dời lịch. |
| Hủy lịch hẹn | Hủy một cuộc hẹn đã có. | Khi khách hàng yêu cầu hủy. |
| Tra cứu lịch hẹn | Truy xuất các cuộc hẹn hiện có của liên hệ để bot biết những gì đã được đặt. | Khi khách hàng hỏi “lịch hẹn của tôi là khi nào?” hoặc trước khi đề nghị dời lịch. |
Công cụ Kiến thức & Web
| Công cụ | Chức năng | Khi nào Bot sử dụng |
|---|---|---|
| Tìm kiếm trên trang web của bạn | Quét các URL bạn đã thêm vào danh sách URL động của Agent để tìm trang sản phẩm, bài viết hoặc nội dung khác trả lời câu hỏi của khách hàng. Chỉ khả dụng khi AI Web Search được bật và bạn đã thêm ít nhất một URL động. Nếu AI Web Search bị tắt, bot không thể đọc các trang hoặc liên kết — ngay cả những liên kết mà khách hàng dán vào cuộc trò chuyện. | Khi khách hàng hỏi về điều gì đó có khả năng nằm trên trang web của bạn — sản phẩm, giá cả, địa điểm, chính sách. |
| Kiểm tra liên kết | Đọc nội dung của một URL cụ thể để bot có thể trả lời các câu hỏi về trang đó. Chỉ khả dụng khi AI Web Search được bật và bạn đã thêm ít nhất một URL động. Nếu AI Web Search bị tắt, bot không thể đọc các trang hoặc liên kết — ngay cả những liên kết mà khách hàng dán vào cuộc trò chuyện. | Khi khách hàng chia sẻ một liên kết hoặc hỏi về một trang cụ thể trên trang web của bạn. |
| Tìm kiếm trên web | Chạy tìm kiếm Google công khai và trả về các kết quả hàng đầu để bot có thể trả lời các câu hỏi nằm ngoài nội dung của bạn. | Khi khách hàng hỏi về điều gì đó chung chung (ví dụ: chỉ đường, thông tin công cộng) không có trong cơ sở kiến thức của bạn. Chỉ được sử dụng nếu tìm kiếm web được bật. |
Công cụ Theo dõi (Follow-Up)
Các công cụ này yêu cầu tính năng theo dõi (follow-ups) phải được bật trên Agent của bạn.
| Công cụ | Chức năng | Khi nào Bot sử dụng |
|---|---|---|
| Lên lịch Theo dõi Thông minh | Lên lịch tin nhắn theo dõi thông minh bằng chuỗi theo dõi của bạn — chọn mẫu và thời điểm phù hợp dựa trên cuộc trò chuyện. | Khi khách hàng im lặng hoặc yêu cầu bot “kiểm tra lại sau”. |
| Lên lịch Theo dõi | Lên lịch theo dõi cơ bản vào một thời điểm cụ thể. | Khi bot cần thúc đẩy cuộc trò chuyện tiến triển vào một thời điểm xác định. |
Trình chạy Hàm tùy chỉnh
| Công cụ | Chức năng | Khi nào Bot sử dụng công cụ này |
|---|---|---|
| Chạy hàm tùy chỉnh | Thực thi một trong các hàm tùy chỉnh mà bạn đã xây dựng và gán cho Tác nhân (xem phần còn lại của trang này). | Khi yêu cầu của khách hàng khớp với mục đích của một trong các hàm tùy chỉnh của bạn. |
| Gửi tệp từ kết quả công cụ | Gửi hình ảnh, video, tệp âm thanh hoặc tài liệu có liên kết được trả về từ một trong các hàm tùy chỉnh hoặc máy chủ MCP của bạn dưới dạng tệp đính kèm thực tế, thay vì chỉ dán liên kết. Tính năng này khả dụng khi tác nhân có ít nhất một hàm tùy chỉnh hoặc máy chủ MCP. | Khi kết quả công cụ chứa tệp mà liên hệ yêu cầu xem. Xem Tệp từ các công cụ của riêng bạn. |
Công cụ Đặt chỗ Nhà hàng (Zenchef và Formitable)
Các công cụ này chỉ khả dụng khi tích hợp Zenchef hoặc Formitable được kết nối. Chúng cho phép bot quản lý việc đặt bàn tại nhà hàng từ đầu đến cuối.
| Công cụ | Chức năng | Khi nào Bot sử dụng |
|---|---|---|
| Kiểm tra tình trạng sẵn sàng của nhà hàng | Tìm kiếm các khung giờ đặt bàn trống cho một ngày, số lượng khách và (tùy chọn) khu vực ngồi. | Khi khách hàng yêu cầu đặt bàn. |
| Tạo đặt chỗ nhà hàng | Tạo một đặt chỗ mới. | Sau khi khách hàng xác nhận một khung giờ cụ thể. |
| Cập nhật đặt chỗ nhà hàng | Thay đổi ngày, giờ, số lượng khách hoặc ghi chú trên một đặt chỗ hiện có. | Khi khách hàng yêu cầu sửa đổi đặt chỗ của họ. |
| Hủy hoặc thay đổi trạng thái đặt chỗ | Hủy đặt chỗ hoặc cập nhật trạng thái của nó (ví dụ: đã xác nhận, không đến). | Khi khách hàng hủy hoặc khi bot cần đánh dấu thay đổi trạng thái. |
| Tìm kiếm đặt chỗ | Tìm các đặt chỗ hiện có khớp với các tiêu chí như tên, email hoặc ngày tháng. | Khi khách hàng cũ hỏi về một đặt chỗ hiện có. |
| Cập nhật hồ sơ khách hàng | Cập nhật hồ sơ của khách hàng trong hệ thống nhà hàng (sở thích, ghi chú, thông tin liên hệ). | Khi khách hàng chia sẻ sở thích ăn uống, số điện thoại mới hoặc thông tin cấp hồ sơ khác. |
| Liệt kê sản phẩm nhà hàng | Lấy danh sách thực đơn, thực đơn theo set hoặc các món bổ sung có sẵn để đặt trước. | Khi khách hàng hỏi “bạn có những thực đơn set nào?” hoặc bot cần đính kèm thực đơn vào đặt chỗ. |
Bật và Tắt Công cụ
Hầu hết các công cụ được kiểm soát trên tab AI Abilities của Agent:
- Công cụ đặt lịch bật khi bạn kích hoạt đặt lịch và kết nối lịch, trong thẻ Bookings trên cùng tab AI Abilities
- Công cụ theo dõi (Follow-up) bật khi bạn kích hoạt tính năng theo dõi
- Công cụ nhà hàng bật khi bạn kết nối tài khoản Zenchef hoặc Formitable
- Tìm kiếm web có nút bật/tắt riêng trên tab FAQs & Knowledge
- Công cụ tác vụ (Task) có thể được tắt cho từng Agent bằng nút Cho phép AI tạo tác vụ (Allow AI to create tasks) (mặc định là bật; công tắc Tác vụ toàn tài khoản trong Cài đặt → Hồ sơ → Tính năng sẽ tắt toàn bộ hệ thống tác vụ ở mọi nơi)
- Công cụ cập nhật liên hệ được kiểm soát trên cùng tab AI Abilities — quyết định liệu AI có được phép đổi tên liên hệ hoặc lưu thêm thông tin thu thập được vào liên hệ đó hay không
- Công cụ cảnh báo luôn khả dụng; gắn thẻ (tagging) chạy tự động sau mỗi phản hồi của bot (đây không phải là công cụ mà bot chọn để gọi)
Nếu bạn muốn bot ngừng sử dụng một công cụ tích hợp cụ thể, cách sạch nhất là vô hiệu hóa tính năng cơ bản (ví dụ: tắt đặt chỗ để vô hiệu hóa tất cả các công cụ đặt chỗ).
Các hàm được quản lý bởi tự động hóa
Một số mục trên trang Hàm tùy chỉnh của bạn có thể mang huy hiệu Được quản lý bởi tự động hóa. Những mục đó không được tạo tại đây — chúng đến từ một quy trình tự động hóa với trình kích hoạt Hàm AI Agent, cung cấp cho tác nhân của bạn một khả năng mà các bước thực hiện được bạn xây dựng trực quan trên bảng vẽ tự động hóa thay vì trỏ đến một địa chỉ web bên ngoài.
Một hàm được quản lý sẽ được chăm sóc giúp bạn: tên, mô tả và các trường của nó luôn tuân theo những gì được thiết lập trên trình kích hoạt của tự động hóa, vì vậy nó không thể bị chỉnh sửa hoặc xóa khỏi trang này — hãy sử dụng liên kết Mở tự động hóa của nó và thay đổi chính tự động hóa đó. Tuy nhiên, bạn vẫn có thể chọn tác nhân nào có hàm này theo cách thông thường: trên tab Khả năng AI của tác nhân, nó xuất hiện cùng với các khả năng khác của tác nhân với nút bật/tắt thông thường (nếu tự động hóa của nó bị tạm dừng, hàng đó sẽ hiển thị thông báo — khả năng này sẽ hoạt động khi tự động hóa được bật). Mọi thứ khác về nó đều hoạt động giống như bất kỳ hàm tùy chỉnh nào khác: AI quyết định khi nào cần gọi hàm, thu thập các chi tiết bạn đã xác định và có thể sử dụng phản hồi của tự động hóa trong cùng một cuộc trò chuyện.
Nếu bạn đang phân vân giữa hai lựa chọn: hãy trỏ một hàm tùy chỉnh thông thường vào một hệ thống đã có địa chỉ để gọi; hãy xây dựng một quy trình tự động hóa với trình kích hoạt Hàm Tác nhân AI (AI Agent Function) khi công việc là thứ bạn muốn lắp ghép từ các bước — tra cứu thông tin trong bảng tính hoặc cơ sở dữ liệu, phân nhánh dựa trên điều kiện, tạo bản ghi — mà không cần phải tự chạy máy chủ. Xem Tự động hóa.
Yêu cầu về gói dịch vụ
Các hàm tùy chỉnh khả dụng trên các gói bao gồm tính năng hàm tùy chỉnh. Hãy kiểm tra gói đăng ký của bạn để xác nhận tính khả dụng.
Các bước tiếp theo
- Kết nối Máy chủ MCP với Bot của bạn — một gói công cụ có sẵn thay vì từng hàm một.
- Tác nhân AI — trang chính của nhóm AI Studio nơi chứa các Hàm Tùy chỉnh, và là nơi các hàm tùy chỉnh được gán cho bot.