Функция для оповещений

Функция находится в ветке global скриптов ioBroker и вызывается из любого скрипта. С помощью этой функции отправляются уведомления в телеграм, на проигрыватель Kodi, телевизор LG и в адаптер sayit для озвучивания сообщений голосом.

Функция в качестве аргументов принимает:

  • text — текст оповещения (сообщения)
  • level — уровень важности от 0 до 2
  • telegram — флаг для отправки сообщения в телеграм, если false то сообщение в телеграм отправлять не будет. Если не задано или true то в телеграм отправляются сообщения только с уровнем 1 или 2.
  • cb — callback, возвращает true после выполнения функции.
function alert(text, level, telegram, cb){
    log('Уведомление {' + text + '} с уровнем важности {' + level + '}, отправка в телеграм: ' + telegram);
    var saytext = text;
    var hour = (new Date()).getHours();
    var Sleep = getState('javascript.0.Scenes.Sleep').val;
    var Allgone = getState('javascript.0.Scenes.Allgone').val;
    var sayOff = getState('javascript.0.Scenes.sayOff').val;

    if(~text.indexOf('<speak>')){
        text = text.replace(/(\<(\/?[^>]+)>)/g, '');
    }

    switch (level) {
        case 0:
            if(!Sleep && hour > 6 && hour < 23 && !Allgone && !sayOff){
                setState('sayit.0.tts.text', saytext);
            }
          break;
        case 1:
            if(!Sleep && !Allgone && !sayOff){
                setState('sayit.0.tts.text', saytext);
            }
          break;
        case 2:
            if(!Allgone){
                setState('sayit.0.tts.text', saytext);
            }
          break;
        default:
            log('Function Alert, не известный уровень важности сообщения.');
    }
    
    sendToKodi(text, level);
    sendToTV(text);

    if(telegram == undefined || telegram){
        if(level === 1){
            text = '?? ' + text;
        }
        if(level === 2){
            text = '?? ' + text;
        }
        sendTo('telegram', {text: text});
    }

    cb && cb(true);

    function sendToTV(txt){
        if (txt[2] !== ':' && txt[1] !== ':'){ //Если не "ВРЕМЯ" 
            setState('lgtv.0.states.popup', txt);
        }
    }
    function sendToKodi(txt, lvl){
        if (txt[2] !== ':' && txt[1] !== ':'){ //Если не "ВРЕМЯ" 
            setState('kodi.0.ShowNotif', lvl + ';' + txt + ';5000');
        }
    }
}
Подписаться
Уведомлять
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Поделиться своими мыслямиx
()
x