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.
Như mô tả trong phần Khai báo hành động, khi người dùng tương tác với một Hành động trong ứng dụng, Google sẽ gửi một yêu cầu HTTP đến một URL được khai báo trong hành động đó.
Ví dụ sau đây thêm một nút ConfirmAction vào email về báo cáo chi phí:
JSON-LD
<scripttype="application/ld+json">
{"@context":"http://schema.org","@type":"EmailMessage","potentialAction":{"@type":"ConfirmAction","name":"Approve Expense","handler":{"@type":"HttpActionHandler","url":"https://myexpenses.com/approve?expenseId=abc123"}},"description":"Approval request for John's $10.13 expense for office supplies"}
</script>
Vi dữ liệu
<divitemscopeitemtype="http://schema.org/EmailMessage">
<divitemprop="potentialAction"itemscopeitemtype="http://schema.org/ConfirmAction">
<metaitemprop="name"content="Approve Expense"/>
<divitemprop="handler"itemscopeitemtype="http://schema.org/HttpActionHandler">
<linkitemprop="url"href="https://myexpenses.com/approve?expenseId=abc123"/>
</div>
</div>
<metaitemprop="description"content="Approval request for John's $10.13 expense for office supplies"/>
</div>
Khi người dùng nhấp vào nút này, một yêu cầu HTTP sẽ được Google gửi đến dịch vụ của bạn để ghi lại thông tin xác nhận. Dịch vụ của bạn nhận được yêu cầu HTTP sau đây từ Google:
POST/approve?expenseId=abc123HTTP/1.1Host:your-domain.comAuthorization:Bearer AbCdEf123456Content-Type:application/x-www-form-urlencodedUser-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions)confirmed=Approved
Phần còn lại của trang này mô tả những việc mà dịch vụ tại https://your-domain.com/approve?expenseId=abc123 cần làm để xử lý đúng thao tác. Nội dung như vậy bao gồm:
Xác minh yêu cầu
Xử lý tải trọng
Trả về mã phản hồi
Bước 1: Xác minh yêu cầu
Dịch vụ tại https://your-domain.com/approve?expenseId=abc123 nên kiểm tra:
Tác nhân người dùng cho tất cả các yêu cầu về Thao tác là Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions).
Nếu vượt qua tất cả các bước kiểm tra, dịch vụ có thể chuyển sang bước tiếp theo.
Bước 2: Xử lý Thao tác
Dịch vụ này phải xử lý hành động theo quy định trong các tham số URL cũng như thông tin bổ sung được thu thập từ người dùng.
Thông tin bổ sung của người dùng nằm trong nội dung yêu cầu và được mã hoá bằng phương thức mã hoá x-www-form-urlecoded. Thông tin được đặt trong các thuộc tính có tên tương ứng với các thuộc tính của Thao tác. Ví dụ: ConfirmAction có thuộc tính confirmed.
Bước 3: Trả về Mã phản hồi
Sau khi xử lý và ghi lại thành công hành động này, dịch vụ sẽ trả về mã phản hồi 200 (OK). Bạn có thể sử dụng các mã phản hồi sau trong trường hợp xảy ra lỗi:
Mã phản hồi
Xử lý
400 (Yêu cầu không hợp lệ)
Google sẽ không thực hiện được hành động này.
401 (Không được phép)
Google sẽ không thực hiện được hành động này.
404 (Không tìm thấy)
Google sẽ không thực hiện được hành động này.
408 (Yêu cầu hết thời gian chờ)
Google sẽ thử lại sau.
Trong trường hợp thất bại vĩnh viễn, Google sẽ thông báo cho người dùng rằng hành động đã thất bại và người dùng nên làm theo hướng dẫn thay thế trong email.
[[["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-29 UTC."],[],[],null,["# Handle Action Requests\n\nAs described in [Declaring Actions](/workspace/gmail/markup/actions/declaring-actions), when a user interacts with an In-App Action, Google sends an HTTP request to a URL declared in the action.\n\nThe following example adds a `ConfirmAction` button to an email about an expense report: \n\n### JSON-LD\n\n \u003cscript type=\"application/ld+json\"\u003e\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"EmailMessage\",\n \"potentialAction\": {\n \"@type\": \"ConfirmAction\",\n \"name\": \"Approve Expense\",\n \"handler\": {\n \"@type\": \"HttpActionHandler\",\n \"url\": \"https://myexpenses.com/approve?expenseId=abc123\"\n }\n },\n \"description\": \"Approval request for John's $10.13 expense for office supplies\"\n }\n \u003c/script\u003e\n\n### Microdata\n\n \u003cdiv itemscope itemtype=\"http://schema.org/EmailMessage\"\u003e\n \u003cdiv itemprop=\"potentialAction\" itemscope itemtype=\"http://schema.org/ConfirmAction\"\u003e\n \u003cmeta itemprop=\"name\" content=\"Approve Expense\"/\u003e\n \u003cdiv itemprop=\"handler\" itemscope itemtype=\"http://schema.org/HttpActionHandler\"\u003e\n \u003clink itemprop=\"url\" href=\"https://myexpenses.com/approve?expenseId=abc123\"/\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003cmeta itemprop=\"description\" content=\"Approval request for John's $10.13 expense for office supplies\"/\u003e\n \u003c/div\u003e\n\nWhen the user clicks on the button, an HTTP request will be issued from Google to your service, recording the confirmation. Your service receives the following HTTP request from Google: \n\n POST /approve?expenseId=abc123 HTTP/1.1\n Host: your-domain.com\n Authorization: Bearer AbCdEf123456\n Content-Type: application/x-www-form-urlencoded\n User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions)\n\n confirmed=Approved\n\nThe rest of this page describes what the service at `https://your-domain.com/approve?expenseId=abc123` needs to do to handle the action properly. This includes:\n\n- Verifying the request\n- Processing the payload\n- Returning a response code\n\nStep 1: Verify the Request\n--------------------------\n\nThe service at `https://your-domain.com/approve?expenseId=abc123` is encouraged to check:\n\n- [Limited Use Access Token](/workspace/gmail/markup/actions/limited-use-access-tokens) - To protect against replay attacks.\n- [User Agent](http://en.wikipedia.org/wiki/User_agent) - To make sure the request comes from Google.\n- [Bearer Token](/workspace/gmail/markup/actions/verifying-bearer-tokens) - To guarantee the request coming from Google is intended to the service.\n\nThe User Agent for all Action requests is `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions)`.\n\nIf all checks pass, the service can proceed to the next step.\n\nStep 2: Process the Action\n--------------------------\n\nThe service should process the action as specified in the URL parameters as well as additional information collected from the user.\n\nAdditional information from the user resides in the request's body, and is encoded using the [x-www-form-urlecoded](https://en.wikipedia.org/wiki/Percent-encoding#The_application.2Fx-www-form-urlencoded_type) encoding. The information is set in properties whose names correspond with the properties of Action. For example, [ConfirmAction](/workspace/gmail/markup/reference/types/ConfirmAction) has the property `confirmed`.\n\nStep 3: Return a Response Code\n------------------------------\n\nOnce the service processed and recorded the action successfully, it should return a response code `200 (OK)`. The following response codes can be used in error situations:\n\n| Response Code | Treatment |\n|-----------------------|--------------------------------|\n| 400 (Bad Request) | Google will fail the action. |\n| 401 (Unauthorized) | Google will fail the action. |\n| 404 (Not Found) | Google will fail the action. |\n| 408 (Request Timeout) | Google will retry again later. |\n\nIn case of permanent failure, Google will tell the user that action has failed and that the user should follow alternative instructions inside the email.\n\nFurther Reading\n---------------\n\n- [Securing Actions](/workspace/gmail/markup/actions/securing-actions)\n\n| **Note:** Some of the schemas used by Google are still going through the standardization process of [schema.org](http://schema.org), and therefore, may change in the future. [Learn More](/workspace/gmail/markup/reference/schema-org-proposals)."]]