Autor Thema: HTTPMOD und callmebot set Problem  (Gelesen 391 mal)

Offline ahermann86

  • Full Member
  • ***
  • Beiträge: 144
HTTPMOD und callmebot set Problem
« am: 29 Juni 2021, 13:03:36 »
Hallo,

ich versuche über www.callmebot.com und HTTPMOD eine Nachricht an mich zu versenden (Als Alternative zu Pushnotifier..).

Grundsätzlich funktioniert das auch so:

defmod CallMeBotAxel HTTPMOD none 0
attr CallMeBotAxel room System
attr CallMeBotAxel set01Name Msg
attr CallMeBotAxel set01TextArg 1
attr CallMeBotAxel set01URL https://api.callmebot.com/signal/send.php?phone=+49MEINENUMMER&apikey=MEINKEY&text=$val

Allerdings mit nur einem Wort. Wenn ich das über den Browser mache, muss ich zwischen die Wörter %20 einfügen.
Wie bekomme ich das mit HTTPMOD hin? Mit Regex müsste das doch gehen...

So in der Art: attr CallMeBotAxel set01Expr $val =~ s/ /%20/
Wo liegt mein Denkfehler..?

Gruß
Axel

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1669
Antw:HTTPMOD und callmebot set Problem
« Antwort #1 am: 30 Juni 2021, 19:45:57 »
Hallo Axel,

probier mal
attr CallMeBotAxel set01IExpr $val =~ s/\s/%20/g;; $val;

Die Option g ist wichtig, sonst wird nur ein Space ersetzt.
Das Ergebnis der Expression wir als Wert verwendet. Deshalb am Ende nochmal ;; $val.

Gruss
   Stefan
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline loescher

  • Full Member
  • ***
  • Beiträge: 232
Antw:HTTPMOD und callmebot set Problem
« Antwort #2 am: 19 Juli 2021, 20:30:43 »
Hallo Axel,

Habe gerade diesen Thread gefunden.
Einfach geniale Idee, das per HTTPMOD zu lösen!
Ich hab auch gleich noch eine Verbesserung für dich, damit nicht nur Leerzeichen korrekt codiert werden, sondern alles:

attr CallMeBotAxel set01IExpr $val = uri_escape($val);; $val;
LG,
Stephan.

Offline ahermann86

  • Full Member
  • ***
  • Beiträge: 144
Antw:HTTPMOD und callmebot set Problem
« Antwort #3 am: 21 Juli 2021, 12:54:45 »
Hallo Stephan,

gute Idee:

Es geht sogar noch einfacher:  8)
attr CallMeBotAxel set01IExpr uri_escape($val)
Allerdings hat deine Methode einen Haken:  :-\
set CMBotAxel Msg %E2%9D%97 Windalarm erkannt!!
geht nicht mehr, da die uri_escape Funktion das daraus macht:
%25E2%259D%2597%20Windalarm%20erkannt%21%21

Deswegen bleibt meine Lösung so:  ::)
attr CallMeBotAxel set01IExpr $val =~ s/\s/%20/g; $val

Gruß
Axel

Offline loescher

  • Full Member
  • ***
  • Beiträge: 232
Antw:HTTPMOD und callmebot set Problem
« Antwort #4 am: 21 Juli 2021, 20:57:42 »
Hallo Axel,

Da hast du Recht, das hatte ich nicht bedacht, dass im Input auch schon Prozent-Escapes sein können.
Aber dadurch hast du mich auf eine Lösung gebracht, die alle Fälle abdeckt:
attr CallMeBotAxel set01IExpr uri_escape(uri_unescape($val))

 8)

LG,
Stephan.

 

decade-submarginal