Как да разбера дали етикетът е добавен към имейл чрез gmail api?

Опитвам се да открия дали имейл съобщението е получило конкретен етикет. Следвайки документацията тук правя десериализиране на насочено съобщение и получих historyId, напр. 390100, но се оказва, че не мога да получа точно 390100 запис в историята.

history.list API има параметър startHistoryId и документите посочват, че получавате цялата история след този historyId.

Но това, което е още по-лошо, 390100 историческо събитие е празно (sic!). Истинският запис с labelsAdded беше преди< /em> този historyId в насочено известие, напр. на 39086, който не е публикуван

Опитах се да заобиколя и да извадя напр. 15 формуляр 390100 и направете history.list с startHistoryId 39085

Ако имам късмет и 39085 все още съществува, няма да получа 404 и в крайна сметка получих информация, че моят етикет е добавен към съобщението. Но това изглежда като лош хак за мен.

Има ли някакъв надежден начин да разберете в кой момент от етикета на историята е добавен и има ли надежден начин за търсене в историята назад?

Също така публикувах кръстосано изказване/проблем тук


person tomaszkubacki    schedule 21.11.2015    source източник


Отговори (1)


historyId, което получавате в насоченото известие, просто представлява текущия час. Така че, ако използвате това historyId, когато питате за история, няма да получите никакви резултати. Вместо това използвайте този работен процес:

  1. Запазете historyId.
  2. Когато получите натискане, използвайте historyId, който сте запазили в стъпка 1, и ще получите всички съответни промени.
  3. Запазете hisotryId, което сте получили в насоченото известие, и го използвайте следващия път.
  4. Повторете стъпка 2.

Пример

  1. Получавам начален historyId с операцията getProfile:

Искане

GET https://www.googleapis.com/gmail/v1/users/me/profile?fields=historyId&access_token={YOUR_API_KEY}

Отговор

{
 "historyId": "655156"
}
  1. Получавам натиска и изброявам хронологията от последния време:

Искане

GET https://www.googleapis.com/gmail/v1/users/me/history?labelId=STARRED&startHistoryId=655156&fields=history%2FlabelsAdded&key={YOUR_API_KEY}

Отговор:

{
 "history": [
  {
   "labelsAdded": [
    {
     "message": {
      "id": "151237ed0d001368",
      "threadId": "151237ed0d001368",
      "labelIds": [
       "STARRED",
       "CATEGORY_UPDATES",
       "INBOX"
      ]
     },
     "labelIds": [
      "STARRED"
     ]
    }
   ]
  }
 ]
}
  1. Запазете historyId, което получих в натиска, и го използвайте следващия път.
person Tholle    schedule 21.11.2015