Получать push-уведомления только тогда, когда новая почта попадает во входящие в Gmail - PullRequest
0 голосов
/ 24 февраля 2019

Я успешно получаю push-уведомления с учетной записью службы для пользователя gmail (олицетворение) после официальной документации .

Но при звонке watch я бы хотел получать уведомления только при поступлении новых сообщений, а не при каких-либо изменениях.(Например: сообщение прочитано, сообщение удалено ...)

Я пытаюсь выполнить фильтрацию по INBOX и UNREAD, но получаю уведомление, даже если сообщения помечены как прочитанные.

Мойкод:

this._service.Users.Watch(new WatchRequest
{
    TopicName = "projects/my-project-id/topics/gmail",
    LabelFilterAction = "include",
    //LabelIds = new [] { "UNREAD" }
    LabelIds = new[] { "INBOX" }
}, "me").Execute();

Можно ли получать уведомление только при поступлении нового сообщения?

А вот код для подписки:

var projectId = "my-project-id";
var topicId = "gmail";
var subscriptionId = "unread-gmail";

TopicName topicName = new TopicName(projectId, topicId);
SubscriptionName subscriptionName = new SubscriptionName(projectId, subscriptionId);
PublisherClient publisher = await PublisherClient.CreateAsync(topicName);
SubscriberClient subscriber = await SubscriberClient.CreateAsync(subscriptionName);
await subscriber.StartAsync((msg, cancellationToken) =>
{
    Console.WriteLine($"Received message {msg.MessageId} published at {msg.PublishTime.ToDateTime()}");
    Console.WriteLine($"Text: '{msg.Data.ToStringUtf8()}'");
    return Task.FromResult(SubscriberClient.Reply.Ack);
});
...