[Gelöst] [TALKTOME] <--> [TelegramBot] Kommunikationsschwierigkeiten

Begonnen von yrwyddfa, 24 April 2017, 21:00:52

Vorheriges Thema - Nächstes Thema

yrwyddfa

Hallo zusammen,

das ist gerade wie bei meiner Frau und mir: Wir reden beide, aber verstehen einander nicht ;)

Nein, Spaß beiseite, ich mach wahrscheinlich einen total doofen Denkfehler oder hab irgendwo etwas falsch gemacht, find aber die Lösung nicht, weder mit Google noch mit Anstarren meiner Konfigurationen. Ich hoffe, mir kann jemand helfen:
Talktome interpretiert die eingegebenen Werte korrekt nach meinem gebasteltem rivescript und gibt den richtigen Wert aus. TelegramBot redet mit Fhem und fhem mit Telegram (bis auf die SVG-Darstellung, aber das ist ein anderes Thema, denke ich).
Aber irgendwie gibt TelegramBot die Werte nicht an talktome weiter und umgekehrt auch nicht. Ein Notbehelf, indem ich beide Richtungen mit einem notify versucht habe zu überbrücken schlug auch fehl (Talktome hat die Werte von TelegramBot aufgenommen, sie auch verarbeitet, aber offensichtlich nicht verstanden - wie auch immer, ich weiß dass diese Notify-Geschichte sicherlich nicht Sinn der Sache ist).

Entweder also stimmt etwas mit meiner Konfiguration nicht, etwas fehlt oder es funktioniert nicht so wie ich glaube dass es sollte.

Hier sind meine relevanten Daten (hoffe, die reichen?):



relevanter Fhemlog-Ausschnitt nach Absetzen (keine Einträge über die anderen hier genannten Devices vorhanden)

2017.04.23 22:30:07 3: TelegramBot_ReadHandleCommand SarahSends: cmd found :hallo sarah:
2017.04.23 22:31:50 3: TelegramBot_ReadHandleCommand SarahSends: cmd found :set TALKTOME_ME query hallo sarah:
2017.04.23 22:32:17 3: TelegramBot_ReadHandleCommand SarahSends: cmd found :set TALKTOUSER_ME query hallo sarah:




list TALKTOUSER_ME

Internals:
   FHEMTALKTOME_MSGCNT 8
   FHEMTALKTOME_TIME 2017-04-24 08:18:24
   FHEMTALKTOME_answer Bitte rede verständlich mit mir, ich hatte noch keinen Kaffee
   FHEMTALKTOME_answertype REPLY
   FHEMTALKTOME_device FHEMTALKTOME
   FHEMTALKTOME_modSourceDeviceName TALKTOUSER_ME
   FHEMTALKTOME_sourceDeviceName TALKTOUSER_ME
   IODev      FHEMTALKTOME
   LASTInputDev FHEMTALKTOME
   MSGCNT     8
   NAME       TALKTOUSER_ME
   NR         370
   NTFY_ORDER 50-TALKTOUSER_ME
   STATE      Reply received
   TYPE       TALKTOUSER
   Readings:
     2017-04-24 08:18:24   lastprocessedquery $
     2017-04-24 08:18:24   lastquery       $
     2017-04-24 08:18:24   reply           Bitte rede verständlich mit mir, ich hatte noch keinen Kaffee
     2017-04-24 08:18:24   state           Reply received
Attributes:
   IODev      FHEMTALKTOME
   nomatch    Ich konnte leider keine gute Antwort finden!
   noreply    Ich weiss leider nicht was ich darauf sagen soll!
   realname   TALKTOUSER_ME
   room       xSarah,xconf




list FHEMTALKTOME

Internals:
   NAME       FHEMTALKTOME
   NR         369
   STATE      Reply sent to TALKTOUSER_ME
   TYPE       TALKTOME
   Readings:
     2017-04-24 08:18:24   state           Reply sent to TALKTOUSER_ME
Attributes:
   disable    0
   room       xSarah,xconf
   rsbraindir ./FHEM/rive
   rsbrainfile ./FHEM/rive/TALKTOME.rive




list global


Internals:
   DEF        no definition
   NAME       global
   NR         1
   STATE      no definition
   TYPE       Global
   currentlogfile ./log/fhem-2017-04.log
   logfile    ./log/fhem-%Y-%m.log
