FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Christoph Morrison am 20 Mai 2018, 21:46:37

Titel: [Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: Christoph Morrison am 20 Mai 2018, 21:46:37
Hallo zusammen, hallo insbesondere Loredo,

ich wollte mir einen Link (Link auf Apple Maps mit Location) mit Hilfe des msg-Befehls über Telegram schicken.
Schickt man http://maps.apple.com/?saddr=Cupertino&daddr=San+Francisco (http://maps.apple.com/?saddr=Cupertino&daddr=San+Francisco) direkt über den Telegram-Bot, wird der Link korrekt zugestellt und kann angeklickt werden.

Schickt man den gleichen Link mit msg, wird folgende Fehlermeldung ausgelöst und keine Meldung verschickt.

Usage: msg [<type>] [<@device>|<e-mail address>] [<priority>] [|<title>|] <message>

Soweit ich das jetzt eruieren konnte, hängt es am Gleichheitszeichen:

Sende ich https://example.org/?test (https://example.org/?test), kommt das auch so in Telegram an und kann direkt angeklickt werden.
Sende ich https://example.org/?test=1 (https://example.org/?test=1) kommt die Usage-Meldung.

Brauchst du/ihr weitere Infos?

Gruß
CM
Titel: Antw:[Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: amenomade am 20 Mai 2018, 22:02:36
Mit quotes?
Titel: Antw:[Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: Christoph Morrison am 20 Mai 2018, 22:25:56
Zitat von: amenomade am 20 Mai 2018, 22:02:36
Mit quotes?

Weder

"msg https://example.org/?test=1"
noch
msg "https://example.org/?test=1" (Usage-Meldung)

funktionieren wie erwartet.
Titel: Antw:[Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: Loredo am 21 Mai 2018, 12:05:30
MSG nutzt hier die parseParams Funktion von FHEM, idealerweise würden André oder Rudi es dort beheben.


Sent from my iPhone using Tapatalk
Titel: Antw:[Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: dev0 am 21 Mai 2018, 12:54:36
Idealerweise würde der Modulautor die Autoren der benutzten Sub(s) ansprechen, um Probleme zu beseitigen, statt es auf den Endanweder abzuwälzen.
Titel: [Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: Loredo am 21 Mai 2018, 14:02:12
Deine Art ist einer der Gründe, weshalb ich für FHEM Entwicklung keine Lust mehr habe. Dazu gehört auch, dass ich mir kein Bein mehr ausreiße, um etwas weiterzuleiten.

Ich habe 3 Wochen Urlaub und bin unterwegs, aber an sowas allein denkt natürlich niemand. So long...



Sent from my iPhone using Tapatalk
Titel: Antw:[Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: marvin78 am 21 Mai 2018, 15:27:27
Ob Urlaub oder nicht, an der Aussage von dev0 ist völlig korrekt und die Art (direkt und klar) auch sehr in Ordnung. Dass in deiner Abwesenheit jemand das ganze übernehmen könnte wäre einer Bitte sicher Wert gewesen aber das ist eben offenbar nicht deine Art.
Titel: Antw:[Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: Christoph Morrison am 21 Mai 2018, 21:50:45
ZitatMSG nutzt hier die parseParams Funktion von FHEM, idealerweise würden André oder Rudi es dort beheben.
Vielen Dank für den Hinweis. Ich hab mir den Code von parseParams flüchtig angeguckt, aber keine einfache Lösung entdeckt. Ich werde es dann an Rudi bzw. André weitergeben.

ZitatIdealerweise würde der Modulautor die Autoren der benutzten Sub(s) ansprechen, um Probleme zu beseitigen, statt es auf den Endanweder abzuwälzen.
Das ist vielleicht nicht der Idealfall (Endanweder behebt das Problem einfach direkt selbst und kontribuiert die Lösung), aber ist zumindest mal effektiv dafür, dass das Problem nicht untergeht.

ZitatDeine Art ist einer der Gründe, weshalb ich für FHEM Entwicklung keine Lust mehr habe. Dazu gehört auch, dass ich mir kein Bein mehr ausreiße, um etwas weiterzuleiten.
Ich habe 3 Wochen Urlaub und bin unterwegs, aber an sowas allein denkt natürlich niemand. So long...

Sei dir natürlich gegönnt und es wäre schade, wenn du aufhörst hier etwas bei zu steuern. Mir hätte es z.B. geholfen, wenn du in deinem Forenprofil einfach deine Abwesenheit notiert hättest (dann hätte ich dich gar nicht erst angeschrieben und auch keinen Thread erstellt) oder aber sie kurz per PM oder in deiner ersten Antwort hier im Thread erwähnt hättest, dann wäre das auch notiert gewesen.

Ich bin ja selbst schon lange und seit meiner Kindheit Softwareentwickler und weiß, dass wir gelegentlich Recht haben, aber sozial doch nicht funktionieren mögen. Vielleicht reißen wir uns zusammen.
Titel: Antw:[Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden
Beitrag von: Christoph Morrison am 31 Mai 2018, 17:37:32
So, nun hatte ich ein bisschen Zeit und habe mir das noch mal angeschaut.

Der Inputstring Schau dir mal den Link https://example.org/?test=1 an wird von parseParams() zu folgender Datenstruktur zerlegt:

$VAR1 = [
          'Schau',
          'dir',
          'mal',
          'den',
          'Link',
          'an'
        ];
$VAR2 = {
          'https://example.org/?test' => '1'
        };


$keyvalueseparator ist in parseParams() als Gleichheitszeichen vorbelegt und matcht natürlich nun auf das Gleichheitszeichen in der URL. Da msg - soweit ich das im Code / Commandref fehlt leider / hier im Forum nachvollziehen konnte, benutzt msg das parseParams() um einen msgText setzen zu können. Der Sinn dafür erschließt sich mir gerade nicht, freue mich aber über Hinweise.

Mein Vorschlag wäre: Wenn nichts dagegen spricht, könnte
- Rudi parseParams() so modifizieren, dass man als vierten Parameter für parseParams(), $keyvalueseparator, auch undef übergeben kann und dann wird kein $keyvalueseparator, auch nicht der Defaultwert, mehr gesetzt, und
- Loredo den Aufruf von parseParams() so umschreiben, dass als vierter Parameter undef übergeben wird und damit auch URL mit Key-Value-Paaren übergeben werden könnten.

Alternativ und nur 2. Wahl könnte Loredo auch die Unterstützung für den msgText-Parameter ausbauen und dann für $keyvalueseparator einen zufälligen Wert übergeben. Soweit ich das sehen kann ist msgText nirgendwo dokumentiert und auch der einzige unterstützte Parameter.