72_FBTAM.pm für den FritzBox-Anrufbeantworter

Begonnen von Prof. Dr. Peter Henning, 06 August 2025, 18:21:05

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

#30
Zitat von: Gonzo am 28 Dezember 2025, 17:46:41MsgrRecList
Das ist ja auch nicht der Telegram-Befehl, sondern die Liste der Empfänger. Und natürlich muss da das Sonderzeichen @ escaped werden

ZitatAnscheinend kommt mein FHEM nicht mit dem direkten set TelegramBot Befehl bei MsgrFun zurecht, sondern benötigt das fhem('set TelegramBot ...') Konstrukt...?
Ah, OK, da habe ich einen Fehler in die Dokumentation eingebaut. Sorry, es muss in der Tat Perl-Code sein, nicht FHEM-Code.

Habe ich im Wiki ebenso wie in der CommandRef gefixt und eingecheckt.

LG

pah

Gonzo

Ok passt, dann hat sich das auch aufgeklärt.


Zitat von: Prof. Dr. Peter Henning am 28 Dezember 2025, 02:40:36Ich muss mal etwas herumprobieren, wie man das verhindern kann - das wird aber eine Weile dauern. Und zwar deshalb, weil bei mir der TelegramBot in einer anderen FHEM-Instanz läuft. Insofern: funktionierende lokale Anwendungen gerne hier posten.

Hierzu folgender Vorschlag als Anregung (meine Perl Kenntnisse sind nur sehr rudimentär, deshalb ist das mit Hilfe von ChatGPT entstanden - sollte das nicht erwünscht sein oder "Blödsinn" sein, dann nehme ich es wieder raus):

Zusammenfassung:
1. FBTAM_downloadMsg bekommt optional einen Callback
2. Callback wird am Ende des Nonblocking-Callbacks aufgerufen
3. FBTAM_sendMsgrMsg und FBTAM_sendEmailMsg verschieben das Senden in diesen Callback

Diff:
FBTAM_downloadMsg – Signatur erweitern
-sub FBTAM_downloadMsg {
-  my ($hash, $dlIndex) = @_;
+sub FBTAM_downloadMsg {
+  my ($hash, $dlIndex, $onComplete) = @_;

Callback am Ende des Nonblocking-Callbacks ausführen
     if( $cmd ){
       $cmd =~ s/INPUT/$target/;
       $cmd =~ s/OUTPUT/$target2/;
       $cmd =~ s/META/$msgmsg/;
       eval($cmd);
       Log 4, "[FBTAM] $name: Message with index $dlIndex converted to $target2";
       readingsSingleUpdate($hash, "msg", "Nachricht mit Index $dlIndex konvertiert nach $target2", 1);
       readingsSingleUpdate($hash,"tam_msgurl",$target2,1);
     }else{
       system('rm '.$target2);
     }
+
+    # ---- Callback: Download + Verarbeitung vollständig abgeschlossen
+    if (defined $onComplete && ref($onComplete) eq 'CODE') {
+      $onComplete->($hash);
+    }
   };

FBTAM_sendMsgrMsg Änderung (FBTAM_sendEmailMsg analog)
-  FBTAM_downloadMsg($hash,$dlIndex);
-  my $target  = ReadingsVal($name,"tam_msgurl","");
-  my $meta = ReadingsVal($name,"tam_msgmsg","");
-  my $cmd;
-  foreach my $rec (@mrl){
-    $cmd = $MsgrFun;
-    $cmd =~ s/REC/$rec/;
-    $cmd =~ s/META/$meta/;
-    $cmd =~ s/FILE/$target/;
-    eval($cmd);
-  }
+  FBTAM_downloadMsg($hash,$dlIndex, sub {
+    my ($hash) = @_;
+    my $target = ReadingsVal($name,"tam_msgurl","");
+    my $meta   = ReadingsVal($name,"tam_msgmsg","");
+    my $cmd;
+    foreach my $rec (@mrl){
+      $cmd = $MsgrFun;
+      $cmd =~ s/REC/$rec/;
+      $cmd =~ s/META/$meta/;
+      $cmd =~ s/FILE/$target/;
+      eval($cmd);
+    }
+  });

Zumindest bei mir werden mit den Änderungen jetzt die "gewünschten" Nachrichten versendet.

Prof. Dr. Peter Henning

Nein, das werde ich so nicht übernehmen.

LG

pah

Shadow3561

Moin,
erst einmal vielen Dank für das Modul. Bei mir funktioniert es leider nicht (mehr).

Ich kann zwar sehen ob neue Nachrichten da sind, aber kann den AB nicht an/aus schalten und der Name vom AB wird auch nicht abgerufen.
Ein "getInfo" bringt folgendes
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetInfoResponse xmlns:u="urn:dslforum-org:service:X_AVM-DE_TAM:1">
<NewEnable>1</NewEnable>
<NewName>Anrufbeantworter</NewName>
<NewTAMRunning>1</NewTAMRunning>
<NewStick>2</NewStick>
<NewStatus>32768</NewStatus>
<NewCapacity>0</NewCapacity>
<NewMode>record_message</NewMode>
<NewRingSeconds>30</NewRingSeconds>
<NewPhoneNumbers></NewPhoneNumbers>
</u:GetInfoResponse>
</s:Body>
</s:Envelope>

Anbei ein list
Internals:
   DEF        FritzBox 1
   FBDev      FritzBox
   FUUID      6894c6e6-f33f-d66d-8327-fcfd2c0bb294f886
   FVERSION   72_FBTAM.pm:0.306680/2025-12-28
   INTERVAL   60
   NAME       FB_Anrufbeantworter
   NR         1626
   SID        51a44351e28cce49
   STATE      1
   TAM        1
   TYPE       FBTAM
   USERNAME   Daniel
   eventCount 82
   MessageList:
   READINGS:
     2025-12-29 17:03:57   fritzbox_ip     192.168.1.1
     2025-12-29 17:03:57   msg             Nachrichtenliste unverändert
     2025-12-29 17:03:57   tam_name        ?
     2025-12-29 17:03:57   tam_newMsg      0
     2025-12-29 17:03:57   tam_oldMsg      0
     2025-12-29 17:03:57   tam_state       0
Attributes:
   group      Telefon
   icon       volume-control-phone
   room       Server
   username   Daniel

Mit freundlichen Grüßen