Sample app design

The Dolby Conference Phone version 3.0 release includes an SDK that allows service providers to create downloadable applications and thereby customize the user's experience.

This document discusses a sample app that showcases the SDK's feature set. This app connects to the Dolby Voice Demo Service (DVDS) and allows the user to initiate calls from the Dolby Conference Phone with just a single button press.

Refer to the Getting started guide for information on setting up the SDK IDE.

Retrieve the app

The DVDS app is a conferencing app that uses Dolbyâ„¢'s cloud-based DVDS to make conference calls. The DVDS app source code is distributed as part of the SDK. It is stored on the IDE system under the folder /usr/share/dcp-sdk/.

Deploy the app

The DVDS application files must be copied to a web server before the app can be downloaded by the phone. The Dolby Conference Phone IDE includes an Nginx web server that can be used for deploying the app. Simply copy the source code package from /usr/share/dcp-sdk/ to the /usr/share/nginx/html/apps/DVDS folder; the Dolby Conference Phone downloads the app from this location.

  • Assuming your IDE IP address is 192.168.0.100, your app URL becomes http://192.168.0.100/apps/DVDS/
  • Use the Dolby Conference Phone web interface to make changes to the following configuration parameters. (The Dolby Conference Phone must have software version 3.0.0.x or later installed.)
ParameterValueWeb UI location
Dvms.Server.Addresshttp://192.168.0.100/apps/DVDS/Settings > Dolby Voice Conferencing Service > Server > Server address
Dvms.Service.ProviderCustomSettings > Dolby Voice Conferencing Service > Service > Service Provider
Dvms.Service.TypeAppSettings > Dolby Voice Conferencing Service > Service > Application Type
Dvms.Custom.Parameter1http://ccapi.demo.dvds.dolbyvoice.com:443Settings > Dolby Voice Conferencing Service > Custom > Custom Parameter 1
Features.OperationModeDual Mode or Conferencing Only ModeSettings > Features > Operation Mode

Note: The Dolby Conference Phone may need to reboot to load the new configuration parameters.

Test the app

Once the app is loaded onto the Dolby Conference Phone, the Dolby Conference Phone screen will show the following screenshot. Simply tap on one of the names in the list menu to make a call. If all configurations are correct and the service is online, the Dolby Conference Phone will connect to the conference.

"DVDS Home Screen"

You can also tap the "Key" icon and enter one of the following demo passcodes to join the meeting.

  • 1180650186
  • 5086465735

Inside the app

Architecture

The following diagram shows the high level architecture of the DVDS app and how it connects to the DVDS service infrastructure.

"DVDS Software Architecture"

ComponentsDescription
Dolby Voice Demo Service Application (DVDS App)The DVDS app source code is provided to familiarize developers with the Dolby Conference Phone SDK API methods. Based on the configuration at runtime, the Dolby Conference Phone downloads the DVDS app to the phone and executes it.
Dolby Conference Phone SDKThe Dolby Conference Phone SDK provides APIs for developing downloadable phone applications.
UI ComponentsUI components are an essential part of the Dolby Conference Phone SDK. Prebuilt UI components accelerate the developer's ability to construct a UI that conforms to the Dolby Conference Phone design guidelines. The sample DVDS app makes use of several UI components.
Configuration APIApplications use the Configuration API to access the phone configuration parameters. For example, the application reads custom parameter 1 to determine how to connect to the Dolby Voice Demo Service Call Control Server.
Conference APIThe app uses the Conference API to initiate and manage Dolby Voice calls. The DVDS Conferencing Server acts as the backend conference service.
AJAX APIThe Ajax API is used by the DVDS app to connect to the Dolby Voice Demo Service Call Control Server via the HTTP protocol.
App Deployment ServerThe Dolby Conference Phone downloads the app from an Application Deployment Server. Developers can use the Nginx web server included with the SDK or set up another web server such as Apache or Microsoft IIS. The app must be copied to the web server folder that serves as the file download repository. Once the Dolby Conference Phone configuration parameter Dvms.Server.Address is set to the web server's address, the phone can download the app.
DVDS Call Control ServerThe call control server is an essential part of the DVDS service. This REST server handles user authentication and determines how a Dolby Voice client connects to the Dolby Voice Conferencing Server. In response to the user authentication request, it sends connection instructions to the Dolby Conference Phone which uses the Conference API to create the call.
DVDS Conferencing ServerThis is the media server that handles the Dolby Voice conference call. The Dolby Conference Phone uses the Conference API to connect to this server in order to send and receive audio streams to and from the conference.

