Ich habe ein Modul erstellt welches einen WebHook nutzt
public function ApplyChanges() {
//Never delete this line!
parent::ApplyChanges();
$this->RegisterHook("/hook/waffi");
}
Wenn ich jetzt ein weiteres Modul erstelle nutzt dieses den selben WebHook (soll es auch)
Lösche ich dieses Modul jetzt bekomme ich diese Abfrage
Wie stelle ich das jetzt an dass der WebHook erst gelöscht wird wenn das letzte Modul der selben Art gelöscht wird ?
Ich kann den WebHook wenn ich das Konfigurationsformular neu speichere wieder anlegen (siehe Code oben) aber das ist nicht gerade User freundlich.
Nicht falsch, aber auch nicht richtig.
Ein Webhook kann Daten nur an eine Instanz übergeben.
Ob dies eine IO, Splitter oder Geräte-Instanz ist, ist egal.
Auch immer daran denken, es kann u.u. auch mehrere IO oder Splitter vom gleichen Typ geben!
Siehe mehrere Kodi-Splitter für mehrere Systeme. Somit braucht jede Instanz seinen eigenen Webhook.
Michael
OKich habe das jetzt mal umgeschrieben und eine ID mitgegeben, bekomme aber weiterhin die Meldung. Die Hooks der nicht gelöschten Instanzen bleiben aber wie gewünscht erhalten
public function Destroy() {
if (!IPS_InstanceExists($this->InstanceID)) {
$this->UnregisterHook("/hook/waffi_" . $this->InstanceID);
}
parent::Destroy();
}
Die Meldung wirst du auch nie wegbekommen.
Die Console fragt den Server ob es eine Referenz auf deine Instanz-ID gibt.
Als Antwort kommt das die Webhook-Instanz deine ID referenziert.
Beeinflussen kannst du das nicht, da die Webhook-Instanz ihre eigenen Referenz an den Kernel meldet.
Eine Funktion im SDK welche vor dem löschen der Instanz ausgeführt wird, gibt es nicht.
Destroy wird aufgerufen, wenn deine Instanz schon gelöscht wurde. (Ja, und wenn man den Dienst beendet)
Deswegen auch extra die Abfrage im Code:
if (!IPS_InstanceExists($this->InstanceID) // Instanz wurde eben gelöscht und existiert nicht mehr