Cách hoạt động
- Bạn định nghĩa công cụ bằng một schema (các đối số mà công cụ chấp nhận)
- Bạn cung cấp cấu hình
endpoint(nơi ThunderPhone gọi API của bạn) — hoặc bỏ qua để nhận lệnh gọi công cụ trên webhook của tổ chức - Trong cuộc gọi, tác nhân AI quyết định thời điểm sử dụng công cụ dựa trên cuộc trò chuyện
- ThunderPhone gọi endpoint của bạn với các đối số của công cụ
- Phản hồi API của bạn được gửi lại cho tác nhân AI để tiếp tục cuộc trò chuyện
Công cụ hàm là phương thức tự cung cấp API. ThunderPhone cũng
cung cấp các công cụ do nền tảng quản lý, không cần endpoint:
kết nối ứng dụng (HubSpot, Salesforce, Slack,
Google Calendar, Google Sheets, Cal.com),
kết nối API và
máy chủ MCP.
Schema công cụ
Mỗi công cụ tuân theo cấu trúc này:Định nghĩa hàm
Cấu hình endpoint
Cấu hình
endpoint không được gửi đến mô hình AI — cấu hình này chỉ được ThunderPhone sử dụng để thực thi lệnh gọi công cụ.Hai phương thức gọi
Yêu cầu mà máy chủ của bạn nhận được phụ thuộc vào việc công cụ cóendpoint hay không:
Cả hai phương thức đều chặn — tác nhân AI đang chờ kết quả giữa
câu nói — với thời gian chờ 20 giây. Giữ handler xử lý nhanh. Bạn có thể
kết hợp cả hai: trong cuộc gọi mà tổ chức có URL webhook, các công cụ có
endpoint
được gọi trực tiếp và các công cụ còn lại sẽ dự phòng về webhook.
Lệnh gọi endpoint trực tiếp
Khi tác nhân AI gọi một công cụ cóendpoint, ThunderPhone sẽ gửi
một yêu cầu đến URL của bạn:
Header yêu cầu
endpoint.headers của bạn luôn được bao gồm
nguyên văn, cùng với hai header trong không gian tên ThunderPhone:
X-ThunderPhone-Signature— HMAC-SHA256 của chính xác các byte trong phần thân yêu cầu, sử dụng secret webhook của tổ chức làm khóaX-ThunderPhone-Call-ID— ID cuộc gọi hiện tại
Content-Type: application/json được đặt trừ khi endpoint.headers
của bạn ghi đè — Content-Type tùy chỉnh sẽ được ưu tiên.
Phần thân yêu cầu
VớiPOST / PUT / PATCH, phần thân chỉ chứa các đối số của
công cụ (không có wrapper), được tuần tự hóa theo chuẩn (khóa được sắp
xếp, dấu phân cách gọn):
GET / DELETE, các đối số được gửi dưới dạng tham số truy vấn
và phần thân để trống — khi đó chữ ký được tính trên chuỗi byte trống.
Xem
Xác minh chữ ký webhook.
Phản hồi
Trả về phản hồi JSON chứa kết quả công cụ:{"data": "<text>"};
hết thời gian chờ và lỗi kết nối được báo cho AI dưới dạng lỗi, để
tác nhân có thể xin lỗi và tiếp tục thay vì bị treo.
Điều phối ở chế độ webhook
Các công cụ không cóendpoint được điều phối đến URL webhook cũ
của tổ chức bạn dưới dạng yêu cầu telephony.tool (cuộc gọi điện thoại)
hoặc web.tool (cuộc gọi web) có chữ ký. Không giống các thông báo kiểm
toán được gửi đến endpoint webhook sau khi thực thi,
yêu cầu này chính là quá trình thực thi — phản hồi HTTP của bạn là
kết quả công cụ.
web.tool mang origin_domain thay cho from_number /
to_number. Phản hồi bằng kết quả công cụ dưới dạng JSON — cùng hợp
đồng phản hồi như các lệnh gọi endpoint trực tiếp. Yêu cầu được ký bằng
secret webhook của tổ chức trên phần thân thô, như mọi webhook khác.
Các endpoint webhook đã đăng ký cũng nhận được
một thông báo
telephony.tool / web.tool không chặn sau khi
mỗi công cụ thực thi (bất kể đường dẫn nào đã chạy công cụ), bao gồm
phản hồi của công cụ — hữu ích cho nhật ký kiểm toán. Xem
danh mục sự kiện.Xác minh chữ ký
Lệnh gọi công cụ trực tiếp được ký giống như webhook:- HMAC-SHA256 trên chính xác các byte của phần thân yêu cầu (JSON chuẩn — khóa được sắp xếp, không có khoảng trắng thừa)
- Dùng secret webhook của tổ chức bạn làm khóa
- Công cụ
GET/DELETEký chuỗi byte rỗng
Ví dụ: Quy trình đặt lịch hoàn chỉnh
Dưới đây là bộ công cụ cho hệ thống đặt lịch hẹn hoàn chỉnh:Thực hành tốt nhất
Viết mô tả rõ ràng
Viết mô tả rõ ràng
Trường
description giúp tác nhân AI hiểu khi nào nên sử dụng công cụ. Hãy nêu cụ thể công cụ làm gì và khi nào phù hợp để sử dụng.Xử lý lỗi hợp lý
Xử lý lỗi hợp lý
Trả về thông báo lỗi mà tác nhân AI có thể hiểu:
{"error": "No slots available for that date"} thay vì lỗi 500 chung chung.Giữ phản hồi ngắn gọn
Giữ phản hồi ngắn gọn
Chỉ trả về những gì tác nhân AI cần để tiếp tục cuộc hội thoại. Payload lớn làm chậm thời gian phản hồi.
Sử dụng trường bắt buộc một cách hợp lý
Sử dụng trường bắt buộc một cách hợp lý
Chỉ đánh dấu trường là
required khi thực sự cần thiết. Tác nhân AI sẽ hỏi người dùng thông tin bắt buộc trước khi gọi công cụ.Liên quan
Kết nối ứng dụng
Công cụ do nền tảng quản lý dành cho HubSpot, Salesforce, Slack, Google
Calendar, Google Sheets và Cal.com — không cần endpoint.
Máy chủ MCP
Gắn máy chủ MCP và để tác nhân AI gọi các công cụ của máy chủ.
Kết nối API
Tích hợp REST có thể tái sử dụng mà bạn có thể gắn vào tác nhân AI.
Xác minh chữ ký webhook
Một trình hỗ trợ xác minh cho webhook và lệnh gọi công cụ.