Обработка запросов действий

Как описано в разделе «Объявление действий» , когда пользователь взаимодействует с действием в приложении, Google отправляет HTTP-запрос на URL-адрес, объявленный в действии.

В следующем примере кнопка ConfirmAction добавляется в электронное письмо об отчете о расходах:

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>

Микроданные

<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>

Когда пользователь нажимает на кнопку, Google отправляет вашему сервису HTTP-запрос, фиксирующий подтверждение. Ваш сервис получает от Google следующий HTTP-запрос:

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

Далее на этой странице описывается, что необходимо сделать службе по адресу https://your-domain.com/approve?expenseId=abc123 для корректной обработки этого действия. В частности, это:

  • Проверка запроса
  • Обработка полезной нагрузки
  • Возврат кода ответа

Шаг 1: Проверка запроса

Сервис по адресу https://your-domain.com/approve?expenseId=abc123 рекомендует проверить:

Пользовательский агент для всех запросов действий — Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions) .

Если все проверки пройдены успешно, сервис может перейти к следующему этапу.

Шаг 2: Обработайте действие

Служба должна обрабатывать действие, указанное в параметрах URL, а также дополнительную информацию, полученную от пользователя.

Дополнительная информация от пользователя находится в теле запроса и кодируется с помощью кодировки x-www-form-urlecoded . Эта информация задаётся свойствами, имена которых соответствуют свойствам Action. Например, ConfirmAction имеет свойство confirmed .

Шаг 3: Верните код ответа

После успешной обработки и регистрации действия служба должна вернуть код ответа 200 (OK) . В случае возникновения ошибок могут использоваться следующие коды ответа:

Код ответа Уход
400 (неверный запрос) Google провалит это действие.
401 (Неавторизованный) Google провалит это действие.
404 (Не найдено) Google провалит это действие.
408 (время ожидания запроса истекло) Google повторит попытку позже.

В случае постоянной неудачи Google сообщит пользователю, что действие не удалось и что пользователю следует следовать альтернативным инструкциям в электронном письме.

Дополнительное чтение