Pushover mit Prio 2 und action funktioniert nicht

Begonnen von nuccleon, 16 Februar 2019, 22:50:12

Vorheriges Thema - Nächstes Thema

nuccleon

Hallo zusammen,

ich spiele bei pushover gerade ein bischen mit action und url_title herum.
Ich habe nun das Problem, dass das Modul expire nicht erkennt sobald ich url_title und action mit im Aufruf haben.
Hier ein Auszug aus dem EventLog.

2019-03-02 12:32:18 Pushover pushmsg msg Test-Text title="Test!" priority=2 retry=30 expire=900 url_title="Abbrechen" action="set device reading 1"
2019-03-02 12:32:19 Pushover pushmsg tokenState: valid
2019-03-02 12:32:19 Pushover pushmsg userState: valid
2019-03-02 12:32:19 Pushover pushmsg lastTitle: Test!
2019-03-02 12:32:19 Pushover pushmsg lastMessage: Test-Text
2019-03-02 12:32:19 Pushover pushmsg lastPriority: 2
2019-03-02 12:32:19 Pushover pushmsg lastAction: set device reading 1
2019-03-02 12:32:19 Pushover pushmsg lastDevice: all
2019-03-02 12:32:19 Pushover pushmsg lastRequest: e81ff8c2-3089-4328-8c46-c530ed6c1729
2019-03-02 12:32:19 Pushover pushmsg lastResult: Error 400: expire must be supplied with priority=2
2019-03-02 12:32:19 Pushover pushmsg available: 1
2019-03-02 12:32:19 Pushover pushmsg error


Hier das list von pushmsg:

Internals:
   APP_TOKEN  aephqegbu1qvi52w7iom9o9w75fq3z
   CFGFN     
   DEF        aephqegbu1qvi52w7iom9o9w75fq3z u5w94jotqcyo44qqaupqe85optgse9 pushCallback
   FUUID      5c785965-f33f-88d3-8666-f437e2d82fe6ae36
   NAME       pushmsg
   NR         104
   STATE      error
   TYPE       Pushover
   USER_KEY   u5w94jotqcyo44qqaupqe85optgse9
   VALIDATION_TIMER 1551547939.46311
   VERSION    70_Pushover.pm:v0.0.18690/2019-02-22
   OLDREADINGS:
   READINGS:
     2019-03-02 12:32:19   available       1
     2019-03-02 12:32:19   lastAction      set device reading 1
     2019-03-02 12:32:19   lastDevice      all
     2019-03-02 12:32:19   lastMessage     Test-Text
     2019-03-02 12:32:19   lastPriority    2
     2019-03-02 12:32:19   lastRequest     e81ff8c2-3089-4328-8c46-c530ed6c1729
     2019-03-02 12:32:19   lastResult      Error 400: expire must be supplied with priority=2
     2019-03-02 12:32:19   lastTitle       Test!
     2019-03-02 12:32:19   state           error
     2019-03-02 12:32:19   tokenState      valid
     2019-03-02 12:32:19   userState       valid
   fhem:
     infix      pushCallback
   helper:
     FAILED_USERKEYS:
Attributes:
   icon       pushover
   verbose    5


Und der Vollständigkeit der Inhalt des Logfiles

2019.03.02 12:32:18 5: Pushover pushmsg: called function Pushover_SetMessage2()
2019.03.02 12:32:18 5: Pushover pushmsg: Adding supplementary URL 'Abbrechen' (set device reading 1) with action 'set device reading 1' (expires after  => 1551527238)
2019.03.02 12:32:18 5: Pushover pushmsg: called function Pushover_SendCommand()
2019.03.02 12:32:18 4: Pushover pushmsg: REQ messages.json/priority=2&url=set device reading 1&url_title=Abbrechen&retry=30&action=set device reading 1&message=Test-Text&title=Test!&cbNr=1551527238&token=aephqegbu1qvi52w7iom9o9w75fq3z&user=u5w94jotqcyo44qqaupqe85optgse9
2019.03.02 12:32:18 5: Pushover pushmsg: GET https://api.pushover.net:443/1/messages.json (POST DATA: priority=2&url=set device reading 1&url_title=Abbrechen&retry=30&action=set device reading 1&message=Test-Text&title=Test!&cbNr=1551527238&token=aephqegbu1qvi52w7iom9o9w75fq3z&user=u5w94jotqcyo44qqaupqe85optgse9, noshutdown=1)
2019.03.02 12:32:19 5: Pushover pushmsg: Received HttpUtils callback:

