Post by jens meinerseitzDiese "LI Request Parameter" und "LI Connect Request Participiant"
verwirren mich dennoch. Wenn ich z. B. drei Konferenzteilnehmer
zusammenschalten möchte und dabei einer alles hören, aber
nur mit einem sprechen kann (teacher-pupil) wie muss denn dann
die jeweilige Mask aussehen?
Hallo,
ja, die ganze LI-Geschichte in der CAPI ist zwar durchaus flexibel, leider
aber auch reichlich wirr. Das hätte man auch schöner machen können...
Versteh' ich Deine Anforderungen jetzt richtig? Du hast eine Konferenz
zwischen einer Handvoll Schülern. Die können sich alle gegenseitig hören
und plaudern vergnügt miteinander. Dazu kommt dann halt ein Lehrer, der
auch alles hört, dessen Ansagen aber nur _einem_ der Schüler eingespielt
werden.
Weiterhin nehme ich an, daß sowohl Lehrer als auch Schüler mit der
Applikation (per Ruf) verbunden sind, d.h. daß die Applikation selbst nur
die Konferenzplattform zur Verfügung stellt und nicht selbst dran
teilnimmt. (Andere Möglichkeit wär' ja, daß z.B. der Lehrer auf
Applikationsseite sitzt, d.h. sein Sprachsignal per DATA_B3_REQ
herunterschickt...)
Wenn dem nicht so ist, dann brauchst Du jetzt gar nicht weiterlesen :-)
Für die Schüler-Konferenz würde ich wie folgt verfahren: Jedesmal, wenn ein
Schüler sich in Dein System einwählt (oder angerufen wird), schickst Du ein
FACILITY_REQ zum Etablieren des LI mit dem PLCI des Schülers als main-PLCI.
Participants wären dann jeweils alle anderen Schüler, die sich bereits im
System befinden.
Im Main-Data-Path müßte dann gar kein Bit gesetzt werden, da die Audiodaten
vom Netz immer in die Konferenz und von der Konferenz immer auf's Netz
gespielt werden.
Für die einzelnen Participants müßten dann m.E. auch nur die Bits 0 und 1
gesetzt sein. Bit 0 führt dazu, daß der PLCI Sprachdaten aus der Konferenz
bezieht und sie zusätzlich aufs Netz schickt. Bit 1 führt dazu, daß die
Sprachdaten, die vom Netz (oder je nach weiteren gesetzen Bits, von
sonstwo) kommen in die Konferenz gemischt werden.
(Hier sollte, wenn Du das mal mit der Verschaltungsmatrix in der CAPI-Spec
vergleichst, auffallen, daß man mit den Data-Path-Bits nicht abschalten
kann, daß das Signal vom Netz in die Konferenz gemischt wird und umgekehrt.
Das ist eine *ungeheuer* ärgerliche Limitierung im CAPI-LI!)
So weit so gut, alle Schüler sollten sich jetzt hören und das ganze sollte
auch noch funktionieren, wenn ein Schüler auflegt.
Für den Lehrer bietet sich jetzt an, ein neues FACILITY_REQ zu erzeugen, mit
dem Lehrer eben als main-PLCI. Dort zunächst wieder keine der Bits für den
"Main-Data-Path" setzen. Participating PLCIs wären dann alle Schüler. Die
sollen aber diesmal ja den Lehrer nicht hören können, deshalb als Data-Path
dort nur das 1-Bit setzen, d.h. die Schüler schicken ihr Sprachsignal zum
Lehrer, aber nicht umgekehrt.
Wenn der Lehrer dann mit einem der Schüler reden will, dann müßte ein neues
FACILITY_REQ geschickt werden -- wieder mit dem Lehrer als main-PLCI und
dem Schüler als participant.
Main-Data-Path: wieder keine Bits gesetzt
Participating Data-PATH: sowohl 1 als auch 0 gesetzt.
Dies löscht den bereits bestehenden LI (also der unidirektionale zwischen
Schülern und Lehrer) nicht, upgradet aber den einen Teil so weit, daß
Lehrer und (ein) Schüler miteinander reden können.
Zum "downgraden" reicht dann wieder ein FACILITY_REQ mit Lehrer + dem einen
Schüler, mit den Data-Paths von weiter oben.
DATA_B3_INDs für die Applikation gibt's dann in keinem Fall mehr. Soll beim
Lehrer-Ruf noch mitgeschnitten werden, müßtest Du eben in dessen
Main-Data-Path noch die Bits 2 und 4 setzen.
Ich hoffe, daß das jetzt alles _einigermaßen_ richtig war -- genau sagen
kann ich's offengestanden nicht. Ich muß mich auch für jedes neue
LI-Szenario durch unseren Code wühlen -- letzlich läuft es meistens auf
Trial-and-Error hinaus.
Grüße,
Danilo Kempf