Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Trang này giải thích sự khác biệt giữa tin nhắn văn bản và tin nhắn dạng thẻ.
Khi các ứng dụng Chat gửi tin nhắn văn bản để truyền tải thông tin cơ bản, các tin nhắn sẽ xuất hiện ở dạng nội tuyến, giống như cách mọi người viết tin nhắn trong Google Chat. Để tạo tin nhắn có chứa nhiều nội dung hơn văn bản hoặc để tạo tin nhắn mà người dùng có thể tương tác, các ứng dụng Chat có thể sử dụng thẻ.
Các ứng dụng trò chuyện cũng có thể thêm thẻ vào tin nhắn văn bản. Để nhắc người dùng hoàn tất các quy trình nhiều bước (chẳng hạn như hoàn tất biểu mẫu), các ứng dụng Chat cũng có thể tạo thẻ mở trong một cửa sổ mới dưới dạng hộp thoại.
Cấu trúc của tin nhắn văn bản
Trong Google Chat API, tin nhắn được biểu thị dưới dạng các đối tượng JSON. Trong một thông báo, thông báo văn bản được biểu thị dưới dạng một đối tượng text.
Trong ví dụ sau, một ứng dụng Chat sẽ tạo tin nhắn văn bản trong một không gian cho một nhóm nhà phát triển phần mềm rằng thời gian ngừng phát hành mã nguồn đang đến gần:
{"text":"Attention <users/all>: Code freeze starts at `11:59 am` Pacific Standard Time! If you need a little more time, type `/moreTime` and I'll push the code freeze back one hour."}
JSON trả về thông báo sau:
Phân tích thành phần của thông báo dạng thẻ
Trong Google Chat API, tin nhắn được biểu thị dưới dạng các đối tượng JSON. Trong một thông báo, thẻ được biểu thị dưới dạng một mảng cardsV2 và bao gồm những nội dung sau:
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-08-04 UTC."],[[["\u003cp\u003eGoogle Chat apps use text messages for basic information and cards for interactive elements or richer content.\u003c/p\u003e\n"],["\u003cp\u003eText messages appear inline within the chat, similar to regular user messages.\u003c/p\u003e\n"],["\u003cp\u003eCards provide a structured format to include images, buttons, and other interactive widgets within a message.\u003c/p\u003e\n"],["\u003cp\u003eCard messages are represented as JSON objects using the \u003ccode\u003ecardsV2\u003c/code\u003e field in the Google Chat API.\u003c/p\u003e\n"],["\u003cp\u003eThe Card Builder tool can be used to design and preview cards for Chat apps.\u003c/p\u003e\n"]]],["Chat apps use text messages for basic information, represented as JSON `text` objects. For richer content and user interaction, they use card messages. Card messages, represented by `cardsV2` JSON arrays, include a `cardId` and a `card` object. The `card` contains a `header`, `section`, and `widget` objects, enabling elements like titles, text, images, and buttons. Cards can also open as dialogs for multi-step processes, or be appended to a text message.\n"],null,["# Google Chat messages overview\n\nThis page explains the differences between text and card messages.\n\nWhen Chat apps send text messages to convey basic information,\nthe messages appear inline, just like how people in Google Chat write\nmessages. To create messages that contain more than text, or to create\nmessages that users can interact with, Chat apps can use\n[cards](/workspace/chat/create-messages#create).\nChat apps can also append a text message with a card. To\nprompt users to finish multi-step processes such as completing a form,\nChat apps can also create cards that open in a new window as\n[dialogs](/workspace/chat/dialogs).\n\nAnatomy of a text message\n-------------------------\n\nIn the Google Chat API, messages are represented as JSON objects. Within a message,\na text message is represented as a\n[`text`](/workspace/chat/api/reference/rest/v1/spaces.messages#Message.FIELDS.text)\nobject.\n\nIn the following\nexample, a Chat app creates a text message in a space\nfor a team of software developers that a code freeze is approaching: \n\n {\n \"text\": \"Attention \u003cusers/all\u003e: Code freeze starts at `11:59 am` Pacific Standard Time! If you need a little more time, type `/moreTime` and I'll push the code freeze back one hour.\"\n }\n\nThe JSON returns the following message:\n\nAnatomy of a card message\n-------------------------\n\nIn the Google Chat API, messages are represented as JSON objects. Within a message\na card is represented as a\n[`cardsV2`](/workspace/chat/api/reference/rest/v1/spaces.messages#Message.FIELDS.cards_v2)\narray and consists of the following:\n\n- One or more [`CardWithId` objects](/workspace/chat/api/reference/rest/v1/spaces.messages#CardWithId).\n- A `cardId`, used to identify the card and scoped within a given message. (Cards in different messages can have the same ID.)\n- A `card` object, which consists of the following:\n\n - A [`header` object](/workspace/chat/api/reference/rest/v1/cards#CardHeader_1) that specifies things like a title, subtitle, and avatar-style image.\n - One or more [`section` objects](/workspace/chat/api/reference/rest/v1/cards#section) that each contain at least one widget.\n - One or more [`widget` objects](/workspace/chat/api/reference/rest/v1/cards#Widget). Each widget is a composite object that can represent text, images, buttons, and other object types.\n\nAs an example, the following card message contains\n[`header`](/workspace/chat/api/reference/rest/v1/cards#CardHeader_1),\n[`section`](/workspace/chat/api/reference/rest/v1/cards#section), and\n[`widget`](/workspace/chat/api/reference/rest/v1/cards#Widget) objects:\n\nThe following code represents the JSON of the card message: \n\n### JSON\n\n {\n \"cardsV2\": [\n {\n \"cardId\": \"unique-card-id\",\n \"card\": {\n \"header\": {\n \"title\": \"Sasha\",\n \"subtitle\": \"Software Engineer\",\n \"imageUrl\": \"https://developers.google.com/chat/images/quickstart-app-avatar.png\",\n \"imageType\": \"CIRCLE\",\n \"imageAltText\": \"Avatar for Sasha\"\n },\n \"sections\": [\n {\n \"header\": \"Contact Info\",\n \"collapsible\": true,\n \"uncollapsibleWidgetsCount\": 1,\n \"widgets\": [\n {\n \"decoratedText\": {\n \"startIcon\": {\n \"knownIcon\": \"EMAIL\"\n },\n \"text\": \"sasha@example.com\"\n }\n },\n {\n \"decoratedText\": {\n \"startIcon\": {\n \"knownIcon\": \"PERSON\"\n },\n \"text\": \"\u003cfont color=\\\"#80e27e\\\"\u003eOnline\u003c/font\u003e\"\n }\n },\n {\n \"decoratedText\": {\n \"startIcon\": {\n \"knownIcon\": \"PHONE\"\n },\n \"text\": \"+1 (555) 555-1234\"\n }\n },\n {\n \"buttonList\": {\n \"buttons\": [\n {\n \"text\": \"Share\",\n \"onClick\": {\n \"openLink\": {\n \"url\": \"https://example.com/share\"\n }\n }\n },\n {\n \"text\": \"Edit\",\n \"onClick\": {\n \"action\": {\n \"function\": \"goToView\",\n \"parameters\": [\n {\n \"key\": \"viewType\",\n \"value\": \"EDIT\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n ]\n }\n ]\n }\n }\n ]\n }\n\n\n*** ** * ** ***\n\nUse the Card Builder to design and preview messaging and user interfaces for Chat apps:\n[Open the Card Builder](https://addons.gsuite.google.com/uikit/builder)\n\n*** ** * ** ***\n\n\u003cbr /\u003e\n\nRelated topics\n--------------\n\n- [Send a message](/workspace/chat/create-messages)\n- [Format messages](/workspace/chat/format-messages)"]]