Understanding the application structure

Servermain.qml

All Dolby Conference Phone apps must implement Servermain.qml as the entry point. The Servermain.qml file always extends UIApplication and is responsible for setting up the application level properties such as loadHomePageOnIdleTimeout and checkForUpdatesInterval. It also defines global objects for the app components to access. Using a Connections object, it can set up state change handlers to manage the UI screen transitions based on various call states.

Application views

For more information on application views, please refer to the App object. The following DVDS app sample code in Servermain.qml loads various views based on the user's action.

Component {
  id: conferenceScreen
  DVDS.ConferenceScreen
  { onHomePage: app.showHomePage()
    onJoin: {
         console.log("passcode " + passcode);
         meetingContext.passcode = passcode;
         app.loadCallViewFromComponent(connectinScreen);
    }
    onJoinWithEmail: {
         console.log("passcode: " + passcode + "email: " + email);
         meetingContext.passcode = passcode;
         meetingContext.email = email;
         app.loadCallViewFromComponent(connectinScreen);
    }
  }
}

Driving the UI state change based on call state

For more information on application views, please refer to the App object. Refer to the Conference object for the available states.

Connections {
       target: Conference
       onStateChanged: {
           Logger.syslog(LogLevel.DEBUG,"SERVER MAIN STATE CHANGE:  " + state)
           if (state.toUpperCase() === "CALLING" )
           {
               app.loadCallViewFromComponent(connectinScreen);
           }
           else if (state.toUpperCase() === "FAILED")
           {
               app.loadCallViewFromComponent(connectinScreen);
           }
           else if (state.toUpperCase() === "CONNECTED" )
           {
               device.playTone(ToneName.CONFERENCE_JOIN);
               app.loadCallViewFromComponent(connectedScreen);
           }
           else if (state.toUpperCase() === "HANG UP")
           {
               app.clearCallView();
               // ATTN: This line says go back to home screen at end of the call,
               // Any other desired actions can be done here.
               //app.showHomePage();
           }
       }
   }

Screens

ConferenceScreen.qml

This file implements the application home screen. It provides several options to join the meeting:

ContactViewKeypadEmail/Passcode Entry

"ConfConnectingScreen"

"Keypad"

"JoinConferenceTab"

A contact view that contains a list of users defined in DirectoryDataModel.qml.A email/passcode entry screen that is defined in JoinConferenceTab.qmlA passcode entry screen that is defined in ConferenceScreen.qml as component keypad.
ConfConnectingScreen.qml

This component is critical to the understanding of the DVDS application's state transitions. It implements several JavaScript functions that interact with the DVDS Call Control Server.

"ConfConnectingScreen"

  • meetingFind - Transmits a user's passcode to the Call Control Server's /meeting/find? REST endpoint
  • startConference - Based on the response from meetingFind, startConference calls the Call Control Server's /conference/ endpoint to start the meeting.
  • joinConfSip - Based on the response from startConference, joinConfSip constructs the conference join instruction and calls the conference object's join method to initiate the Dolby Voice call with DVDS's Conferencing Server.

While the Dolby Conference Phone connects to the DVDS service, this component also implements the transitional screens to show the user the status of the connection.

InConferenceScreen.qml

This component interacts with the DVDS's call control server in the following ways:

  • setName This function calls the /conference/user API to report the user's name to the DVDS's call control server. The user name is read from configuration.deviceName
  • getConfStatus This function is called periodically to poll the conference status. It retrieves the current roster list and active speaker indicator; see RosterView.qml.
RosterView.qml

RosterView.qml implements a list view that becomes part of the InConferenceScreen component, and, based on the results from getConfStatus, it periodically refreshes the roster list to give the user the most up-to-date information about the meeting.

"RosterView"