PARAM:
$VAR1 = {
          'service' => 'messages.json',
          'hu_blocking' => 0,
          'protocol' => 'https',
          'hash' => {
                      '.attrminint' => [],
                      'fhem' => {
                                  'infix' => 'pushCallback'
                                },
                      'NR' => 104,
                      'APP_TOKEN' => 'aephqegbu1qvi52w7iom9o9w75fq3z',
                      'helper' => {
                                    'FAILED_USERKEYS' => {}
                                  },
                      '.FhemMetaInternalss' => 1,
                      'VALIDATION_TIMER' => '1551547841.6731',
                      'TYPE' => 'Pushover',
                      'DEF' => 'aephqegbu1qvi52w7iom9o9w75fq3z u5w94jotqcyo44qqaupqe85optgse9 pushCallback',
                      'FUUID' => '5c785965-f33f-88d3-8666-f437e2d82fe6ae36',
                      'READINGS' => {},
                      'VERSION' => '70_Pushover.pm:v0.0.18690/2019-02-22',
                      'STATE' => 'error',
                      'NAME' => 'pushmsg',
                      'USER_KEY' => 'u5w94jotqcyo44qqaupqe85optgse9',
                      '.attraggr' => [],
                      'OLDREADINGS' => {},
                      'CFGFN' => ''
                    },
          'displayurl' => 'https://api.pushover.net:443/1/messages.json',
          'auth' => 0,
          'httpheader' => 'HTTP/1.1 400 Bad Request
Server: nginx
Date: Sat, 02 Mar 2019 11:32:19 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: close
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, X-Prototype-Version, Origin, Accept, Content-Type, X-CSRF-Token, X-Pushover-App, Authorization
Access-Control-Max-Age: 1728000
Cache-Control: no-cache
X-Request-Id: e81ff8c2-3089-4328-8c46-c530ed6c1729
X-Runtime: 0.010947',
          'hu_portSfx' => '',
          'host' => 'api.pushover.net',
          'callback' => sub { "DUMMY" },
          'loglevel' => 4,
          'httpversion' => '1.1',
          'addr' => 'https://api.pushover.net:443',
          'cmd' => 'priority=2&url=set%20device%20reading%201&url_title=Abbrechen&retry=30&action=set%20device%20reading%201&message=Test%2dText&title=Test%21&cbNr=1551527238&token=aephqegbu1qvi52w7iom9o9w75fq3z&user=u5w94jotqcyo44qqaupqe85optgse9',
          'compress' => 1,
          'timeout' => 3,
          'path' => '/1/messages.json',
          'hu_filecount' => 1,
          'noshutdown' => 1,
          'redirects' => 0,
          'type' => {
                      'priority' => 2,
                      'sound' => undef,
                      'url' => 'set device reading 1',
                      'url_title' => 'Abbrechen',
                      'timestamp' => undef,
                      'retry' => 30,
                      'action' => 'set device reading 1',
                      'device' => undef,
                      'message' => 'Test-Text',
                      'title' => 'Test!',
                      'attachment' => undef,
                      'cbNr' => 1551527238,
                      'expire' => undef
                    },
          'NAME' => '',
          'conn' => undef,
          'code' => '400',
          'buf' => '',
          'url' => 'https://api.pushover.net:443/1/messages.json',
          'data' => 'priority=2&url=set%20device%20reading%201&url_title=Abbrechen&retry=30&action=set%20device%20reading%201&message=Test%2dText&title=Test%21&cbNr=1551527238&token=aephqegbu1qvi52w7iom9o9w75fq3z&user=u5w94jotqcyo44qqaupqe85optgse9',
          'sslargs' => {},
          'hu_port' => '443',
          'header' => 'Accept-Charset: UTF-8
Accept: application/json;charset=UTF-8
User-Agent: FHEM-Pushover/1.0.0
Agent: FHEM-Pushover/1.0.0'
        };


ERROR:
$VAR1 = '';


DATA:
$VAR1 = '{"expire":"must be supplied with priority=2","errors":["expire must be supplied with priority=2"],"status":0,"request":"e81ff8c2-3089-4328-8c46-c530ed6c1729"}';

