change the function to this...
const chatId = 11111111; // << update this
if (!msg.ping.host) return null; //ensure host has a value
var pingMonitor = flow.get("pingMonitor") || {};//get lookup object ||or|| a new empty object
var pingPrev = pingMonitor[msg.ping.host] || {};//this ping monitor object ||or|| a new empty object
var sendTelegram = false;
//if ping is good, you get a number in payload...
if (typeof msg.payload == "number" && pingPrev.status === "bad" ) {
pingPrev.status = "good";
msg.payload = {};
msg.payload.type = 'message';
msg.payload.content = `'${msg.ping.name}' (${msg.ping.host}) is now back on line`;
msg.payload.chatId = chatId;
sendTelegram = true;
} else if (msg.payload === false && (pingPrev.status === "good" || !pingPrev.status)) {
pingPrev.status = "bad";
msg.payload = {};
msg.payload.type = 'message';
msg.payload.content = `Ping to '${msg.ping.name}' (${msg.ping.host}) failed`;
msg.payload.chatId = chatId;
sendTelegram = true;
}
//update context
pingPrev.datetime = new Date();
pingPrev.host = msg.ping.host;
pingPrev.name = msg.ping.name;
pingMonitor[msg.ping.host] = pingPrev;
flow.set("pingMonitor", pingMonitor);
if (sendTelegram) return msg;
return null;
you will also see the status in flow context viewer...