Идентификаторы дубликатов сообщений в push-уведомлении API Gmail

#google-api #gmail-api

#google-api #gmail-api

Вопрос:

Я использую push-уведомления Gmail для обработки электронной почты. Когда я получаю уведомление о сообщении от Google, я использую API списка истории с ранее сохраненными historyId и могу просматривать новые сообщения с помощью messagesAdded. После получения сообщений я сохраняю последний идентификатор истории для следующего запроса.

При тестировании, если я отправляю два почтовых сообщения (с интервалом около 30 секунд) в просматриваемый почтовый ящик, я вижу два уведомления о сообщениях от Google, и когда я вызываю API истории для каждого из уведомлений, я вижу идентификаторы сообщений. Все это хорошо.

Если я повторяю тот же тест, но отправляю два почтовых сообщения сразу друг за другом, я получаю два уведомления от Google, но когда я вызываю history API для первого сообщения, я получаю два идентификатора сообщений в этом вызове history API. Когда я вызываю вызов API истории для второго уведомления, я получаю дубликат последнего идентификатора сообщения.

Как я могу предотвратить просмотр повторяющихся идентификаторов сообщений в этом сценарии? Любая помощь или указания будут высоко оценены.

Обновлено: Добавлен пример запроса и ответа для второго теста.

введите описание изображения здесь

Комментарии:

1. Не могли бы вы поделиться с сообществом примером ответа, который вы получаете в двух сценариях?

2. Я также наблюдал дублирующиеся идентификаторы сообщений. Я думаю, решение не в том, чтобы полагаться на идентификаторы сообщений.

Ответ №1:

Я заметил в ответе от API истории Google historyId отображение последних сообщений, которые были обработаны. Если я сохраню это значение в качестве следующей начальной точки вместо historyId отправленного в сообщении уведомления, это решит проблему дублирования, поскольку по второму запросу больше нет сообщений. Не уверен, что это правильный способ сделать это, поскольку это означает, что я не сохраняю и не использую historyId отправленные в сообщении уведомления.