Avaya Client SDK

< Back to Package Overview

Making a MeetMe conference call through HTTPUA

Using the Client SDK, you can easily integrate the ability to join an Equinox conference call without the use of any telephony infrastructure. This is referred to as an Over the Top Call. Over the Top calls can only be outgoing calls.

To make a MeetMe conference call through HTTPUA, you must complete the following activities:

  • Retrieve iView conference token and Service Gateway URL through Unified Portal Service
  • Create a Call object and initialize the details for the call
  • Implement the call listener to monitor for call progress events
  • Implement the conference listener
  • Start the call
  • End the call

Retrieve iView conference token and Service Gateway URL for MeetMe conference call.

// Create Unified Portal configuration object
UnifiedPortalConfiguration unifiedPortalConfiguration = 
    new UnifiedPortalConfiguration();

// Specify Unified Portal URL (mandatory)
unifiedPortalConfiguration.setServerURL(myMeetingInfo.getUnifiedPortalURL());

// Optionally, specify credential provider to sign in portal 
// and join the meeting as signed in user.
unifiedPortalConfiguration.setCredentialProvider(new UserCredentialProvider(
    myAppConfig.getUnifiedPortalUsername(), 
    myAppConfig.getUnifiedPortalPassword()));

// Retrieve the token and other meeting details
UnifiedPortalService unifiedPortalService = user.getUnifiedPortalService();
unifiedPortalService.requestToJoinMeeting(
    unifiedPortalConfiguration, 
    myMeetingInfo.getConferenceID(), 
    myAppConfig.getDisplayName(),
    false,
    "",
    "", 
    new RequestToJoinMeetingCompletionHandler() {
        @Override
        public void onSuccess(UnifiedPortalMeetingInfo meetingInfo) {
            myMeetingInfo.SetMeetingInfoFromPortal(meetingInfo);
        }

        @Override
        public void onError(UnifiedPortalError e) {
            // Display error
        }
    });

Create a call object

CallCreationInfo callCreationInfo = new CallCreationInfo(
    myMeetingInfo.getConferenceID(),
    myMeetingInfo.getConferencePasscode(),
    myMeetingInfo.getMeetingInfoFromPortal().getPortalToken(),
    myMeetingInfo.getMeetingInfoFromPortal().getUCCPURL(),
    myMeetingInfo.getMeetingInfoFromPortal().getServiceGatewayURL(),
    myMeetingInfo.getUnifiedPortalURL(),
    myAppConfig.getDisplayName(),
    myMeetingInfo.getRemoteAddress(),
    false);

Call call = user.getCallService().createCall(callCreationInfo);
call.setRemoteAddress(myMeetingInfo.getRemoteAddress());

Implement the call listener

To monitor call progress events, the CallListener interface can be used. This interface provides notification as the call state changes.

class AppCallHandler implements CallListener
{
    @Override
    public void onCallStarted(Call call) {
        // Called to report that call has started (ie, call is in progress).
        // Add code here to update the UI as appropriate.
    }

    @Override
    public void onCallRemoteAlerting(Call call, boolean b) {
        // Called to report that an outgoing call is ringing at the far end.
        // Add code here to update the UI as appropriate.
    }

    @Override
    public void onCallEstablished(Call call) {
        // Called to report that an outgoing call has been established 
        // (ie, far end has answered and speechpath has been established).
        // Add code here to update the UI as appropriate.
    }

    @Override
    public void onCallEnded(Call call, CallEndReason endReason) {
        // Called to report that call has ended.
        // Add code here to update the UI as appropriate.
    }

    @Override
    public void onCallFailed(Call call, CallException e) {
        // Called to report that call has failed and the failure reason
        // is described in the CallException code.
        // Add code here to update the UI as appropriate.
    }

    @Override
    public void onCallConferenceStatusChanged(Call call, boolean isConference) {
        // Called to report a change in conference status of the call.
        // Add code here to update the UI as appropriate.
    }
    ....
};

You can instantiate an application call handler (AppCallHandler) and add that as a listener to the call.

AppCallHandler callHandler = new AppCallHandler();
call.addListener(callHandler);

Implement the conference call listener