Attributes:
   autoload_undefined_devices 1
   configfile fhem.cfg
   latitude   49.990717
   logfile    ./log/fhem-%Y-%m.log
   longitude  7.969208
   modpath    .
   motd       none
   room       xconf
   sendStatistics 1
   statefile  ./log/fhem.save
   updateInBackground 1
   userattr   cmdIcon devStateIcon devStateStyle fm_fav fm_groups fm_name fm_order fp_FlurDisplay icon msgContactAudio msgContactLight msgContactMail msgContactPush msgContactScreen msgParams msgPriority msgRecipient msgRecipientAudio msgRecipientLight msgRecipientMail msgRecipientPush msgRecipientScreen msgRecipientText msgTitle msgTitleShrt msgType:text,push,mail,screen,light,audio,queue sortby structexclude webCmd widgetOverride
   verbose    3
   version    fhem.pl:14046/2017-04-20


list SarahSends
// mein TelegramBot

Internals:
   FAILS      0
   NAME       SarahSends
   NR         366
   POLLING    1
   SNAME      SarahSends
   STATE      Polling
   TYPE       TelegramBot
   UPDATER    0
   WAIT       0
   me         249301559:SarahBot:@MessageFromSarahBot
   Contacts:
     232422868  232422868:Heiko_Hartmann:
   Hu_do_params:
     header     agent: TelegramBot/1.0

User-Agent: TelegramBot/1.0

Accept: application/json

Accept-Charset: utf-8
     hideurl    1
     method     GET
     timeout    30
     url
   Hu_upd_params:
     FD         30
     NAME
     addr       https://api.telegram.org:443
     buf
     displayurl <hidden>
     header     agent: TelegramBot/1.0

User-Agent: TelegramBot/1.0

Accept: application/json

Accept-Charset: utf-8
     hideurl    1
     host       api.telegram.org
     hu_blocking 0
     hu_portSfx
     isPolling  update
     loglevel   4
     method     GET
     offset     0
     path       /bottyyyyyyyyyyyyy:XXXXXXXXXXXXXXXXXXXXxx/getUpdates?offset=0&limit=5&timeout=120
     protocol   https
     redirects  0
     timeout    245
     url        https://api.telegram.org/botyyyyyyyyyyyyyyyy:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/getUpdates?offset=0&limit=5&timeout=120
     Hash:
     Sslargs:
   Readings:
     2017-04-13 22:27:17   Contacts        XXXXXXXXXX:Thats_me:
     2017-04-24 00:00:31   PollingErrCount 0
     2017-04-22 04:09:32   PollingLastError Callback returned no valid JSON: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<html>\r\n<head><tit...") at ./FHEM/50_TelegramBot.pm line 1986.

     2017-04-24 08:18:24   StoredCommands  Sarah, set aufEinkaufsliste Duschgel
Sarah, zeigesvg VerlaufImBad
Sarah, zeigesvg SVG_Filelog_Temp_WZ_1
Sarah, zeigesvg SVG_Filelog_Temp_WZ_1.svg
Sarah, zeigesvg VerlaufDraussen
Sarah, hallo sarah
Sarah, guten morgen sarah
Sarah, set TALKTOME_ME query hallo sarah
Sarah, set TALKTOUSER_ME query hallo sarah
Sarah, set MAX_Thermostat_BD desiredTemperature 23

     2017-04-24 08:18:24   msgChat         Thats_me
     2017-04-24 08:18:24   msgChatId       XXXXXXXXX
     2017-04-24 08:18:24   msgFileId
     2017-04-24 08:18:24   msgId           100
     2017-04-24 08:18:24   msgPeer         Thats_me
     2017-04-24 08:18:24   msgPeerId       XXXXXXXXX
     2017-04-24 08:18:24   msgReplyMsgId
     2017-04-24 08:18:24   msgText         Sarah, set MAX_Thermostat_BD desiredTemperature 23
     2017-04-24 08:18:24   prevMsgChat     Thats_me
     2017-04-24 08:18:24   prevMsgFileId
     2017-04-24 08:18:24   prevMsgId       98
     2017-04-24 08:18:24   prevMsgPeer     Thats_me
     2017-04-24 08:18:24   prevMsgPeerId   XXXXXXXXX
     2017-04-24 08:18:24   prevMsgReplyMsgId
     2017-04-24 08:18:24   prevMsgText     Sarah, set TALKTOUSER_ME query hallo sarah
     2017-04-24 08:18:24   sentMsgId       101
     2017-04-24 08:18:24   sentMsgPeerId   XXXXXXXXX
     2017-04-24 08:18:24   sentMsgResult   SUCCESS
