Như mô tả trong phần Khai báo các thao tác, 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
<script type="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
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="potentialAction" itemscope itemtype="http://schema.org/ConfirmAction">
<meta itemprop="name" content="Approve Expense"/>
<div itemprop="handler" itemscope itemtype="http://schema.org/HttpActionHandler">
<link itemprop="url" href="https://myexpenses.com/approve?expenseId=abc123"/>
</div>
</div>
<meta itemprop="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, Google sẽ gửi một yêu cầu HTTP đế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=abc123 HTTP/1.1
Host: your-domain.com
Authorization: Bearer AbCdEf123456
Content-Type: application/x-www-form-urlencoded
User-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
Bạn nên yêu cầu dịch vụ tại https://your-domain.com/approve?expenseId=abc123 xác minh những thông tin sau:
- Mã truy cập có giới hạn sử dụng: Bảo vệ khỏi các cuộc tấn công phát lại.
- Tác nhân người dùng: Đảm bảo rằng yêu cầu đến từ Google.
- Mã thông báo của người mang: Đảm bảo rằng yêu cầu của Google là dành cho dịch vụ.
Tác nhân người dùng cho tất cả các yêu cầu hành động 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ụ cũng phải xử lý hành động như được chỉ đị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 phần nội dung yêu cầu và được mã hoá bằng định dạng x-www-form-urlencoded. 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 dịch vụ xử lý và ghi lại hành động thành công, hãy 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 đánh dấu hành động là không thành công. |
| 401 (Không được phép) | Google đánh dấu hành động là không thành công. |
| 404 (Không tìm thấy) | Google đánh dấu hành động là không thành công. |
| 408 (Hết thời gian chờ) | Google sẽ thử lại sau. |
Đối với các lỗi vĩnh viễn, Google sẽ thông báo cho người dùng rằng hành động không thành công và họ nên làm theo hướng dẫn thay thế trong email.