Creating conferences

This topic presents:

Creating a conference

After opening a conference resource and reviewing the resource capabilities, you can create a new conference. The following table lists the functions to use when creating a new conference:

To...

Description

Create a new conference, call cnfCreateConference with cnfresourcehd and the appropriate parameters.

Returns a conference identifier (confid) to use when accessing the conference object.

To guarantee that you are able to add a certain number of members to the conference, or if you know in advance how many members will participate in this conference, you can allocate a certain number of members when calling cnfCreateConference. You can also open a conference and allocate no members. You may be able to add members on the fly if the conference resource has room.

When calling cnfCreateConference you can use fewer capabilities than the resource supports, enabling you to add more members to the conference. For more information, refer to the section on Optimizing performance.

Verify changes at the resource level after creating the conference, call cnfGetResourceInfo.

Returns a CNF_RESOURCE_INFO structure containing information such as the capabilities of the resource, the maximum number of members the resource can accept, and the number of members available for a new conference.

Note: After calling cnfCreateConference, the number of conferences increases and the number of available members decreases.

Redefine the number of members allocated to a conference, call

cnfResizeConference with appropriate parameters.

Enables you to increase or decrease the number of members allocated to the conference.

Retrieve a list of conferences, call cnfGetConferenceList with appropriate parameters.

Returns the confidlist.

By performing a loop using the returned confidlist, you can get information about each conference and retrieve the user value. For example:

for (confindex = 0; confindex < numconfid; confindex++)
{
error = cnfGetConferenceInfo(cnfresourcehd,
                             confidlist[confindex], &conferenceinfo,
                             sizeof(CNF_CONFERENCE_INFO));
.
.
.
}


Adding members to a conference

To add members to a conference, follow these steps:

Step

Action

Function

1

Add the member to the conference.

cnfJoinConference with appropriate parameters.

If the call succeeds, the member identifier (memberid) is returned and can be used by the application for any function call requiring a memberid.

2

Retrieve the member's information.

cnfGetMemberInfo using a valid memberid.

Returns a CNF_MEMBER_INFO structure containing switching related information such as the input MVIP-95 local stream (even value) and the timeslot number for the member. To get the output MVIP-95 local stream, increment the input local stream by one.

3

On AG and CG boards, establish a connection between the member's telephone line and the conference bridge.

swiMakeConnection

For more information, see Establishing the connection.

4

Set up one or more member attributes and activate the member in the conference.

cnfSetMemberAttribute or cnfSetMemberAttributeList

For example, the talker attribute is set to 0 by default. To enable the new member to speak and be heard:

error = cnfSetMemberAttribute(cnfresourcehd,
memberid, MEMBER_ATTR_TALKER_ENABLE, 1);

For more information, see Setting member attributes.


Establishing the connection

After you add a member to a conference, call swiMakeConnection to set up the connection between the member's telephone line and the conference bridge. When the connection is established, streams are reserved for NaturalConference. Use showcx95 to determine the number of timeslots available for conferencing.

To enable a NaturalConference stream, the following statement must be added to the board keyword file:

ConferencingStream.Enable = YES

For more information about the board keyword file, refer to Modifying the board keyword file.

The following table lists the number of reserved timeslots by board type. Not all timeslots are used. The timeslot range does not have to be consecutive.

Board type

Number of reserved timeslots

AG Series

256

CG Series

128 (Default value. This can be changed.)


To change the default number of timeslots allocated to a logical conferencing stream (usually 256), add the following statement to the board keyword file:

ConferencingStream.SlotCount = xxx

The following example code connects a member to the trunk interfaces (MVIP-95 local streams 0 and 1):

error = cnfGetMemberInfo(cnfresourcehd, memberid, &memberinfo,
                         sizeof(CNF_MEMBER_INFO));

/* Allocate SWI_TERMINUS input structure using memberinfo.stream and memberinfo.timeslot. */
SWI_TERMINUS input = { MVIP95_LOCAL_BUS, memberinfo.stream,
                         memberinfo.timeslot };

/* Allocate SWI_TERMINUS output structure for the trunk interface
(stream 1) */
SWI_TERMINUS output = { MVIP95_LOCAL_BUS, 1, trunk.timeslot };

/* Full duplex connection */
error = swiMakeConnection(swihd, &input, &output, 1);
input.stream += 1;
output.stream -= 1;
error = swiMakeConnection(swihd, &output, &input, 1);

Refer to the Dialogic® NaturalAccess™ Switching Interface API Developer's Manual for more information about switching.

Using the Point-to-Point Switching service

To use the Point-to-Point Switching (PPX) service to establish the connection between the trunk streams and the member's conference seat, update ppx.cfg with local streams 32 and 33 or local streams 64 and 65. For example:

Inputs
   LOCAL:0..14(2):0..23   # Trunk (0..29 for E1)
   LOCAL:16..18(2):0..127 # DSP
   LOCAL:32:0..256 # Conferencing stream
End Inputs
Outputs
   LOCAL:1..15(2):0..23   # Trunk (0..29 for E1)
   LOCAL:17..19(2):0..127 # DSP
   LOCAL:33:0..256 # Conferencing stream
End Outputs

The following table shows the NaturalConference logical stream assignments by board type:

Board type

NaturalConference logical stream

AG Series

32 and 33

CG Series

68 and 69


Refer to the Dialogic® NaturalAccess™ Point-to-Point Switching API Developer's Manual for more information.