Anruf auf zweitem B-Kanal blockieren

Bis vorgestern dachte ich, ich hätte ein hervorragendes, superkomplexes ISDN-Modul (mit insgesamt drei Instanzen für verschiedene MSNs). Ich kann anrufen, alle möglichen Steuerbefehle in meiner Wohnung verteilen (Herd einschalten, Heizung verstellen etc.) oder Stati abfragen. Wenn irgendwas schief läuft, ruft mich IPS an (Fenster vergessen: interner Anruf, Aquarium läuft aus: Alarm auf dem Handy etc…)

…aber jetzt kam mir der Gedanke: „Eigentlich hat so eine ISDN-Leitung ja zwei B-Kanäle“. Was ist nun wenn ein zweiter Anruf ankommt, den IPS gerne annehmen würde? Und Bingo: die totale Katastrophe! Das zweite Gespräch wird angenommen, das erste läuft ins Leere. Und wenn das erste Gespräch bereits über die „Calling-Number“ autorisiert war, Steuerbefehle zu erteilen, gilt das plötzlich auch (und nurnoch) für das Zweite.

Jetzt bastel ich seit zwei Tagen verzweifelt dran herum, daß z.B. das zweite Gespräch einfach gleich wieder "ISDN_Disconnect"ed wird… sollte ja ganz einfach sein - könnte man meinen. Beim Zustandekommen EINES Gespräches werden ohnehin mehrere IPS-Variablen verändert. So sollte man ja eigentlich beim Losstarten des „Telefonannehmer-Scripts“ eine Prüfung einbauen können, die das erledigt. Das funktioniert bei den Testläufen meißtens, aber nicht immer (und das unter den ständig gleichen Bedingungen). In dieser Richtung habe ich schon viele verschieden Script-Varianten ausprobiert… immer unzuverlässig. Ich habe den Verdacht, daß der Befehl „ISDN_Disconnect“ manchmal zu Problemen führt und u.U. das Script abbricht oder die eigene „if-Schleife“ überspringt!?

Jetzt habe ich noch versucht, die zweite Leitung einfach zu blockieren: Ein Gespräch kommt zustande - IPS wählt sich sofort über den zweiten B-Kanal nochmal intern über die Telefonanlage selber an (und erhält besetzt)… somit ist die zweite Leitung einfach dicht. Aber auch das klappt irgendwie nicht immer. :frowning: In dem Fall hagelt es auf allen drei Instanzen „ISDN-Status-Variablen“, was es sehr schwierig macht, ein „echtes“ Auflegen auf der bestehenden Leitung zu erkennen.

Hat vielleicht irgendjemand eine grundlegend andere Idee, wie man das lösen kann? Ideal wäre natürlich, man könnte das gleich in den Instanzen einstellen - aber das geht wohl nicht. (Habe übrigens schon das neueste ISDN-Modul drauf, mit den „kurzen“ Variablen für den Status.)

MfG, douglas882

Jetzt antworte ich mir mal einfach selbst, damit´s hier nicht so langweilig wird. :stuck_out_tongue:

Ich hatte inzwischen noch die Idee: „Wenn ich das zweite Gespräch nicht verhindern kann, sollte ich es halt statt dessen ermöglichen.“ Nach vier Stunden wilder umprogrammiererei, klappt es jetzt (fast) wunderbar: IPS kann völlig unabhängig ZWEI Gespräche gleichzeitig führen - aber eben wieder nur dann, wenn beide über VERSCHIEDENE ISDN-Instanzen reinkommen… und damit steh ich wieder vor dem selbem Problem, wie oben beschrieben! :frowning:

Ums mal auf den Punkt zu bringen: Wenn die gleiche (selbe?) Instanz ein zweites Gespräch annimmt, passiert folgendes:

  1. Das zweite Gespräch funktioniert absolut einwandfrei (mit Ausnahme von Punkt 3.)
  2. Auf dem ersten B-Kanal läuft nur noch die bereits gestartete WAV-Datei zu Ende - alle weiteren "ISDN_PlayWave"s beziehen sich dann nur noch auf die zweite Leitung (auch wenn die wieder beendet wurde).
  3. Die DTMF-Variablen werden von beiden Leitungen in einen Topf geschmissen und kräftig umgerührt - das kann natürlich sensationelle Auswirkungen auf diverse Funkmodule in der Wohnung haben! :wink:

Hat jemand eine Idee, wie man:
a) einen ISDN_PlayWave-Befehl gezielt auf den ersten B-Kanal schicken kann
und
b) die Herkunft neuer DTMF-Eingaben ermitteln (trennen) könnte?

MfG, douglas882

Hallo douglas882,

mit zwei Gesprächen über eine Instanz telefonieren wird wohl nie klappen. Wenn das für Dich wirklich wichtig st, dann musst Du wohl mehrere Instanzen anlegen. Dann sollte es aber auch keine Probleme bereiten. Natürlich müssen dann alle Variablen für die beiden Instanzen getrennt werden.

Ich wünsche einen schönen Tag.

Christoph.

Das Problem ist, dass das ISDN Modul nicht für den Betrieb über beide Kanäle konzipiert ist.

Wir überlegen es entsprechend für die 2.0 umzubauen. Das Problem dabei wäre nur, dass die alten Scripte entsprechend angepasst werden müssten.

Grüße, paresy

Hallo douglas882,

mit zwei Gesprächen über eine Instanz telefonieren wird wohl nie klappen. Wenn das für Dich wirklich wichtig st, dann musst Du wohl mehrere Instanzen anlegen. Dann sollte es aber auch keine Probleme bereiten. Natürlich müssen dann alle Variablen für die beiden Instanzen getrennt werden.

Ich habe ja drei Instanzen (für verschiedene MSN): Das funktioniert auch (seit gestern) wunderbar: Zwei Gespräche auf zwei Intanzen klappen einwandfrei und völlig unabhängig - auch wenn das eigentlich keiner braucht! :wink:
Das Problem ist, so eine Instanz ist eingestellt auf eine bestimmte eingehende MSN und vielleicht noch auf bestimmte anrufende Nummern… Wenn jetzt während des Gespräches ein ZWEITER Anruf auf der gleichen MSN kommt, nimmt die Instanz das automatisch auch an - und dann gehts in die Hose! Es würde ja völlig reichen, wenn diese - belegte - Instanz einfach kein Gespräch mehr annimmt.

@paresy:

Das Problem ist, dass das ISDN Modul nicht für den Betrieb über beide Kanäle konzipiert ist.

… das macht ja nix! Blöd ist halt nur, daß das ISDN-Modul das nicht weiß und halt doch abnimmt! :confused: Als Verbesserungsvorschlag würde ich sagen, baut doch die Option ein: „only accept first call“ oder sowas. Oder zumindest, daß man z.B. die Konstante/Variable „Accept delay“ per script ändern kann: Dann könnte man während eines laufenden Gespräches, den Wert per script auf „unendlich“ stellen.

MfG, douglas882