Attributes:
   cmdKeyword Sarah,
   cmdRestrictedPeer XXXXXXXX
   defaultPeer XXXXXXXX
   pollingTimeout 120
   room       xSarah
   userattr   talktouserMonitorReading talktouserModSourceDev


If every day has its number, Monday would be a zero division.

yrwyddfa

Ich pushe nochmal umd nutz ihn um die Definitionen der fhem.cfg zu ergänzen (auch noch mal.mit fen beiden notify, ohne die nicht mal eine Übergabe der Texte stattfindet):



define SarahSends TelegramBot
attr SarahSends userattr talktouserMonitorReading talktouserModSourceDev
attr SarahSends cmdKeyword Sarah,
attr SarahSends cmdRestrictedPeer XXXXXXXXXX
attr SarahSends defaultPeer XXXXXXXXXX
attr SarahSends pollingTimeout 120
attr SarahSends room xSarah


define FHEMTALKTOME TALKTOME
attr FHEMTALKTOME disable 0
attr FHEMTALKTOME room xSarah,xconf
attr FHEMTALKTOME rsbraindir ./FHEM/rive
attr FHEMTALKTOME rsbrainfile ./FHEM/rive/TALKTOME.rive
define TALKTOUSER_ME TALKTOUSER
attr TALKTOUSER_ME IODev FHEMTALKTOME
attr TALKTOUSER_ME nomatch Ich konnte leider keine gute Antwort finden!
attr TALKTOUSER_ME noreply Ich weiss leider nicht was ich darauf sagen soll!
attr TALKTOUSER_ME realname TALKTOUSER_ME
attr TALKTOUSER_ME room xSarah,xconf

#händische Verknüpfung TALKTOME und SarahSends

define n_TG2RIVE notify SarahSends:msgText:.* set TALKTOUSER_ME query $EVENT
define n_RIVE2TG notify TALKTOUSER_ME_answer:.* set SarahSends message $EVENT


If every day has its number, Monday would be a zero division.

ripper

Hi,

ich hab mit TALKTOME nur mal "gespielt" und es aktuell nicht wirklich produktiv im Einsatz. Aber was mir aufgefallen ist, du hast im Telegrambot Device die beiden userattr definiert aber sie dann nicht gesetzt. Im Wiki steht:
ZitatWas heissen die Attribute?

    talktouserMonitorReading: Bezeichnet das Reading welches überwacht werden soll, im falle von Telegram ist dies auf "msgText" zu setzen
    talktouserModSourceDev: Lässt eine Änderung des Quell Devices zu. So muss beispielsweise für Telegram, damit eine Antwort machbar ist, das Quelldevice verändert werden. Lokale Readings (also vom Quelldevice) werden mit %%readingname%% angegeben, das device selbst ist %DEVICE%. Für Telegram muss beispielsweise %DEVICE%:@%%msgPeerId%% gesetzt werden, damit die Antworten ankommen.

Gruss
Flo

yrwyddfa

Hi Flo,

Danke Dir für Deine Antwort. Ehrlich gesagt muss ich aber gestehen, dass ich keinen blassen schimmer habe wo ich das hinterlegen soll. Würde das für Telegram heißen, ich setze


attr SarahSends talktouserMonitorReading talktouserModSourceDev %DEVICE%:@%%msgPeerId%%


?
Ich steh hier gerade echt auf dem Schlauch :/
If every day has its number, Monday would be a zero division.

ripper

ich muss jetzt auch ein bisschen raten:

attr SarahSends talktouserMonitorReading msgText
attr SarahSends talktouserModSourceDev %DEVICE%:@%%msgPeerId%%


wie gesagt ich glaube so sollte es gehen. so versteh ich das Wiki.

Gruß
Flo


yrwyddfa

Hmmm, als attr bietet er mir talktouserMonitorReading gar nicht an (manuell in der cfg klappt das auch nicht).

