[Bug?] HTTP-URI mit Key=Value können nicht über msg gesendet werden

Begonnen von Christoph Morrison, 20 Mai 2018, 21:46:37

Vorheriges Thema - Nächstes Thema

Christoph Morrison

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 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, kommt das auch so in Telegram an und kann direkt angeklickt werden.
Sende ich https://example.org/?test=1 kommt die Usage-Meldung.

Brauchst du/ihr weitere Infos?

Gruß
CM

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus


Loredo

MSG nutzt hier die parseParams Funktion von FHEM, idealerweise würden André oder Rudi es dort beheben.


Sent from my iPhone using Tapatalk
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

dev0

Idealerweise würde der Modulautor die Autoren der benutzten Sub(s) ansprechen, um Probleme zu beseitigen, statt es auf den Endanweder abzuwälzen.

Loredo

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
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

marvin78

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.

Christoph Morrison

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.

Christoph Morrison

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.