ich habe nun erste Erfahrung mit dem Mairlist Script gemacht und finde die Möglichkeiten sehr gut.
Ich konnte ein Script bauen, welches mir über einen Webhook eine Whatsapp schickt, die mir mitteilt, dass der Streammonitor ON bzw. OFF schaltet. Die beiden Scripte rufe dann dann jeweils als Aktion bei ON Air oder OFF Air in Streammonitoreinstellungen auf.
Jetzt fehlt mir nur noch, dass ich auch mitsende, welcher unserer drei Studiostreams im Streammontitor geschaltet ist. Da nicht jeder Stream im Streammonitor “eigene” Aktionen bei ON oder OFF haben kann, frage ich hier mal, ob man über eine Funktion den Namen des geschalteten Streams oder auch eine ID des geschalteten Streams abfragen und dann weiter berarbeiten kann.
Weiß jemand etwas dazu und kann mir einen Hinweis geben?
@Tondose Du hast mir da schon so sehr auf die Sprünge geholfen, vielleicht auch hierzu?
var
i: integer;
begin
for i := 0 to StreamMonitor.GetStreams.GetCount - 1 do
if StreamMonitor.GetStreams.GetItem(i).GetState = mssOnAir then
SetRuntimeData('StreamName', StreamMonitor.GetStreams.GetItem(i).GetDescription);
end.
In die E-Mail dann irgendwo die Variable %R{StreamName} einbauen.
Das müsste dann ja auch über meine bereits funktionierenden Webhooks gehen, oder?
so hab ich es mal probiert:
var
i: integer;
begin
for i := 0 to StreamMonitor.GetStreams.GetCount - 1 do
if StreamMonitor.GetStreams.GetItem(i).GetState = mssOnAir then
SetRuntimeData('StreamName', StreamMonitor.GetStreams.GetItem(i).GetDescription);
HTTPGet('https://api.callmebot.com/whatsapp.php?phone=49174xxx&apikey=xxx&text=*StreamName+ON+AIR*');
end.
das habt aber vorerst noch zu diesem Fehler geführt:
ich seh grad selbst, dass da noch ein fehler ist, mal sehen, ob ich es selbst hinbekomme.
hab den Code nochmal korrgiert, aber die Fehlermeldung kommt trotzdem wegen dem GETSTATE
var
i: integer;
begin
for i := 0 to StreamMonitor.GetStreams.GetCount - 1 do
if StreamMonitor.GetStreams.GetItem(i).GetState = mssOnAir then
SetRuntimeData('StreamName', StreamMonitor.GetStreams.GetItem(i).GetDescription);
HTTPGet('https://api.callmebot.com/whatsapp.php?phone=49174xxx&apikey=xxx&text=' + StreamName + '+ON+AIR*');
end.
@Tondose hast Du da noch eine zündende Idee (wie immer)?
Ja, so geht’s natürlich auch. Mit dem GetState hatte ich zunächst auch Probleme, wollte mich schon lautstark bei @Torben beschweren, bis es auf einmal bei mir zu gehen schien. Irgendetwas stimmt da nicht, zumal z. B. GetDescription tadellos funktioniert.
Welche Version hast du denn im Einsatz? GetState gibt es z. B. in der 6.3.
Ich nutze den Stream-Monitor nicht und habe da ehrlicherweise gesagt auch noch nie etwas zu gescripted, daher sozusagen ein theoretischer Erklärversuch:
Vielleicht ist das Objekt (hier: der überwachte Stream) intern nicht initialisert, weil er nicht genutzt wird. Probier mal, dir über einen zusätzlichen Check zu behelfen:
var
i: integer;
begin
for i := 0 to StreamMonitor.GetStreams.GetCount - 1 do
if StreamMonitor.GetStreams.GetItem(i) <> nil then
if StreamMonitor.GetStreams.GetItem(i).GetState = mssOnAir then
SetRuntimeData('StreamName', StreamMonitor.GetStreams.GetItem(i).GetDescription);
HTTPGet('https://api.callmebot.com/whatsapp.php?phone=49174xxx&apikey=xxx&text=' + StreamName + '+ON+AIR*');
end.
vielen Dank für Deinen Input. Ich werde das gleich mal testen. Wir nutzen aktuell Version 6.3.24.
Zur Info schomal vorab: Mit diesem Code (siehe unten) konnte ich es schonmal hinbekommen, dass mir die Message Box nacheinander meine 3 Streams im Streammonitor ausgibt. Sprich es wird erkannt, dass dort 3 Streams angelegt sind und ich kann die Benennung auslesen. Das ist schonmal gut.
Spannend finde ich an der Stelle dass die “for” Schleife rückwärts läuft.
Ist das korrekt?
Hier der Code (wichtig: ich bin ein totaler Anfänger mit den Scripts):
var
streams: integer; // Menge an Streams im Streammonitor
i: integer; //Zähler für die Prüfung
description: string; //Name der einzelnen Streams
begin
streams := StreamMonitor.GetStreams.GetCount;
for i := 0 to StreamMonitor.GetStreams.GetCount - 1 do
begin
description := StreamMonitor.GetStreams.GetItem(i).GetDescription;
ShowMessage('Description: ' + description + ' - ID: ' + IntToStr(i));
end;
end.
so, ich hab das nun mit dem Scipt getestet, den @mgie mir geschickt hat und leider meckert Mairlist hier auch wegen “GETSTATE” (gleiche Fehlermeldung).
ich habe es nun mit folgendem Script geschafft, Name und Prioritäten unserer im Streammonitor angelegten Streams abzufragen. Das klappt alles. Lediglich den Zustand kann ich nach wie vor nicht abfragen.
Ich habe anstatt GETSTATE auch ein paar andere Befehle ausprobiert, aber nichts hat funkttioniert um noch den jeweiligen Zustand der Streams abzufragen und daraus dann über IF eine Nachricht abzuleiten welcher der drei Streams On Air gegangen ist.
var
streams: integer; //Menge an Streams im Streammonitor
i: integer; //Zähler für die Prüfung
description: string; //Name der einzelnen Streams
prio: integer; //Priorität der einzelnen Streams
state: string; //Zustand der einzelnen Streams
begin
streams := StreamMonitor.GetStreams.GetCount;
for i := 0 to StreamMonitor.GetStreams.GetCount - 1 do
begin
description := StreamMonitor.GetStreams.GetItem(i).GetDescription;
prio := StreamMonitor.GetStreams.GetItem(i).GetPriority;
state := StreamMonitor.GetStreams.GetItem(i).GetState;
ShowMessage('STREAM: ' + description + ' - ID: ' + IntToStr(i) + ' - PRIORITÄT: ' + IntToStr(prio) + ' - ZUSTAND: ' + state);
end;
end.
Meine eigentliche Idee war, beim on-air-schalten zu schauen, welcher der eingetragenen Streams gemeint war, und dessen Namen weiterzureichen. Du kannst auch gerne noch alle möglichen weiteren Informationen abfragen, es wird Dich aber nicht weiterbringen, weil Du eben nicht weißt, um welchen Stream es sich handelt. Wir brauchen also Klarheit über das Verhalten der Funktion GetStatus. Bis dahin ist alles Spieler- oder Glaskugelleserei.
da hast Du 100% Recht und so hatte ich Deinen Vorschlag auch verstanden.
Ich hatte heute einfach rumprobiert und hab GetPrioritiy getestet und gesehen, dass das auch geht. Aber ohne GetState geht es nicht, klar, genau wie Du schreibst.
Ich hoffe Torben meldet sich dazu.