SightCall Developer Center

Account Login Support

Host and Control a Waiting Room

An attendee can join a waiting room as soon as the waiting room has been created, however, they can join the call itself only once the call has been hosted. This is why control on attendees of the waiting room can be done only once the meeting point has been hosted.

Hosting a 1:1 Meeting Point

Hosting a 1:1 meeting point is available for javascript clients (plugin or WebRTC) only. All types of clients (desktop or mobile) can attend a 1:1 meeting point.

The disctinctive feature of the 1:1 meeting point is that it encapsulates a 1:1 call. While hosting a 1:1 meeting point, the host is indeed waiting for a call. When an attendee joins the meeting point and is accepted, the system triggers a simple call from the attendee to the host that the host needs to pick up.

From a meeting point object that was just created and got through the callbacks or from a meeting point that was previously loaded with the get method:

loadedMeetingPoint.host('1');

And the client is notified that the call was succesfully hosted.

function onHosted(meetingPointObject){
  mpi = meetingPointObject;
  console.log(mpi.id 'has been sucessfuly hosted');
  ...
}
rtcc.on('meetingpoint.host.success', onHosted);

Hosting a N:N Meeting Point

Hosting a N:N meeting point is available to all types of clients (desktop or mobile). All types of clients (desktop or mobile) can attend a n:n meeting point.

From a meeting point object that was just created and got through the callbacks or from a meeting point that was previously loaded with the get method:

loadedMeetingPoint.host('n');
[[Rtcc instance] meetingPointStart:@"The MP's ID"];
Rtcc.instance().meetingPointStart("The MP's ID")
public void host(MeetingPoint meetingPoint) {
    meetingPoint.host();
}

And the client is notified that the call was succesfully hosted. Mobile hosts do not automatically enter the call. The notification should be used to launch the call itself. In JavaScript, hosting a multiparty meeting point automatically triggers the launch of the call (and associated callbacks).

function onHosted(meetingPointObject){
  mpi = meetingPointObject;
  console.log(mpi.id 'has been sucessfuly hosted');
  ...
}
rtcc.on('meetingpoint.host.success', onHosted);
// in the RtccHostDelegate
- (void)rtccMeetingPointStarted:(NSString *)mpID
{
    [[Rtcc instance] meetingPointHostJoinConference:mpID];
}
func rtccMeetingPointStarted(mpID: NSString!) {
    Rtcc.instance().meetingPointHostJoinConference(mpID)
}
@RtccEventListener
public void onStatusEvent(final StatusEvent event) {
    switch (event.getType()) {
    case HOSTED:
        event.getMeetingPoint().call();
        break;
    }
}

Control Attendees

If the meeting point is in auto-accept mode, no notifications are sent to the host, and the attendee enters the conference.

If the meeting point is in lock mode, no notifications are sent to the host and the attendee is denied access.

In default mode, a notification is sent to the host when an attendee tries to connect and the attendee waits until he/she has been accepted.

function onJoinRequest(obj)  {
    attendee = obj;
    console.log(attendee.displayName + 'requested to enter');
}

rtcc.on('meetingpoint.joinrequest.new',onJoinRequest);
//in RtccHostDelegate
- (void)rtccHostNewAttendee:(NSDictionary *)infos
{
    NSLog(@"%@ is trying to join the MP %@ uninvited", [infos objectForKey:k_MPDisplayName], [infos objectForKey:k_MPID]);
}
func rtccHostNewAttendee(infos: [NSObject : AnyObject]!) {
    println("\(infos[k_MPDisplayName]) is trying to join the MP \(infos[k_MPID]) uninvited")
}
@RtccEventListener
public void onRequestEvent(final RequestEvent event) {
    switch (event.getType()) {
    case JOINING:
        String attendeeUid = event.getUid();
        Log.d(TAG, attendeeUid);
        break;
    }
}

The host can accept the attendee:

attendee.accept();
[[Rtcc instance] meetingPoint:[infos objectForKey:k_MPID] acceptUser:[infos objectForKey:k_MPDisplayName]];
Rtcc.instance().meetingPoint([infos[k_MPID], acceptUser:infos[k_MPDisplayName])
event.getMeetingPoint().accept(attendeeUid);

or refuse the attendee:

attendee.deny();
[[Rtcc instance] meetingPoint:[infos objectForKey:k_MPID] denyUser:[infos objectForKey:k_MPDisplayName]];
Rtcc.instance().meetingPoint([infos[k_MPID], denyUser:infos[k_MPDisplayName])
event.getMeetingPoint().deny(attendeeUid);

Invite Attendees

Once the conference starts, the host has the ability to invite someone else to attend a multi-party call. The invite method with the user uid will send him/her an invite request.

loadedMeetingPoint.invite('AliceUid');
[[Rtcc instance] meetingPoint:@"mpID" inviteUser:@"AliceUid"];
Rtcc.instance().meetingPoint("mpID", inviteUser:@"AliceUid")
public void invite(MeetingPoint meetingPoint, String uid) {
    meetingPoint.invite(uid);
}

The (possible) attendee is notified of the invite:

    function onAttendeeInvited(mpa){
        MPAttendee = mpa;
        console.log('You have invited to a meeting identified as' + mpa.hostDisplayName);
    }
    rtcc.on('meetingpoint.attendee.invite',onAttendeeInvited);
//In RtccAttendeeDelegate
- (void)rtccAttendeeWasInvitedToMeeting:(NSString *)mpID
{
    //respond NO to refuse the invite.
    [[Rtcc instance] meetingPoint:mpID attendeeRespondToInvite:YES];
}
func rtccAttendeeWasInvitedToMeeting(mpID: String!) {
    //respond NO to refuse the invite.
    Rtcc.instance().meetingPoint(mpID, attendeeRespondToInvite:true)
}
@RtccEventListener
public void onRequestEvent(final RequestEvent event) {
    switch (event.getType()) {
    case INVITED:
        event.getMeetingPoint().accept(event.getUid());
        break;
    }
}

The attendee can then accept and join the conference or refuse.

    MPAttendee.accept();
//    MPAttendee.deny();
    [[Rtcc instance] meetingPoint:mpID attendeeRespondToInvite:YES];
//    [[Rtcc instance] meetingPoint:mpID attendeeRespondToInvite:NO];
    Rtcc.instance().meetingPoint(mpID, attendeeRespondToInvite:true)
//  Rtcc.instance().meetingPoint(mpID, attendeeRespondToInvite:false)
event.getMeetingPoint().accept(event.getUid());
//event.getMeetingPoint().deny(event.getUid());

The host is notified of invitee answers through events. The host can also cancel the invite before the invitee has accepted or denied.