Assistant Core

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ùngHiển thị
Ứng dụng WebThẻ đầy đủ: biểu tượng, tiêu đề, phụ đề, đoạn văn, các dòng thông tin, ảnh và nút
Widget webThẻ đầy đủ, như Ứng dụng Web
Kênh nhắn tinVă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
VoiceTrợ 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ểnThẻ đượ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ườngBắt buộcGiới hạn
vKhôngPhiên bản thẻ, hiện là 1
titleCó80 ký tự
subtitleKhông160 ký tự
textKhông300 ký tự, giữ xuống dòng
icon_url, image_urlKhôngURL https
fieldsKhôngTối đa 4 dòng; label 40 ký tự, value 120 ký tự
actionsKhôngTố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_textCó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

Trên trang này