To monitor Conference events, the ConferenceListener interface can be used. This interface provides notification as the conference properties changes.

class AppConferenceHandler implements ConferenceListener {

    public void onConferenceLectureModeStatusChanged(Conference conference, 
            boolean lectureModeStatus) {
        // Called to report that Lecture Mode has enabled or disabled in this
        // conference call. Add code here to update the UI as appropriate.
    }

    public void onConferenceEntryExitToneStatusChanged(Conference conference, 
            boolean toneStatus) {
        // Called to report that entry/exit tones have been enabled or disabled 
        // in this conference call. 
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceLockStatusChanged(Conference conference, 
            boolean lockStatus) {
        // Called to report that the conference has been locked or unlocked.
        // Add code here to update the UI as appropriate.
    }

    public void onConferencePasscodeRequired(Conference conference, 
            boolean permissionToEnterLockedConferenceRequired) {
        // Called to report that the conference requires admission passcode.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceContinuationStatusChanged(Conference conference, 
            boolean continuationStatus) {
        // Called to report that the conference continuation 
        // (after moderator leave) has been enabled or disabled.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceRecordingStatusChanged(Conference conference, 
            ConferenceRecordingStatus recordingStatus) {
        // Called to report that conference recording has been started or 
        // stopped. Add code here to update the UI as appropriate.
    }

    public void onConferenceExternalAdmissionStatusChanged(
            Conference conference, boolean bIsRequired) {
        // Called to report whether the conference requires admission request 
        // from user. Add code here to update the UI as appropriate.
    }

    public void onConferencePermissionToEnterLockedConferenceRequired(
            Conference conference) {
        // Called to report that the user has to request moderator for 
        // a permission to enter the conference.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceVideoStatusChanged(Conference conference,
            boolean videoStatus) {
        // Called to report that the conference video has been enabled or 
        // disabled. Add code here to update the UI as appropriate.
    }

    public void onConferenceSubjectChanged(Conference conference, 
            String conferenceSubject) {
        // Called to report that the conference subject has changed.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceBrandNameChanged(Conference conference, 
            String conferenceBrandName) {
        // Called to report that the conference brand name has changed.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceHandRaised(Conference conference) {
        // Called to report that the user's hand has been raised.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceHandLowered(Conference conference) {
        // Called to report that the user's hand has been lowered.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceCapabilitiesChanged(Conference conference) {
        // Called to report that some of conference capabilities have changed.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceWaitingToStart(Conference conference) {
        // Called to report that the conference has not yet been started 
        // by moderator. Add code here to update the UI as appropriate.
    }

    public void onConferenceStarted(Conference conference) {
        // Called to report that the conference has been started.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceEndTimeChanged(Conference conference, 
            Date endTime) {
        // Called to report that the conference scheduled end time has been 
        // changed. Add code here to update the UI as appropriate.
    }

    public void onConferenceServiceAvailable(Conference conference) {
        // Called to report that the conference has a healthy signaling path.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceServiceUnavailable(Conference conference, 
            ConferenceConnectionError error) {
        // Called to report that conferencing server connection has been lost.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceEncryptionStatusChanged(Conference conference, 
            ConferenceEncryptionStatus encryptionStatus) {
        // Called to report that overall media encryption status of the 
        // conference call has changed.
        // Add code here to update the UI as appropriate.
    }

    public void onConferenceStreamingStatusChanged(Conference conference, 
            ConferenceStreamingStatus streamingStatus) {
        // Called to report that the conference streaming status has changed.
        // Add code here to update the UI as appropriate.
    }

    ...
}

You can instantiate an application conference handler (AppConferenceHandler) and add that as a listener to the call even before the call has been started and become a conference call.

AppConferenceHandler appConferenceHandler = new AppConferenceHandler();
call.getConference().addListener(appConferenceHandler);

Start the call

Once a call listener has been added, you can call the start() method on the Call object. Call progress events will be provided through the CallListener interface.

call.start();

End the call

To terminate the call, you can call the end() method on the Call object.

call.end();

The onCallEnded() callback event is sent to the call listener when the call has been ended. You can use this event to update the UI of your application.