Avaya Client SDK provides support for all of the high availability features available from each of the network services you may choose to add to your application. In any given deployment whether or not high-availability is available is not only dependent on whether the service itself supports high availability but also whether or not the administrator for that deployment has chosen to deploy and configure their particular deployment for high availability. High availability generally involves additional cost and complexity so it is an optional feature that cannot be assumed for every deployment.
The underlying high availability network design and deployment model can differ from service to service. As an application developer you will see that in some cases high availability support is completely transparent to you. In other cases you will need to add application logic, or adjust your user experience, to provide feedback to users when underlying services may be limited as a result of planned (e.g. maintenance) or unplanned (e.g. network interruptions, service interruptions).
Service | Feature | Provider Network Protocol | Network Element | High-Availability Supported | Application Development Requirements |
---|---|---|---|---|---|
Call | Signaling | AAWG (HTTP/WebSocket) | AAWG | Yes | When Client SDK detects that signaling is unavailable it calls Call~onCallServiceUnavailableCallback. The application may choose to update the UI to reflect limited call capabilities. Call's media path remains active. Once connection to AAWG is restored, signaling features will become available. |
Media | RTP | Media Server | Yes | Client SDK does not detect media outage. User can detect media outage by lack of audio and frozen video in the call. If call is a conference call the conference participant may choose to leave the call. Conference moderator may also choose to terminate the conference. | |
Conference | UCCP signaling | UCCP (HTTP/WebSocket) | UCCS | No | When Client SDK detects that UCCS is unavailable it calls Conference~onConferenceServiceUnavailableCallback. Conference operations are not available (mute participant, dialout participant), but full Call control remains available (hold, unhold, terminate) if AAWG signaling is available. The application may choose to update the UI to reflect unavailable conference capabilities. |
Collaboration | Collaboration | WCS (HTTP/WebSocket) | WCS | Yes | When Client SDK detects that WCS is unavailable it calls Collaboration~onCollaborationServiceUnavailableCallback. The application may choose to update the UI to reflect collaboration unavailability. Once connection to WCS is restored, collaboration features will become available. |
Contacts | Contacts | AADS (HTTP/WebSocket) | AADS | Yes | When Client SDK detects that AADS is unavailable it calls Contacts~onContactsServiceUnavailableCallback. The application may choose to update the UI to reflect unavailable contacts capabilities. Once connection to AADS is restored, contacts features will become available. |
Messaging | Messaging | AMM (HTTP/WebSocket) | AMM | Yes | When Client SDK detects that AMM is unavailable it calls Messaging~onMessagingServiceUnavailableCallback. The application may choose to update the UI to reflect unavailable messaging capabilities. Once connection to AMM is restored, messaging features will become available. |
Presence | Presence | AAWG (HTTP/WebSocket) | AAWG | Yes | When Client SDK detects that AAWG is unavailable it calls PresenceService~onPresenceServiceUnavailableCallback. The application may choose to update the UI to reflect unavailable presence capabilities. Once connection to AAWG is restored, presence features will become available. |
VoiceMessaging | Voice Messaging | AAWG (HTTP/WebSocket) | AAWG | Yes | When Client SDK detects that AAWG is unavailable it calls VoiceMessaging~onVoiceMessagingServiceUnavailableCallback. The application may choose to update the UI to reflect unavailable voice messaging capabilities. Once connection to AAWG is restored, voice messaging features will become available. |
The following diagram describes the interaction between application and Client SDK in most of the network disruption and network change scenarios:
Client SDK's call signaling functionality is provided by AAWG server. If Call cannot reach AAWG server:
Application is notified about call signaling unavailability via Calls~onCallsServiceUnavailableCallback. Once connection to AAWG server is restored, Client SDK notifies application via Calls~onCallsServiceAvailableCallback. When AAWG is unreachable Calls.createCall() and Call.start() operations will fail.
If Call's connection to AAWG server is disrupted while there are active or held calls:
Client SDK notifies application about each call's signaling unavailability via Call~onCallServiceUnavailableCallback. Call's capabilities are also updated to reflect unavailable call operations. Once connection to AAWG server is restored, Client SDK requests a list of user's calls from the server. Signaling path of each call will be restored if that call was not ended by remote party or terminated by inactivity timeout. Client SDK notifies application that signaling path for a call is restored via Call~onCallServiceAvailableCallback. Call's capabilities are updated to reflect that call operations are available.
Application can also check current status of call's signaling path using Call.isServiceAvailable() function. Before creating and starting a new call it is recommended to check whether Calls.getVoipCallingCapability() capability is available.
Client SDK's conferencing functionality is provided by UCCS server. If Conference cannot reach UCCS server:
Application is notified about conference service unavailability via Conference~onConferenceServiceUnavailableCallback. Conference's capabilities are also updated to reflect unavailable conference operations. Once connection to UCCS server is restored, Client SDK notifies application via Conference~onConferenceServiceAvailableCallback. Conference's capabilities are updated to reflect that conference operations are available. When UCCS is unreachable Conference.start() operation will fail.
Client SDK's collaboration functionality is provided by WCS server. If Collaboration cannot reach WCS server:
Application is notified about collaboration service unavailability via Collaboration~onCollaborationServiceUnavailableCallback. Collaboration's capabilities are also updated to reflect unavailable collaboration operations. Once connection to WCS server is restored, Client SDK notifies application via Collaboration~onCollaborationServiceAvailableCallback. Collaboration's capabilities are updated to reflect that collaboration operations are available.
When WCS is unreachable Collaboration.start() operation will fail.
Client SDK's presence functionality is provided by AAWG server. If Presence cannot reach AAWG server:
Application is notified about presence service unavailability via PresenceService~onPresenceServiceUnavailableCallback. Once connection to AAWG server is restored, Client SDK re-subscribes for the known presence subscription list and notifies application via PresenceService~onPresenceServiceAvailableCallback.
Client SDK's contacts functionality is provided by AADS server. If Contacts cannot reach AADS server:
Application is notified about contacts service unavailability via Contacts~onContactsServiceUnavailableCallback. Contacts's capabilities are also updated to reflect unavailable contacts operations. Once connection to AADS server is restored, Client SDK notifies application via Contacts~onContactsServiceAvailableCallback. Contacts's capabilities are updated to reflect that contacts operations are available.
Client SDK's messaging functionality is provided by AMM server. If Messaging cannot reach AMM server:
Application is notified about messaging service unavailability via Messaging~onMessagingServiceUnavailableCallback. Capabilities of Messaging namespace classes are also updated to reflect unavailable messaging operations. Once connection to AMM server is restored, Client SDK notifies application via Messaging~onMessagingServiceAvailableCallback. Capabilities of Messaging namespace classes are updated to reflect that messaging operations are available.
Client SDK's voice messaging functionality is provided by AAWG server. If VoiceMessaging cannot reach AAWG server:
Application is notified about voice messaging service unavailability via VoiceMessaging~onMessagingServiceUnavailableCallback. VoiceMessaging's capabilities are also updated to reflect unavailable voice messaging operations. Once connection to AAWG server is restored, Client SDK notifies application via VoiceMessaging~onMessagingServiceAvailableCallback. VoiceMessaging's capabilities are also updated to reflect unavailable voice messaging operations.
Media Preservation is a technique used by Client SDK to minimize the occurrence of dropped calls as a result of network disruptions. Call signaling feature is provided by AAWG server and call media is provided by Avaya Media Server. When the call signaling server becomes unreachable for Client SDK the call media can still remain available. In this case the call enters media preservation mode and most of the call's features become unavailable until signaling session is recovered.
Client SDK attempts to automatically restore the signaling session but this process is best-effort and applications must be prepared to deal with calls that once are media preserved stay in this state until they are terminated by your application or the user of your application.
Additional information is available in Call signaling server is unreachable section.