2019.03.02 12:32:19 4: Pushover pushmsg: RCV messages.json/priority=2&url=set device reading 1&url_title=Abbrechen&retry=30&action=set device reading 1&message=Test-Text&title=Test!&cbNr=1551527238&token=aephqegbu1qvi52w7iom9o9w75fq3z&user=u5w94jotqcyo44qqaupqe85optgse9
2019.03.02 12:32:19 5: Pushover pushmsg: RES messages.json/priority=2&url=set device reading 1&url_title=Abbrechen&retry=30&action=set device reading 1&message=Test-Text&title=Test!&cbNr=1551527238&token=aephqegbu1qvi52w7iom9o9w75fq3z&user=u5w94jotqcyo44qqaupqe85optgse9
{"expire":"must be supplied with priority=2","errors":["expire must be supplied with priority=2"],"status":0,"request":"e81ff8c2-3089-4328-8c46-c530ed6c1729"}


Jemand ne Idee?

nuccleon

#1
Hallo zusammen,

ich hatte nun eine neue Erkenntnis die ich hier teilen möchte.
Ich habe in der definition meines Pushover Devices keine callbackUrl angegeben. Mittlerweile ist mir klar geworden, dass ich diese beötige. Ich bin
fälschlicherweise davon ausgegangen, dass die Receips API ( https://pushover.net/api/receipts ) von pushover verwendet wird um Acknowledge zu pollen. Das hätte natürlich den großen Charme, dass die FHEM Installation von außen nicht erreichbar sein müsste... Aber gut, dem ist nicht so und es wird immer asynchron mit dem callback gearbeitet.

Gebe ich nun das callbackUrl Attribut an, verschwindet die Fehlermeldung (Error 400: expire must be supplied with priority=2).


2019-03-02 12:44:44 Pushover pushmsg msg Test-Text title="Test!" priority=2 retry=30 expire=900 url_title="Abbrechen" action="set device reading 1"
2019-03-02 12:44:45 Pushover pushmsg apiLimit: 7500
2019-03-02 12:44:45 Pushover pushmsg apiRemaining: 7394
2019-03-02 12:44:45 Pushover pushmsg apiReset: 1554094800
2019-03-02 12:44:45 Pushover pushmsg tokenState: valid
2019-03-02 12:44:45 Pushover pushmsg userState: valid
2019-03-02 12:44:45 Pushover pushmsg lastTitle: Test!
2019-03-02 12:44:45 Pushover pushmsg lastMessage: Test-Text
2019-03-02 12:44:45 Pushover pushmsg lastPriority: 2
2019-03-02 12:44:45 Pushover pushmsg lastAction: set device reading 1
2019-03-02 12:44:45 Pushover pushmsg lastDevice: all
2019-03-02 12:44:45 Pushover pushmsg lastRequest: 9cbbaaad-d18b-41d3-902c-d3a608d71b19
2019-03-02 12:44:45 Pushover pushmsg cbTitle_1551527984: Test!
2019-03-02 12:44:45 Pushover pushmsg cbMsg_1551527984: Test-Text
2019-03-02 12:44:45 Pushover pushmsg cbPrio_1551527984: 2
2019-03-02 12:44:45 Pushover pushmsg cbAck_1551527984: 0
2019-03-02 12:44:45 Pushover pushmsg cbDev_1551527984: all
2019-03-02 12:44:45 Pushover pushmsg cb_1551527984: rga6pamxk4n8fkf4otr1obonoo1qzi
2019-03-02 12:44:45 Pushover pushmsg cbAct_1551527984: set device reading 1
2019-03-02 12:44:45 Pushover pushmsg lastResult: ok
2019-03-02 12:44:45 Pushover pushmsg available: 1
2019-03-02 12:44:45 Pushover pushmsg connected


Die Frage warum bei fehlender callbackUrl ein fehlendes expire angemeckert wird, kann wohl nur Loredo beantworten.

Um es vorweg zu nehmen, das Acknowledge bzw der Callback funktionieren trotzdem nicht, das ist aber bereits Thema im Hauptthread https://forum.fhem.de/index.php/topic,16215.msg913278.html#msg913278

Loredo

Entweder gab es die Receipts API damals noch nicht oder es war mir zu aufwändig ein Polling zu implementieren.
Callback ist hingegen synchron, nicht asynchron, da direkt und unmittelbar reagiert wird. Beim Polling gibt es Verzögerungen und das will man eigentlich nicht, wenn man auf einen Link tappt und eigentlich eine unmittelbare Reaktion erwartet. FHEM wird langsam, wenn man zu oft etwas pollt.


Expire muss angegeben werden, damit daraus beim Callback die korrekte Aktion wiedergefunden werden kann.
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