72_FB_CALLMONITOR.pm / 72_FB_CALLLIST.pm Anrufbeantworter als missed-call

Begonnen von Torben, 09 Januar 2016, 20:01:05

Vorheriges Thema - Nächstes Thema

Torben

Hallo,
ich lasse mir auf einem Frontend u.a. verpasste Anrufe anzeigen und nutze hierzu die beiden Module. Dabei hat mich gestört, dass ein Anruf, der auf den FB-Anrufbeantworter geht, nicht als missed-call angezeigt wird. In der Logik, dass dieser einer Dauer hat und es auch ein connect-event gab, verstehe ich es. Auf dem Frontend interessiert mich aber, dass ich einen verpassten Anruf hatte (der auf den AB ging).
Daher habe ich in den beiden Modulen etwas die Bedingungen beim "DISCONNECT" angepasst, sodass die AB-Anrufe auch als missed angezeigt werden:
72_FB_CALLMONITOR.pm
        if($array[1] eq "DISCONNECT")
        {
            $hash->{helper}{TEMP}{$array[2]}{call_duration} = $array[3];
                # bei der Bedingung -- or ($hash->{helper}{TEMP}{$array[2]}{internal_connection} eq "Answering_Machine_1") -- ergänzt und entsprechend Klammern gesetzt
            if(exists($hash->{helper}{TEMP}{$array[2]}{direction}) and exists($hash->{helper}{TEMP}{$array[2]}{external_number}) and $hash->{helper}{TEMP}{$array[2]}{direction} eq  "incoming" and (($array[3] eq "0") or ($hash->{helper}{TEMP}{$array[2]}{internal_connection} eq "Answering_Machine_1")))
            {
                $hash->{helper}{TEMP}{$array[2]}{missed_call} = $hash->{helper}{TEMP}{$array[2]}{external_number}.(exists($hash->{helper}{TEMP}{$array[2]}{external_name}) and $hash->{helper}{TEMP}{$array[2]}{external_name} ne "unknown" ? " (".$hash->{helper}{TEMP}{$array[2]}{external_name}.")" : "");
                $hash->{helper}{TEMP}{$array[2]}{missed_call_line} = $hash->{helper}{TEMP}{$array[2]}{internal_number};
            }
        }


72_FB_CALLLIST.pm
    if($event eq "disconnect" )
    {
        $data->{call_duration} = ReadingsVal($fb, "call_duration", undef);
        # bei der Bedingung -- or ($data->{internal_connection} eq "Answering_Machine_1") --  ergänzt         
        if(($data->{last_event} =~ /^call|ring$/) or ($data->{internal_connection} eq "Answering_Machine_1"))
        {
              $data->{missed_call} = 1;
        }

        $data->{last_event} = $event;

        delete($data->{running_call}) if(defined($data->{running_call}));

        Log3 $name, 5, "FB_CALLLIST ($name) - processed disconnect event for call id $call_id";
    }


Die Lösung funktioniert natürlich nur, für den FB-AB "Answering_Machine_1" und ist beim nächsten Update wieder weg. Ich habe es nur kurz getestet und kann nicht mit Sicherheit sagen, dass es in jeder Lage problemlos läuft. Es scheint auf jeden Fall kein Problem zu sein, dass die Variablen bei einem tatsächlich verpassten Anruf vorher überhaupt nicht gefüllt wurden.

Vielleicht ist es aber auch von allgemeinem Interesse, sodass es sich lohnt, in den Modulen das Ganze ggf. mit einem Schalter zu implementieren, sodass der Anwender entscheiden kann, ob ein AB-Anruf missed ist oder nicht. Was meint ihr?

Gruß
Torben

Markus Bloch

Hallo Torben,

ich habe mir schon gedacht, dass irgendwann diese Frage kommt. Finde ich auch gut. Ich würde es jedoch optional via Attribut anbieten wollen, sodass dies jeder selber entscheiden kann.

Ich bin gerade dabei es zu implementieren.

Bedenke aber bitte, das man damit nicht sicher aussagen kann, ob auch eine Nachricht auf dem AB hinterlassen wurde. Wenn der AB rangeht und der Anrufer auflegt, bevor der ominöse Piepton kommt, würde dies dennoch als AB-Anruf gewertet werden und als missed-call signalisiert werden, sofern dies aktiviert ist.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

kvo1

Hallo Markus,

ich fände das auch gut, so kann jeder entscheiden wie er es einstellen möchte.

Danke schon mal für´s Einbauen  ;)

Gruss
Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Markus Bloch

Hallo zusammen,

so, für FB_CALLMONITOR steht das neue Attribut answMachine-is-missed-call bereits mit dem heutigen update zu Verfügung. Wenn es aktiviert ist, wird das Reading "missed_call"  auch für AB-Telefonate getriggert.

FB_CALLLIST gibt es erst morgen via update. Dort ist das gleiche Attribut eingebaut, so dass AB-Telefonate bei list-type "missed-calls" nun mit auftauchen. Das Attribut ist also nur wirksam, wenn list-type "missed-calls" gesetzt ist. Ob bei einem Anruf, der von einem AB angenommen wird, auch wirklich eine Nachricht hinterlassen wird, lässt sich durch FB_CALLLIST nicht feststellen. Hier sollte man über das Modul FRITZBOX prüfen, ob neue Nachrichten vorliegen.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Torben


kvo1

Hallo Markus,

auch meinerseits Danke ! Werde es mal testen!

Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

oti

Hallo,

ich bekomme seit Freitag Abend alle verpassten Anrufe falsch angezeigt, d. h. bei den Readings A0 - A4 steht immer AB bei einem verpassten Anruf (der AB hat sich jedoch noch nicht eingeschaltet!). In den Readings E0 - E4 steht immer die gleiche Zeit (9:43), alle anderen Readings sind ok. Aufgrund des AB in dem Reading bekomme ich immer das Icon audio_volume_mid angezeigt.
Kann es sein, dass dies mit der Änderung zusammenhängt?

Gruß
OTi

CoolTux

Hallo,

Du scheinst noch das alte System der Anruferliste mit einer 99_myUtils und einem notify zu verwenden. Es sieht mir nicht so aus als ob Du FB_Calllist verwendest.
Bitte änder dies bevor Dir jemand zu Deiner Frage eine korrekte Antwort geben kann.



Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

oti

Hallo,

danke für den guten Hinweis. Ich habe die Umstellung auf die neue Calllist jetzt umgesetzt und das Modul gefällt mir sehr gut. Auch von mir Danke.
Schön wäre noch, wenn man nicht nur die Titelzeile wegschalten könnte (no-heading), sondern auch die Überschriftenzeile (Zeitpunkt, Status, Name, ...). Dann wäre der Platzbedarf genauso wie beim vorherigen Modul.
Ansonsten habe ich es top in meinen Floorplan (der fast nur aus ReadingGroups besteht) integriert bekommen.

Gruß
OTi

Markus Bloch

Hallo OTi,

ich habe soeben ein neues Attribut "no-table-header" eingebaut um die Kopfzeile der Tabelle zu verstecken. Wenn man das auf 1 setzt, wird die Kopfzeile nicht mehr angezeigt.

Gibt es ab morgen via update.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

oti

Hallo Markus,

vielen Dank für die schnelle Umsetzung. Ich habe den Schalter getestet, er funktioniert.
Allerdings funktioniert die Sprachumschaltung nicht mehr, sobald der Schalter no-table-header auf 1 gesetzt ist, d. h. die Wochentage werden in Englisch angezeigt, obwohl ich deutsch als Sprache eingestellt habe.

Gruß
OTi

Markus Bloch

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

oti

Moin Markus,

danke, funktioniert.
Ich habe auch noch ein wenig "drum herum" getestet und konnte keine Unschönheit mehr finden.
Ich bin echt begeistert über die schnelle Umsetzung.  :) :) :)

Gruß
OTi