Ich habe es nun mit



attr SarahSends userattr talktouserMonitorReanding msgText
attr SarahSends talktouserModSourceDev %DEVICE%:@%%msgPeerId%%



und auch über



attr SarahSends  talktouserMonitorReanding msgText talktouserModSourceDev %DEVICE%:@%%msgPeerId%%



sowie via



attr SarahSends  talktouserMonitorReanding  talktouserModSourceDev %DEVICE%:@%%msgPeerId%%



versucht, alles jedoch leider ohne Reaktion. Das Readlng bleibt beim TelegramModul und dringt gar nicht erst bis zu TALKTOME durch. Ich bin verwirrt.  ???
If every day has its number, Monday would be a zero division.

ripper

du musst eintragen
attr SarahSends userattr talktouserMonitorReading talktouserModSourceDev

dann bietet er dir die attr auch in der Auswahl an. Ich dachte dass hast du schon so. Im List in deinem ersten Post hattest du die userattr schon drin gehabt.

yrwyddfa

*lach*
Schon sinnvoll zu wissen, was userattr macht *grins*

Danke schon mal dafür, das hab ich nun begriffen. Und der Weg hin geht nun auch, talktome erhält die Textnachrichten von telegram, ich habe folgende Werte gesetzt:


attr SarahSends userattr talktouserMonitorReading talktouserModSourceDev
attr SarahSends talktouserModSourceDev %DEVICE%:@%%msgPeerId%%
attr SarahSends talktouserMonitorReading msgText


Rivescript antwortet auch korrekt, der Input bei TALKTOME stimmt. Nur gelangt es von dort noch nicht nach Telegram. Muss es tatsächlich %DEVICE% heißen oder muss hier eine individuelle Einstellung des (welches) Devices vorgenommen werden? Mit SarahSends oder den telegraminternen Botnamen geht es zumindest schon mal nicht. Mannmannmann, ich fühl mich gerade wie ein verdammter Frischling *lach*
If every day has its number, Monday would be a zero division.

ripper

Wenn ich mit meinen müden Augen richtig gelesen habe, wird hier das gleiche Problem beschrieben
https://forum.fhem.de/index.php/topic,54863.msg569959.html#msg569959

vielleicht hilft dir das weiter.

Wenn ich heute Abend dazukomme reaktiviere ich das ganze Konstrukt bei mir mal wieder (wollte ich eh schon länger mal machen) und schau mal was bei mir rauskommt.

Gruss
Flo

ripper

so nachdem ich die TALKTOME und TALKTOUSER Devices wieder aktiviert hatte und im "globalmsg" Device noch das attr msgContactPush gesetzt hatte gings bei mir auf Anhieb. Wobei am Anfang jeder Meldung noch der Name des Talktouser Devices mitkommt. Ich weis dass dies im Thread über das Modul schon mal diskutiert wurde, aber nicht ob es eine Lösung dafür gab.

Angenommen dein globalmsg Device heißt globalmsg dann musst du so tun:
attr globalMsg msgContactPush SarahSends

Gruß
Flo

yrwyddfa

Du bist brilliant! Das war es!

Ich hatte den Thread sogar gelesen - aber hab diesen Abschnitt irgendwie gar nicht mit meiner Thematik in Verbindung gebracht. Jetzt wird auch korrekt durchgeschleift, nur mit
TALKTOUSER_ME 0 | |  <text>

Das werde ich aber in dem von Dir verlinkten Thread anpingen - da ist es ja schon mal beschrieben worden.

Tausend Dank!

yr
If every day has its number, Monday would be a zero division.

ripper

Zitat von: yrwyddfa am 27 April 2017, 21:05:31
Du bist brilliant! Das war es!

Ich hatte den Thread sogar gelesen - aber hab diesen Abschnitt irgendwie gar nicht mit meiner Thematik in Verbindung gebracht. Jetzt wird auch korrekt durchgeschleift, nur mit
TALKTOUSER_ME 0 | |  <text>

Das werde ich aber in dem von Dir verlinkten Thread anpingen - da ist es ja schon mal beschrieben worden.

Tausend Dank!

yr
Tip top
Freut mich wenns geht[emoji3]

Gesendet von meinem Moto G 2014 mit Tapatalk