FBCallMonitor - Probleme bei 2. Gespräch

Begonnen von Elektrolurch, 31 Oktober 2014, 20:35:57

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo,

ich habe den TelefonMonitor (TM - Codeschnipsel) gebaut. Und dabei ist mir aufgefallen, dass ein zweites, gleichzeitig geführtes Telefonat nicht korrekt angezeigt wird.
Daraufhin habe ich mir mal die Events angesehen, die das FBCallMonitor-Modul liefert.

Situation:

a) 1. Gespräch wird angenommen
b) 2. Gespräch klingelt
c) 2. Gespräch wird angenommen
d) 2. Gespräch wird beendet
e) 1. Gespräch wird beendet

Das 1. Gespräch bekommt vom FBCallMonitor die callID 0, das zweite Gespräch die callID 2.

für b) - d) müssten ja die Events: ring, connect und disconnect kommen,

STATTDESSEN kommt aber ring, ring, ring
für das 2. Gespräch, während das 1. Gespräch geführt wird.

Darin liegt der Fehler, dass das

event: ring 3 x mal komt

Die ddanach gesendeten Daten, wie external_number, external_name usw. sind korrekt.
Die callID ist auch unterschiedlich vom 1. Gespräch.

Gruß


Elektrolurch
configDB und Windows befreite Zone!

Markus Bloch

Bitte einmal ein Log mit verbose 5 und am besten auch einen Auszug aus dem Event-Monitor.

Danke

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)

Elektrolurch

Hallo Markus,

habe das Ganze noch einmal nachgestellt und muss meine Aussage etwas korrigieren:

Das zweite Gespräch wurde nicht angenommen, wie ich ursprünglich dachte, es landete auf einem Besetzzeichen, erzeugte trotzdem nur das event "ring".
In dem "ring" - Event hängt hinten noch ein "disconnect" an, was aber dann nicht weitergereicht wird, so dass mein TM auf "ring" stehen bleibt.
Man sieht das auch im log. Die Frage ist nun:
Ist ein an der TK-Anlage registrierter Anruf ein "missed" call, wenn er auf eine Regel aufläuft, die ein "besetzt" erzeugt? Eigentlich ja.

Hier das Log:

2014.11.01 14:53:06 5: FB_CALLMONITOR (meineFB) - received data: 01.11.14 14:53:06;RING;0;0172xxx;9876;SIP2;

2014.11.01 14:53:06 4: FB_CALLMONITOR meineFB using internal phonebook for reverse search of 0172xxx
2014.11.01 14:53:06 4: FB_CALLMONITOR (meineFB) - reverse search returned: Ich
2014.11.01 14:53:06 3:
TM_Monitor: status:  ring
2014.11.01 14:53:06 3: Anruf (ring) von Ich 0172xx callID: 0
2014.11.01 14:53:06 3: TM_Proc:  action {TelefonRing("Ich","9876","0172xx");;}
2014.11.01 14:53:08 5: FB_CALLMONITOR (meineFB) - received data: 01.11.14 14:53:07;CONNECT;0;13;0172xxx;

2014.11.01 14:53:08 3:
TM_Monitor: status:  connect
2014.11.01 14:53:08 3: TM_Proc:  action {Telefon_Connect("DECT_4");;}
2014.11.01 14:53:08 1: Telefon_Connect: room Küche nst DECT_4

Der erste Anruf ist angenommen, nun kommt der zweite:

2014.11.01 14:54:19 5: FB_CALLMONITOR (meineFB) - received data: 01.11.14 14:54:19;RING;2;0174yyy;1234;SIP3;
01.11.14 14:54:19;DISCONNECT;2;0;

Hier das disconnect wird nicht weitergereicht, der Anruf lief auf ein "besetzt".
Daraus müsste eigentlich ein "disconnect2 und ein "missed call" erzeugt werden.
2014.11.01 14:54:19 4: FB_CALLMONITOR meineFB using internal phonebook for reverse search of 0174yyy
2014.11.01 14:54:19 4: FB_CALLMONITOR (meineFB) - reverse search returned: MHandy
2014.11.01 14:54:19 3:
TM_Monitor: status:  ring
2014.11.01 14:54:19 3: Anruf (ring) von MHandy 0174yyy callID: 2
2014.11.01 14:54:19 3: TM_Proc:  action {TelefonRing("MHandy","1234","0174yyy");;}

Das zweite Gespräch bleibt auf Status "ring" stehen, obwohl bereits abgebaut.

Nun wird das erste Gespräch beendet:
2014.11.01 14:55:04 5: FB_CALLMONITOR (meineFB) - received data: 01.11.14 14:55:04;DISCONNECT;0;114;

2014.11.01 14:55:04 3:
TM_Monitor: status:  disconnect
2014.11.01 14:55:04 3: TM_Proc:  action {TelefonDisconnect();;}
2014.11.01 14:55:04 3: TM_UpdateValue: args callID: 0 col: E val: 01:54
2014.11.01 14:55:04 3: TM_updateValue: in loop i: 0 callID: 2
2014.11.01 14:55:04 3: TM_updateValue: in loop i: 1 callID: 0
2014.11.01 14:55:04 3: TM_UpdateValue: updateingindex F1 E1 01:54

In der zweiten Zeile wurde die Gesprächsdauer des 1. Gespräches eingetragen.


Gruß

Elektrolurch
 
configDB und Windows befreite Zone!

Markus Bloch

Hi Elektrolurch,

das ist ja sehr interessant. Ich nutze nur ein Telefon bei der FritzBox, aber hatte dieses Phänomen noch nie. In diesem speziellen Fall sendet die FritzBox das Disconnect (da ja besetzt) sofort mit hinterher und in FHEM wird das als ein Datensatz erkannt. Ich habe dazu soeben eine Änderung eingecheckt um das zu ändern.

Bitte probiere das ganze doch morgen mal aus. Ich kann es leider nicht nachstellen.

Danke

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)

Elektrolurch

Hallo Markus,

gerade das noch Mal nachgestellt: Funktioniert.
Das per besetzt abgewiesene Gespräch wird nun in meinem Telefonmonitor (TM) korrekt als "beendet" mit Gesprächsdauer 0:00 und "verpasst" angezeigt.
Danke für den Fix.

Gruß

Elektrolurch
configDB und Windows befreite Zone!