Events von Webhook erfassen

Na dann steht da auch nix drin, oder?

Hier mal das ganze Array. Ich hatte gehofft die IP vom Client?

Array(    [data] => {"Event":"playback.stop","User":{"Name":"#######","ServerId":"############","Id":"############","HasPassword":true,"HasConfiguredPassword":true,"HasConfiguredEasyPassword":false,"LastLoginDate":"2022-03-06T13:59:20.4061608+00:00","LastActivityDate":"2022-03-07T19:23:16.9851230+00:00","Configuration":{"AudioLanguagePreference":"","PlayDefaultAudioTrack":true,"DisplayMissingEpisodes":false,"SubtitleMode":"Default","EnableLocalPassword":false,"OrderedViews":["ed19a1d09d3fb7e2103ed81c8d45476b","b17188214bdb273b9a0b91d22415b5f6","4083de9a36b6756f61df4db5b4ce1400","43cfe12fe7d9d8d21251e0964e0232e2","76e55178442861c772cecabc3859a820","e82715c933fdb407a2c84f21153789cf","69be44262059b9426026aae807abd8ec","ef4334493a2ad39dd9547aab894837a3","221ae5e762039478b793446106f09ffa","dbbcb697ad52d5e9939f9ec1e9fc2c07","647e367d04ce9136b675a02c4b657433","ac675b01e9e42eaeb6099b87f267ebb2","542982fef76b941ec285a96e910407b3"],"LatestItemsExcludes":["542982fef76b941ec285a96e910407b3"],"MyMediaExcludes":[],"HidePlayedInLatest":false,"RememberAudioSelections":true,"RememberSubtitleSelections":true,"EnableNextEpisodeAutoPlay":false},"Policy":{"IsAdministrator":true,"IsHidden":false,"IsHiddenRemotely":true,"IsHiddenFromUnusedDevices":false,"IsDisabled":false,"BlockedTags":[],"IsTagBlockingModeInclusive":false,"EnableUserPreferenceAccess":true,"AccessSchedules":[],"BlockUnratedItems":[],"EnableRemoteControlOfOtherUsers":true,"EnableSharedDeviceControl":true,"EnableRemoteAccess":true,"EnableLiveTvManagement":true,"EnableLiveTvAccess":true,"EnableMediaPlayback":true,"EnableAudioPlaybackTranscoding":true,"EnableVideoPlaybackTranscoding":true,"EnablePlaybackRemuxing":true,"EnableContentDeletion":true,"EnableContentDeletionFromFolders":[],"EnableContentDownloading":true,"EnableSubtitleDownloading":true,"EnableSubtitleManagement":true,"EnableSyncTranscoding":true,"EnableMediaConversion":true,"EnabledChannels":[],"EnableAllChannels":true,"EnabledFolders":[],"EnableAllFolders":true,"InvalidLoginAttemptCount":0,"EnablePublicSharing":true,"RemoteClientBitrateLimit":0,"AuthenticationProviderId":"Emby.Server.Implementations.Library.DefaultAuthenticationProvider","ExcludedSubFolders":[],"SimultaneousStreamLimit":0,"EnabledDevices":[],"EnableAllDevices":true}},"Item":{"Name":"voelki","ServerId":"###############","Id":"32946","DateCreated":"2017-03-12T17:44:20.0000000+00:00","PresentationUniqueKey":"###############","Container":"mp4","ExternalUrls":[],"Path":"/volume1/Phantom3/Fotos und Videos/voelki.MP4","Taglines":[],"Genres":[],"RunTimeTicks":7313139170,"ProviderIds":{},"IsFolder":false,"ParentId":"32813","Type":"Video","Studios":[],"GenreItems":[],"PrimaryImageAspectRatio":1.7777777777777777,"MediaStreams":[{"Codec":"h264","CodecTag":"avc1","Language":"eng","ColorTransfer":"bt709","ColorPrimaries":"bt709","ColorSpace":"bt709","TimeBase":"1/24000","CodecTimeBase":"1001/48000","VideoRange":"SDR","DisplayTitle":"1080p H264","DisplayLanguage":"English","NalLengthSize":"4","IsInterlaced":false,"IsAVC":true,"BitRate":24975697,"BitDepth":8,"RefFrames":1,"IsDefault":true,"IsForced":false,"Height":1080,"Width":1920,"AverageFrameRate":23.976025,"RealFrameRate":23.976025,"Profile":"High","Type":"Video","AspectRatio":"16:9","Index":0,"IsExternal":false,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Protocol":"File","PixelFormat":"yuv420p","Level":41,"IsAnamorphic":false}],"ImageTags":{"Primary":"26bc2f4b2181885d3fe9feffba3e8172"},"BackdropImageTags":[],"Chapters":[{"StartPositionTicks":0,"Name":"Kapitel 1"},{"StartPositionTicks":3000000000,"Name":"Kapitel 2"},{"StartPositionTicks":6000000000,"Name":"Kapitel 3"}],"MediaType":"Video","Width":1920,"Height":1080},"Server":{"Name":"Emby Server","Id":"##############"},"Session":{"RemoteEndPoint":"192.168.178.66","Client":"Emby for Android","DeviceName":"S10 von Sven","DeviceId":"46c07f2e2871b799","ApplicationVersion":"3.2.32","Id":"#############"}})

Dann schau Dir mal Dein JSON genau an, da ist noch ein „Session“ davor …

	"Session": {
		"RemoteEndPoint": "192.168.178.66",
		"Client": "Emby for Android",
		"DeviceName": "S10 von Sven",
		"DeviceId": "46c07f2e2871b799",
		"ApplicationVersion": "3.2.32",
		"Id": "#############"
	}

Also nochmal neu Decoden wie im Fall Event?

ähnlich dem? $Data = json_decode($_POST[‚data‘], true);

Sorry für die blöden Fragen :smile:

Eigentlich habe ich hier nicht wirklich mitgelesen - wollte nur kurz helfen!

Hier ist ein cooler Online Converter von JSON => PHP-Array, da kann man dann schnell lernen wie das so aussieht JSON / PHP Array Converter Online - AppDevTools

Aber ja, wenn Du das als String hast dann nochmal decoden!

Gruß Heiko

1 „Gefällt mir“

Alleine bekomme ich das niemals hin, jedenfalls nicht die nächsten Monate :smile:

Das ist kein Array, das ist noch immer Post[Data] ohne json_decode.
Es ist nicht hilfreich nur eine Ausgabe ohne den Code zu zeigen, welcher diese Ausgabe erzeugt.
Du hast doch das ganze Array schon hier:

$Data = json_decode($_POST['data'], true);

Das jetzt einmal mit
IPS_LogMessage('Data', print_r($Data, true));
In das Logfile/Meldungsfenster ausgeben.
Dann sieht du wie das Array aufgebaut ist.
Musst dann halt so viele Schlüssel mit [... ] angeben bis du am Ziel bist.
Z.b.
$Data['Session']['RemoteEndPoint']
Wobei ich den Aufbau jetzt am Handy nicht geprüft habe.
Wenn es an dem grundlegende Verständnis von Arrays und Variablen scheitert, dann gerne auch die PHP Doku bemühen. Beispiel 7 zeigt es:
https://www.php.net/manual/de/language.types.array.php
Michael

1 „Gefällt mir“

Vielen Dank ihr beiden, ihr habt es mit der Erklärung bereis gelöst

    SetValueString(13894, $Data['Session']['RemoteEndPoint']);

Genau damit gehts, die IP wird in die Variable geschrieben. Vielen Dank für eure Geduld und eure große Hilfe.

Hallo,

hab noch eine Frage. Ich möchte aus dem Pfad für ein if/else Script nur einen Teil aus dem Pfad abfragen. In dem Fall „Phantom3“, um z.b. eine eigene Lichtfarbe schalten zu können. Weitergesponnen könnte man auch nach Genre usw. machen, unbegrenzte Möglichkeiten :grinning:

Den Teil aus dem Array hab ich schon, siehe Log-Pfad und dank eurer Hilfe

IPS_LogMessage('Data', $Data['Item']['Path']);

dies wäre aus dem Array der ausgebene Pfad im Log

/volume1/Phantom3/Fotos und Videos/2016-11-26_11.45.56 Uhr.mp4

Welche Möglichkeiten habe ich?

Entweder mit str_contains prüfen ob ein Teil im Pfad vorkommt, mit z.B.
https://www.php.net/manual/de/function.str-contains
Oder aber es mit explode wieder in ein Array zerlegen und dort suchen/prüfen.
Z.b. https://www.php.net/manual/de/function.in-array

Auf jeden Fall wirst du dich dann etwas mehr mit Grundlagen beschäftigen müssen.
Wie das ein Backslash im Code escaped werden muss.
https://www.php.net/manual/de/language.types.string.php

Michael

Hatte es jetzt mit str_contains probiert, aber noch nicht hinbekommen.

$playpfad = GetValue(57847); #Pfad in Variable schreiben

           if (str_contains($playpfad, 'Phantom3'))
        {
            $InstanzID= 54532;
            $color = hexdec('FF0000');
            $opt = ['on' => true, 'bri' => 60,  'transitiontime' => 45];
            PHUE_ColorSetOpt($InstanzID, $color, $opt);
        }

So habe ich es jedenfalls verstanden, aber scheinbar ist hier noch ein Fehler.

Mein Fehler, habe nicht aufgepasst. Die Funktion gibt es erst in php8
Also doch eher
https://www.php.net/manual/de/function.strpos.php
Michael

1 „Gefällt mir“

Das klappt wunderbar, ich danke dir, mal wieder :muscle: :smiley: