Appendix B - Linking conferences across MCUs
For the purposes of this description, two conferences are said to be "linked" if there is a bi-directional
H.323 connection between them and each MCU is sending a video channel to the other, showing the
active speaker full screen. The audio communicated between the MCUs will be the usual mix of active
speakers. For clarification, the linked conferences are given different names (“linked1” and “linked2”) in
the below explanation, but it is perfectly possible for the conferences to have the same name.
The first step is to set up the two conferences. The most important part of this is to ensure that the
conferences have a numeric id set (the "conferenceID" field in "conference.create"), because without
this configured field it is not possible to call in directly to a conference. In the example given here, both
conferences are given a numeric id, though strictly it is only necessary to configure this on the target
MCU (i.e. the one that is called rather than the one calling).
In this specific example, "linked1" is set up on "mcu1" and "linked2" set up on "mcu2". The creation of
"linked1" is shown in example message 1, and it is configured with numeric id "1234"; the creation of
"linked2" is shown in example message 2, and this conference is given the numeric id "5678".
Next, a participant needs to be added to the "linked1" conference and connected to "linked2" on the
target MCU. The most reliable way to accomplish this, which does not rely on the target MCU's
gatekeeper usage, is to call from “mcu1” into the target conference using "mcu2" as a gateway and the
target conference's numeric id as the remote address. The participant addition is shown in example
message 3 - as well as the address and gateway, it also configures the view layout to be full screen (by
setting "cpLayout" to "layout1"), to make sure that just the active speaker from "linked1" is sent to
"linked2".
The final step is slightly more complex - it involves modifying the new "linked2" participant on "mcu2"
which was the result of the call from "mcu1". The modification required is to change the view layout
setting (for the video sent from "linked2" to "linked1") to full screen so that what gets sent is a view of the
“linked2” active speaker.
The complication here is that the "linked2" participant in question is not a participant created via the API,
and so the API does not know in advance what name it has. It is thus necessary to poll membership of
"linked2" after the connection from "linked1" has been made, identify the participant corresponding to
the call, and use its name in a "participant.modify" call to set the view layout. The simplest way to
identify the participant is to look for an absence of the “address” field in a “conference.query” response –
for incoming, non-API, connections this will not be present. Example message 4 shows such a
“participant.modify” call; in this case the participant name needed was "1_Codian MCU 4210".
B.1 Example message 1 - creating conference "linked1" on
"mcu1"
<?xml version="1.0"?>
<methodCall>
<methodName>conference.create</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>authenticationUser</name>
<value>
<string>admin</string>
</value>
</member>
<member>
<name>conferenceName</name>
<value>
<string>linked1</string>
</value>
</member>
Comentarios a estos manuales