FritzBox 7170, CapiOverTCP - Connect/Disconnect kommt nicht an

Hallo,

ich habe hier eine FritzBox 7170 (Firmware: 29.04.80) im Einsatz und schon seit längerem so eingebunden, dass mir eingehende Anrufe per TTS angesagt werden. Soweit so gut. Die ISDN ControllerID ist 1.

Im Script reagiere ich hiermit auf einen eingehenden Anruf.

switch($ISDN_EVENT)
{
	case "Incoming":

Jetzt wollte ich die LED Leiste bei eingehendem Anruf blinken sollen bis der Anruf angenommen ist (CONNECT).

Da habe ich das Problem, dass das Script nicht auf CONNECT und/oder DISCONNECT reagiert.

Im Debug-Fenster steht nur eine „DISCONNECT_IND (1154)“ Meldung sobald ich den Anruf ANNEHME. Beim Auflegen erscheint gar kein Eintrag.

Hat noch jemand das Problem das keine Info über Anrufannahme und Auflegen via FritzBox reinkommt und im besten Fall sogar eine Idee was ich probieren könnte (andere Controllers haben nichts gebracht).

Danke & Gruß
Thorsten

Bildschirmfoto 2011-09-09 um 09.02.48.png

Moin Thorsten,
da sagt Dein Screenshot aber was anderes oder irre ich mich jetzt total?!
Da steht doch ein CONNECT (Zeit 08:53:27) und ein DISCONNECT (Zeit 08:53:35)!

Sent from my iPhone using Tapatalk

Stimmt, da habe ich mich etwas unglücklich ausgedrückt.

Das CONNECT kommt sobald es anfängt zu klingeln (da bin ich noch nicht ans Telefon gegangen).
Sobald ich den Anruf am klingelnden Telefon annehme, erscheint die DISCONNECT Meldung.

Danach passiert nichts mehr. Ein Gesprächsende fügt also im Debug-Fenster keine weitere Meldung hinzu.

Gruß
Thorsten

So ganz verstehe ich dein Problem nicht. Warum reagierst Du nicht auf das was ankommt. Wenn ich dich richtig verstanden habe, ist doch alles da was Du für dein Vorhaben benötigst. :confused:

Prinzipiell richtig, aber wenn ich im Script in der Switch Anweisung auf „Disconnect“ prüfe, dann springt das Script da nicht rein.

Laut anderen Beispielen müsste eine Swicth Anweisung auf DISCONNECT reagieren, aber der Code darin wird nicht ausgeführt.

Ich sehe die Reaktion nur im Debugger Fenster.

Gruß
Thorsten

Was debuggst Du denn, sicher nicht $IPS_EVENT. Was da drinn steht muss in deine case Anweisungen.

Ich habe den „Debugger“ Knopf meiner ISDN Kern Instanz benutzt.
Vielleicht sollte ich im Script mal den Inhalt der Variable ISDN_EVENT ausgeben lassen und schauen was da jeweils drin steht.

Ich werde das mal versuchen. Vielleicht bringt mich das ein Stück weiter :o.

Gruß
Thorsten

Momentan bin ich nicht in der Lage innerhalb eines PHP Scriptes zu erkennen, wenn …

a) der Anruf wirklich entgegen genommen wird und
b) der Anruf beendet ist

Im Script (Ereignisscript des ISDN Modul) greife ich folgendermaßen zu

if($IPS_SENDER == "ISDN")
{

// Testweise zwei Variablen protokollieren
SetValue(21261  /*[To Do - Bastelecke für alles was irgendwie nicht fertig ist\ISDNVar]*/,$ISDN_EVENT);
SetValue(39109  /*[To Do - Bastelecke für alles was irgendwie nicht fertig ist\ISDNVar2]*/,$IPS_EVENT);

switch($ISDN_EVENT)

Sobald es klingelt steht in der Variablen „ISDN_EVENT“ „Incoming“ drin und das ändert sich nie, weder beim Annehmen, noch beim Auflegen.
Die Variable „IPS_EVENT“ bleibt die ganze Zeit ohne Inhalt.

Habe ich hier vielleicht irgendwie einen Denkfehler, wie ich auf das ISDN Modul zugreife?

Gruß
Thorsten

Was passiert hier.

print_r(ISDN_GetConnectionInfo(InstanzID, ConnectionID)); 

Wenn ich das in mein Script reinkopiere und anrufe erscheint folgender Eintrag in der Registerkarte „Meldungen“ zum Zeitpunkt des Klingelns (nicht des Annehmens).

09.09.2011 16:38:43 ExecuteThread #4
[Telefon\ISDN Eingehenden Anruf melden] = Array (
[CalledNumber] => XXX
[CallingNumber] => YYY
[CIPValue] => 4
[State] => 1
)

Wenn ich das Gespräch annehme oder auflege kommt keine weitere Info mehr.

Kann es sein, dass das Script welches ich unter Ereignisscript im ISDN Modul eingetragen habe, nur 1x aufgerufen wird (eben sobald der Anruf reinkommt) und bei späteren ISDN Ereignissen (wie Annahme, Auflegen) nicht mehr?

Gruß
Thorsten

Andere Frage, wie hast Du das überhaupt eingebunden. Ich hab kein ISDN.

Läuft das nicht über eine RegVar.?

Hi Rainer,

also ich habe eine ISDN Instanz in IPS angelegt und dort meine ISDN MSN und ein Script welches ausgeführt werden soll, sobald ein Ereignis auftritt eingetragen.

In diesem Script wird geprüft ob es von einem ISDN Ereignis aufgerufen wurde.

if($IPS_SENDER == "ISDN")

In der Doku habe ich leider keine vollständige Information zu den ISDN Befehlen gefunden (oder es gibt sie nicht).

Die Kommandos die ich verwende habe ich von Paresys Script.

In diesem Post (von o.g. Thread) habe ich die wohl funktionierenden Inhalte von „$ISDN_EVENT“ her. Aber leider funktioniert von denen bei mir nur „Incoming“.

Wäre interessant ob jemand mit einer FritzBox auch die anderen Informationen in Scripten benutzen kann.

Gruß
Thorsten

Ich würde CapiOverTCP nicht nutzen, da IP-Symcon nicht mit etwaigen Verbindungsabbrüchen klar kommt. Wenn du demnächst also merkst, dass IPS 100% zieht und dein ISDN Modul nicht mehr läuft, dann gab es einen Lag im Netzwerk und die Verbindung ist abgebrochen.

paresy

Okay, danke für den Tip. Da mein IPS Backup (Pulse) den Dienst ohnehin jede Nacht neu startet sollte sich das Problem in Grenzen halten.

Wäre die vorgeschlagene Alternative eine AVM USB ISDN Karte?
Vielleicht würde ja damit auch das Connect funktionieren.

Gruß
Thorsten