Получение уведомлений из браузера Zennoposter

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 311
Реакции
1 192
Баллы
113
Уже не в первый раз встречаю, что пользователи зеннопостера хотят запускать код ожидания уведомлений и, по мере его получения, продолжать работу.
Поэтому представляю шаблон, который всём этим занимается.

Преждем чем приступить к работе с уведомлениями нам надо включить их:
C#:
Развернуть Свернуть Копировать
instance.AllowNotification = true;

Далее нам нужно переопределить функцию для того, чтобы уведомления писались в консоль браузера:
JavaScript:
Развернуть Свернуть Копировать
console.logs = [];

(function () {

    function notifyCallback(title, options) {
        let info;
        if (options && options.body)
        {
            info = {
                title,
                body: options.body
            }
        }
        else
        {
            info = {
                title,
            }
        }
        console.logs.push(info);
    }

    const handler = {
        construct(target, args) {
            notifyCallback(...args);
            return new target(...args);
        }
    };

    const ProxifiedNotification = new Proxy(Notification, handler);

    window.Notification = ProxifiedNotification;
})();

И далее просто переходим на нужный сайт и ждем пока уведомление появится с таймаутом в 100 мс:
C#:
Развернуть Свернуть Копировать
//Время ожидания
TimeSpan ts = TimeSpan.FromMinutes(5);
DateTimeOffset dtEnd = DateTimeOffset.UtcNow.Add(ts);

project.Variables["notification"].Value = "";
while (true)
{
    if (DateTimeOffset.UtcNow > dtEnd)
        break;

    string result = instance.ActiveTab.MainDocument.EvaluateScript("return JSON.stringify(console.logs.pop());", true);
    if (result != "" && result != "undefinied")
    {
        project.SendInfoToLog(result);
        project.Variables["notification"].Value = result;
        break;
    }

    //Таймаут между запросами
    Thread.Sleep(100);
}
 

Вложения

Речь про браузерные пуши или что?
 
Хочется уточнить, зачем переходить на нужный сайт? Уведомления же включаются для профия в целом и должны приходить (по идее) от любых сайтов, от которых разрешено получение уведомлений.
 
Хочется уточнить, зачем переходить на нужный сайт? Уведомления же включаются для профия в целом и должны приходить (по идее) от любых сайтов, от которых разрешено получение уведомлений.
Можно и так, если уведомления приходят без сайта
 
Попробовал этим кодом ловить уведомления о сообщениях в веб-телеграм. Все отлично работает, но иногда пропускаются значения title и приходит нечто вроде
JSON:
Развернуть Свернуть Копировать
{"title":"","body":"Текст уведомления"}
Причем в одних и тех же каналах, то приходит все как надо, то с пустыми значениями title
И пошли эти сбои после обновления постера до 7.8.1
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)