Тихие часы и «пока вы спали»

Когда уведомления устроены «всё или ничего», человек первым делом выключает всё — и пропускает то единственное, ради чего его звали.

Первая версия уведомлений в Kontext была честной и бесполезной: будим на всё, что касается человека. Через неделю у половины команды уведомления были выключены целиком. Не потому, что они не нужны, а потому что выключить всё проще, чем разобраться.

Правила вместо выключателя

Теперь решение «будить ли» принимается по порядку, в одном месте кода:

  1. не будим автора и того, у кого этот чат открыт прямо сейчас;
  2. режим канала или общий: все сообщения, только упоминания и личное, или ничего;
  3. обычное сообщение канала будит только при режиме «все» или если сработало ключевое слово;
  4. «не беспокоить»;
  5. тихие часы — они глушат и упоминания тоже.

Одно место — важно. Если «будить ли» решается в двух местах, они разойдутся на первой же правке, и уведомления на телефоне начнут вести себя не так, как на компьютере.

Ключевые слова по-русски

«Релиз», «прод», своя фамилия — ключевые слова будят без упоминания. Сравнивать их буквально нельзя: «Петровым» должно совпасть с «Петров». Полноценную морфологию из поиска здесь не применить: решение принимается на каждое сообщение для каждого получателя, ходить в базу дорого. Поэтому короткое усечение именных окончаний. Глагольные окончания выкинуты намеренно — с ними «прод» просыпался на «продать».

Забытая вкладка не должна глушить телефон

Сначала мы не будили тех, кто «в сети»: им уже показали уведомление в приложении. От правила пришлось отказаться — забытая вкладка на рабочем компьютере сутками глушила телефон, и человек пропускал всё, пока формально числился на связи. Теперь не будим только того, у кого этот чат открыт прямо сейчас, а открытость считается свежей 90 секунд: свёрнутую вкладку браузер замораживает, и сообщить о сворачивании она может не успеть.

Что делать с тем, что было ночью

Тихие часы глушат уведомление совсем — оно никуда не откладывается. Это правильно для сна и неправильно для утра: человек не знает, что за ночь что-то произошло, и не идёт смотреть.

Первая мысль — выдать утром всё, что подавили. Сорок уведомлений подряд, половина из которых уже неактуальна, — это наказание, а не помощь. Поэтому в момент, когда тихие часы кончились, приходит ровно одно уведомление с числом:

Пока вы спали: 12 непрочитанных сообщений, 2 упоминания лично вас.

Нажатие открывает «Что я пропустил» — один экран вместо двадцати каналов: где накопилось, кто писал, где позвали по имени, что с задачами. Сводка ничего не отмечает прочитанным: её читают по диагонали, и одно неверное нажатие не должно стирать ровно то, ради чего её открыли.

А если уведомление не дошло вовсе

Телефон разрядился, приложение не поставили, в браузере уведомления запрещены. Для этого — письма о пропущенном: личное и упоминания, не прочитанные полчаса, приходят на почту не чаще раза в три часа и не тем, кто сейчас в приложении. Отписка — одной ссылкой, без входа. Письмо про каждое сообщение общего канала было бы спамом, после которого отписываются от всего сразу.

Как настроить — в документации по уведомлениям.