Nicht direkt so wie du das suchst,
aber vielleicht hilft dir das weiter:
http://statusmonitor.drk-vaihingen.de
Nicht direkt so wie du das suchst,
aber vielleicht hilft dir das weiter:
http://statusmonitor.drk-vaihingen.de
Hallo,
ich habe durch Zufall die letzten Tage an einer Lösung für ein ähnliches "Problem" mit der Smartphone App Telegram gebaut. In Telegram kann man Bots erstellen welche von einem PC aus gesteuert werden können. Ein Nutzer Startet dann sozusagen einen Chat mit dem Bot, wenn anschließend ein Alarm eingeht, Benachrichtigt der Bot die zuvor angemeldeten Nutzer des Bots und Stellt die Frage ob er zum Einsatz kommt. Die Rückantwort wird dann entsprechend ausgewertet und bei uns am Einsatzmonitor vermerkt.
Wenn Interesse besteht kann ich dir den teil des NodeJS Scriptes mal auszugsweise zur Verfügung stellen.
Hi!
Wir bieten mit DIVERA 24/7 free (siehe https://www.divera247.com/versionen/kostenlos.html) eine Software an, die sich der geschilderten Problematik annimmt.
Der Status lässt sich telefonisch, per Browser und demnächst auch via App ändern. Ein Modul zur Alarmierung ist ebenfalls in Vorbereitung.
Einfach mal ausprobieren. Wünsche und Erweiterungsvorschläge sind jederzeit willkommen :)
Ich pack hier mal das Modul für den Bot einfach so rein. Ist prinzipiell recht easy und auch noch nicht zu 100% fertig.
https://www.npmjs.com/package/telegram-bot-api bzw. https://github.com/mast/telegram-bot-api wären die node module dazu.PHP-Code:
exports.init = function (app) {
var telegram = require('../../lib/telegram-bot-api');
var TelegramBot = {
api: new telegram({
token: app.config.TelegramBot.API_Key,
updates: {
enabled: true
}
}),
users: { //Chat IDs welche die Nachricht bekommen sollen, wird mit /start im telegram automatisch hinzugefügt. Speichern der Liste fehlt noch
'xxxxxxxxx': {id: xxxxxxxxx, first_name: 'Test', username: 'Test'}
},
user_einsatz: {
aktiv: null,
kraefte: {}
},
broadcast: function (selfID, text) { //Nachricht an alle user rausschicken ausser den eigenen
for (var u in this.users) {
if (u != selfID) {
this.api.sendMessage({
chat_id: u,
text: text
}, function (err, data) {
console.log(data);
});
}
}
},
start: function (alarm) { //diese funktion wird aufgerufen sobald ein alarm ankommt
this.send(alarm);
},
send: function (alarm) {
//Einsatznummer setzen und userliste zurücksetzten
this.user_einsatz.aktiv = alarm.ENR;
this.user_einsatz.kraefte = {};
var schwere = '';
if (alarm.schwere) {
schwere = ' (' + alarm.schwere + ')';
}
for (var u in this.users) {
var ret = this.api.sendMessage({
chat_id: u,
reply_markup: JSON.stringify(
{
keyboard: [ //Hier können noch weitere Nachrichten ergänzt werden
[
'/Ja ich komme!'
],
[
'/Nein ich komme nicht!'
]
],
one_time_keyboard: true
}),
text: "\u26a0" + ' Alarm ' + "\n" + alarm.Stichwort + schwere //Text welchen der Bot zum User sendet
});
console.log(u, ret);
}
},
stop: function () { //Reset funktion welche nach einem gewissen Timeout vom Alarmsystem aufgerufen wird
TelegramBot.user_einsatz = {
aktiv: null,
kraefte: {}
};
}
};
TelegramBot.api.on('message', function (message) {
console.log('message', message);
if (message && message.text) {
var cmd = message.text.split(' ')[0].toLowerCase();
if (cmd[0] == '/') { //Auswertung der Komandos (/Ja /Nein)
if (TelegramBot.user_einsatz.aktiv) { //Ist überhaupt ein Einsatz?
if (cmd == '/ja') {
var msg = ["\uD83D\uDD35"];
if (message.chat.first_name) {
msg.push(message.chat.first_name);
}
if (message.chat.last_name) {
msg.push(message.chat.last_name);
}
msg.push('kommt!');
TelegramBot.broadcast(message.chat.api, msg.join(' '));
TelegramBot.user_einsatz.kraefte[message.chat.id] = message.chat;
} else if (cmd == '/nein') {
var msg = ["\uD83D\uDD34"];
if (message.chat.first_name) {
msg.push(message.chat.first_name);
}
if (message.chat.last_name) {
msg.push(message.chat.last_name);
}
msg.push('kommt NICHT!');
TelegramBot.broadcast(message.chat.api, msg.join(' '));
}
}
} else { //Bei sonnstigen nachrichten wird der User hinzugefügt, hier muss noch eine Verifizierg eingebaut werden!
if (!TelegramBot.users[message.chat.id]) {
TelegramBot.users[message.chat.id] = message.chat;
}
console.log(TelegramBot.users);
}
}
});
return TelegramBot;
};
Über die Telegram Bots: https://telegram.org/blog/bot-revolution
Wie schon geschrieben ist das nur ein Modul von diversen. Ich habe prinzipiell eine Software welche die Einsätze via Serialport auf einem Raspberry Pi vom Piepser ausliest und den Text Auswertet. An dem Raspi hängt dann ein 40" Monitor in der Wagenhalle welcher den Text entsprechend ausgibt und in der unteren Ecke Alarmierungszeit, Minuten seit Alarmierung und jetzt auch die Rückmeldungen der Kameraden mit angibt. Die Frage ist halt inwiefern bei einem Einsatz tatsächlich jemand darüber Rückmeldung gibt ob er kommt oder auch nicht...
Per Whatsapp würde ich lassen, es gibt zwar Möglichkeiten da via undokumentierter API ran zu kommen, sobald die das aber merken fackeln die nicht lange mit der Schließung des Accounts.
Deswegen habe ich mich da für Telegram entschieden. Dokumentiert, Quelloffen und bietet gleich noch die Möglichkeit ne eigene Tastatur zur Frage mitzuliefern wo dann wirklich nur noch 2 Buttons da sind welche die Einsatzkraft drücken kann.
So schaut das dann bei mir in der Weboberfläche von Telegram aus:
Bei nem Blauen Punkt kommt die Einsatzkraft, bei nem Roten Punkt nicht. Recht simpel gehalten.
Man könnte das jetzt noch mit weiteren Möglichkeiten aufbohren wie "Komme in 10 min" oder so, aber für den Anfang reicht das glaube ich...
Übrigens: Von einem Gruppenchat würde ich abraten, da manche unserer Kameraden für den Chat nen Alarmton, ähnlich wie der vom Piepser, drinne hatten ham sich da manche nen Spaß draus gemacht und die mal früh um 2 aufstehen zu lassen :-/
Hallo zusammen,
wollte mich mal wieder zu Wort melden ;)
Inzwischen haben wir uns dafür entschieden SMS zu versenden.
Diese werden direkt am PC generiert und über ein GSM Modem versendet.
Als Tool verwende ich Gammu, welches über ein PowerShell Script gefüttert wird. Die einzelnen Handynummern dazu sind in Textdateien abgelegt.
Viele Grüße
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)