Thẻ kết quả
Cho công cụ MCP hoặc connector cục bộ trả về một thẻ có tiêu đề, vài dòng thông tin, ảnh và tối đa hai nút, hiển thị ngay trong cuộc trò chuyện.
Một công cụ của máy chủ MCP hoặc connector cục bộ có thể đính kèm một thẻ vào kết quả của nó. Trợ lý vẫn đọc phần văn bản của kết quả để trả lời, còn người dùng thấy thẻ ngay dưới bước gọi công cụ: ví dụ một đơn hàng với trạng thái, tổng tiền và nút theo dõi.
Người dùng thấy gì
| Nơi dùng | Hiển thị |
|---|---|
| Ứng dụng Web | Thẻ đầy đủ: biểu tượng, tiêu đề, phụ đề, đoạn văn, các dòng thông tin, ảnh và nút |
| Widget web | Thẻ đầy đủ, như Ứng dụng Web |
| Kênh nhắn tin | Văn bản dự phòng của thẻ, kèm các nút mở liên kết dưới dạng Nhãn: URL, gửi sau câu trả lời |
| Voice | Trợ lý đọc kết quả; thẻ vẫn xuất hiện trong lịch sử trò chuyện |
| API cho nhà phát triển | Thẻ được gửi nguyên trong sự kiện tool_end để ứng dụng của bạn tự vẽ |
Nút mở liên kết mở trang trong tab mới. Nút gửi tin nhắn gửi một câu có sẵn thành tin nhắn tiếp theo của người dùng, ví dụ "Huỷ đơn 1042", để trợ lý xử lý tiếp. Khi có thẻ, trợ lý được nhắc không lặp lại nội dung thẻ trong câu trả lời.
Khai báo thẻ
Thêm _meta.assistant_platform.card vào kết quả tools/call:
{
"content": [{ "type": "text", "text": "Đơn 1042 đã giao cho đơn vị vận chuyển, dự kiến đến thứ Sáu." }],
"_meta": {
"assistant_platform": {
"card": {
"v": 1,
"title": "Đơn hàng #1042",
"subtitle": "Đang giao",
"text": "Dự kiến đến thứ Sáu.",
"icon_url": "https://shop.example.com/icon.png",
"image_url": "https://shop.example.com/o/1042.jpg",
"fields": [
{ "label": "Tổng", "value": "1.250.000 ₫" },
{ "label": "Vận chuyển", "value": "GHN" }
],
"actions": [
{ "kind": "url", "label": "Theo dõi", "url": "https://shop.example.com/o/1042" },
{ "kind": "message", "label": "Huỷ đơn", "text": "Huỷ đơn 1042" }
],
"fallback_text": "Đơn #1042 đang giao, dự kiến đến thứ Sáu. Tổng 1.250.000 ₫."
}
}
}
}| Trường | Bắt buộc | Giới hạn |
|---|---|---|
v | Không | Phiên bản thẻ, hiện là 1 |
title | Có | 80 ký tự |
subtitle | Không | 160 ký tự |
text | Không | 300 ký tự, giữ xuống dòng |
icon_url, image_url | Không | URL https |
fields | Không | Tối đa 4 dòng; label 40 ký tự, value 120 ký tự |
actions | Không | Tối đa 2 nút; label 30 ký tự. kind là url kèm url, hoặc message kèm text (200 ký tự) |
fallback_text | Có | 500 ký tự, giữ xuống dòng. Hiển thị ở nơi không vẽ được thẻ |
Mọi trường đều là văn bản thuần, không có Markdown hay HTML. Nút đầu tiên là nút chính. Trường lạ bị bỏ qua, nên thẻ cũ vẫn hiển thị khi có phiên bản mới.
Khi thẻ không hợp lệ
Thẻ sai giới hạn, thiếu fallback_text hoặc dùng URL không phải https bị bỏ qua hoàn toàn, còn phần văn bản của kết quả vẫn đến trợ lý nên câu trả lời không bị ảnh hưởng. Thẻ không cần duyệt lại khi thay đổi, vì nó là một phần của kết quả chứ không phải định nghĩa công cụ.
Giữ mỗi thẻ cho một việc: một đơn hàng, một lịch hẹn, một kết quả. Với nhiều mục, hãy để trợ lý trả lời bằng văn bản và chỉ trả thẻ cho mục người dùng hỏi.
Cập nhật lần cuối