Надстройки Gmail onTriggerFunction запускаются только один раз для каждого письма, даже если открыть его снова - PullRequest
0 голосов
/ 24 мая 2018

Мы создаем Gmail Add-On , однако мы хотим показать другую карту в зависимости от бизнес-логики при вызове дополнения onTriggerFunction.Это работает нормально в первый раз, когда функция запускается при открытии электронной почты.

У нас есть условная логика, но Gmail, похоже, кэширует результат первоначального вызова, возвращающего первую карточку.При переходе к другому электронному письму и возвращению к исходному тексту onTriggerFunction больше не вызывается, поэтому условная логика не запускается для изменения отображаемой исходной карты.

Есть ли способ заставить функцию onTrigger запускаться каждый раз, когдаэлектронная почта открывается, а не только один раз, когда электронная почта открывается в первый раз?


Вот пример дополнения с триггерной функцией, которая возвращает одну карту, отображающую текущее время:

Code.js

function buildAddOn(e) {
  var card = CardService.newCardBuilder();
  card.setHeader(CardService.newCardHeader().setTitle(new Date().toLocaleTimeString()));  

  return [card.build()];
}

appsscript.json

{
  "timeZone": "GMT",
  "dependencies": {
  },
  "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute"],
  "gmail": {
    "name": "Minimal example",
    "logoUrl": "https://www.gstatic.com/images/icons/material/system/2x/bookmark_black_24dp.png",
    "contextualTriggers": [{
      "unconditional": {
      },
      "onTriggerFunction": "buildAddOn"
    }],
    "primaryColor": "#4285F4",
    "secondaryColor": "#4285F4",
    "openLinkUrlPrefixes": ["https://mail.google.com/"],
    "version": "TRUSTED_TESTER_V2"
  }
}

При переходе к старым разговорам отображается счетчик, за которым следует текущее время,Однако при переходе к ранее отображаемым разговорам старое значение времени отображается мгновенно, что указывает на некоторое кэширование:

demo of the issue

Действия внутри надстройки или другиеактивность в нашем приложении может повлиять на то, что должно отображаться при повторном открытии ранее отображенного разговора.Это означает, что повторное отображение старой копии карты приводит к неожиданному поведению пользователя.

1 Ответ

0 голосов
/ 19 июля 2019

К сожалению, на данный момент (июль 2019 г.) нет способа принудительно запускать триггер при каждом открытии электронного письма.Вы можете использовать ActionResponseBuilder.setStateChanged(true) в качестве ответа на нажатие кнопки, чтобы указать Gmail очистить кеш, но его нельзя отправить вместе с обычным ответом карты.

...