Gmail API Watch не филтрира по етикет

Използвам Gmail Push Notifications с Google PubSub и имам персонализиран етикет, който искам да наблюдавам за промени. Използвам следния код, за да регистрирам часовник за етикета (ID на етикета е Label_1)

WatchRequest wr = new WatchRequest();
wr.TopicName = "projects/" + primaryLink.ggProjectId + "/topics/iLink" + segmentId;
if (labels != null && labels.Count > 0)
{
    wr.LabelIds = new List<string>();
    wr.LabelIds.Add("Label_1");
    wr.LabelFilterAction = "include";
}

WatchResponse wrr = gs.Users.Watch(wr, emailAccount).Execute();
return "HistoryId " + wrr.HistoryId.ToString();

}

Часовникът се регистрира добре. Проблемът е, че получавам насочени известия за всяка промяна в Gmail, а не само за тези под етикета.

Поддържат ли се персонализирани етикети?


person PNC    schedule 02.06.2015    source източник
comment
Потребителските етикети също трябва да работят добре. Сигурни ли сте, че не е направена друга промяна на етикета на съобщение, което също е имало Label_1? (напр. съобщение Label_1 е маркирано като непрочетено, но Label_1 не е променено в съобщението.)   -  person Eric D    schedule 02.06.2015
comment
Не се появява например при изпращане на имейл - това не е свързано с етикета. Първоначално имаше часовник за потребителя без посочени етикети. Дали нова команда за наблюдение (с филтър за етикети) заменя предишното наблюдение? Опитах също да извикам Stop() преди новата команда?   -  person PNC    schedule 03.06.2015
comment
Един watch() трябва да презапише предишния. Можете да извикате stop() и да го оставите така за известно време, за да сте сигурни, че старият е изчезнал (в такъв случай би било грешка, че новият watch() не заменя стария).   -  person Eric D    schedule 03.06.2015
comment
Мога да потвърдя, че това все още се случва във v1.   -  person Spencer Easton    schedule 09.09.2015
comment
Просто се чудех дали има някаква актуализация по този въпрос или извикването на списък с история на обажданията с идентификатор на историята и филтър за етикета все още е отговорът?   -  person guival    schedule 13.09.2017
comment
@guival не съм го пипал от няколко години. За съжаление използваме анкетиране по етикет на база време, тъй като режийните разходи са много по-малко от справянето с насочените известия за всяко събитие в Gmail...   -  person PNC    schedule 13.09.2017
comment
@PNC Има запис в програмата за проследяване на проблеми в Google за тази грешка. Бихте ли любезно актуализирали публикацията си с препратка към issuetracker.google.com/issues/36759803 с бележка за звезда на проблема? Колкото повече хора го поставят със звезда, толкова по-скоро ще бъде поправено.   -  person TheAddonDepot    schedule 30.07.2018
comment
Току-що намерих тази публикация SO. Също така не работи, когато се опитате да изключите и етикети.   -  person Swordfish    schedule 17.01.2019
comment
Това все още не работи.   -  person Nathan Boaldin    schedule 13.03.2020


Отговори (1)


Забелязах същия проблем, но по-късно разбрах, че се дължи на начина, по който работи API. Можете да филтрирате имейлите чрез LabelIds, но ще получавате известия само ако имейлите се филтрират директно към избран персонализиран етикет. Предполагам, че неговият дизайн е по-скоро недостатък в API.

За да тествате това, създайте персонализиран филтър в Gmail, който директно ще приложи вашия персонализиран етикет към набор от имейли и трябва да получавате известия за тези имейли.

Редактирано (11 юни 2015 г.): Насоченото известие ви изпраща HistoryID и името на пощенската кутия на потребителя. В отговор вашата крайна точка трябва да извика userhistory.list() с HistoryID и LabelId, които искате да наблюдавате за промени.

$opt_param = array();
$opt_param['startHistoryId'] = $historyID;
$opt_param['labelId'] = $labelID;
$opt_param['fields'] = 'nextPageToken,historyId,history/messagesAdded';

$service->users_history->listUsersHistory($userID, $opt_param);

По-горе е фрагмент от PHP код за филтриране на списъка с хронология с historyID и labelID.

person Furhan S.    schedule 09.06.2015
comment
Не съм сигурен, че разбирам - проблемът ми е, че получавам известия за всичко, което се случва в Gmail. Това е въпреки че се регистрирате само за известия само за един етикет? Звучи сякаш това не се случва с вас? - person PNC; 10.06.2015
comment
@PNC Проблемът е, че куката watch() ви дава само HistoryID и пощенската кутия за всяко събитие, без значение какъв LabelId сте посочили при създаването на заявка за наблюдение. И historyID е ID за цялата пощенска кутия, а не за цялата LabelID. Така че независимо дали съдържанието на етикета се промени, HistoryID ще бъде увеличен. В отговор на насочено известие вашата крайна точка трябва да извика historyList.list(). Това е мястото, където можете да филтрирате съобщенията с labelID, които искате да наблюдавате. - person Furhan S.; 11.06.2015
comment
Получих следната актуализация от един от екипа на Google за тази област. Трябва да можете да ограничите watch() чрез идентификатори на етикети, както посочвате, но мога да потвърдя, че не работи в момента за user етикети. Логиката и грешката са доста сложни, работим по тях, но няма ETA - person PNC; 12.06.2015
comment
Ех... не съм сигурен, че са само персонализирани етикети. След като не можах да накарам персонализираните етикети да работят, опитах етикетите по подразбиране. Watch изглежда игнорира всички тях и изпраща всички събития. - person Spencer Easton; 09.09.2015
comment
Куката watch() също игнорира системните етикети напр. STARRED някой има ли актуална информация за това? - person Jason; 17.01.2017
comment
Доколкото разбирам, тази функция не работи от години и на никой в ​​Google не му пука? За информация, аз също се опитвам да /следя за етикет ИЗПРАТЕНО и получих известия за всички събития - person Benoit Patra; 10.05.2017
comment
Също така се опитвам да филтрирам имейлите, които имат labelD Label_1. Но watch() връща всички имейли. И така, как да го направя? Създаване на персонализиран филтър в GMail? Какво трябва да съдържа филтърът? Искам само Pub/Sub да ми изпрати промените, направени в този етикет, „Label_1“. Съжалявам, но ми се иска документите да са много по-добри в това отношение. - person Juggernaut; 26.06.2018
comment
това коригирано ли е някога от Google? все още имам същия проблем, филтрите не работят. - person jkamdjou; 19.11.2018
comment
Той все още е повреден към 5 септември 2019 г. - person Faiz; 05.09.2019
comment
все още е проблем от 20 януари 2020 г. Целият работен ден е пропилян. да - person Edd; 20.01.2020
comment
Все още проблем от 10 март 2020 г - person Anthony Liriano; 11.03.2020
comment
Все пак проблем. - person Nathan Boaldin; 13.03.2020
comment
Все още проблем от 6 април 2020 г - person Erim Franci; 06.04.2020
comment
Все още проблем към 18 април 2020 г - person Paritosh Piplewar; 18.04.2020
comment
все още е проблем към 08 октомври 2020 г - person Nitin Manocha; 08.10.2020
comment
все още е проблем от 05 март 2021 г - person Mian.Ammar; 05.03.2021