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 |
---|---|---|---|---|---|
CallService | Signalling | SIP | Aura Session Manager | Yes | Application shall initialize the SDK properly with the complete list of servers. |
Media Preservation | SIP | Aura Session Manager | Yes | Application shall reflect limited call capabilities. Call Object isServiceAvailable returns false to indicate lack of signalling support. Call.ServiceUnavailable is invoked. Call.CapabilitiesChanged is invoked.,The Application may choose to update the UI to reflect limited call capabilities (warning badge). | |
Signalling | SIP | IP Office | Yes | Application shall initialize the SDK properly with the complete list of servers. | |
Conferencing Service (Conference) | SIP Signalling | SIP | Aura SIP Conference Server | No | Application shall reflect limited call capabilities. Call Object isServiceAvailable returns false to indicate lack of signalling support. Call.ServiceUnavailable is invoked. Call.CapabilitiesChanged is invoked.,The Application may choose to update the UI to reflect limited call capabilities (warning badge). |
UCCP Signalling | UCCP/HTTP | UCCS | No | Application shall reflect limited conference capabilities. Full Call control is available (hold, retrieve, terminate). Conference operations not available (mute participant, dialout participant). | |
Media | RTP | Aura Media Server | Yes | CSDK does not provide media detection. Conf participant will detect lack of audio and terminate call. Conf moderator may choose to terminate meeting. | |
Collaboration | WCS Provider/HTTP | WCS | Yes | Collaboration is not available until WCS Provider reconnects. Collaboration must be restarted by the user. | |
ContactService | PPM Contacts | PPM/HTTP | Aura Session Manager | Yes | Contact Operations unavailable until CSDK reconnects to PPM element. In an Aura network, PPM contacts is co-located with the Aura Session Manager. |
AADS Contacts | AADS/HTTP | Avaya Aura Device Services | Yes | Contact Operations unavailable until CSDK reconnects to network element. | |
IPO Contacts | MTCTI/HTTPS | IP Office | Yes | Contact Operations unavailable until CSDK reconnects to network element. | |
IPO Presence | MTCTI/HTTPS | IP Office | Yes | Presence Operations unavailable until CSDK reconnects to network element. | |
SharedControlService | Shared Control of Desk Phone | SIP | Desk Phones with Aura deployment | No | Application to present connectivity with Desk phone is unavailable. |
When the CSDK CallService cannot reach the Call Server:
When the Client SDK MessagingService cannot reach the messaging server:
When the CSDK CollaborationService cannot be reached:
When the CSDK PresenceService cannot reach the Presence Server:
The CSDK PresenceService will attempt to automatically try to reconnect with the Presence Server. When connectivity is established the known subscription list will be resubscribed automatically.
All Client SDK Services follow the same notification structure between the Client SDK service and your application, as shown in the Networking Change Sequence Diagram.
Media Preservation is a technique used by Client SDK to minimize the occurrence of dropped calls as a result of network disruptions. Because the SIP signalling path uses TCP and the audio/video media uses UDP when network disruptions occur it is not uncommon that the disruption causes the TCP socket for the signalling session to be closed while the UDP stream continues to flow after the disruption is resolved. In this case because the media recovers the call can continue but because the signalling session is lost the features available on the call are limited until the signalling session can be recovered.
Client SDK does attempt to automatically restore the signalling 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.
Upon media preservation call state being detected by the CSDK:
public void AddCall(Call call)
{
call.ServiceUnavailable += call_ServiceUnavailable;
call.CapabilitiesChanged += call_CapabilitiesChanged;
}
private void call_ServiceUnavailable(object sender, EventArgs e)
{
// Code to update the UI appropriately
}
private void call_CapabilitiesChanged(object sender, EventArgs e)
{
// Code to update the UI appropriately
}
public void Initialize()
{
callService.CallServiceCapabilityChanged += callService_CapabilityChanged;
}
private void callService_CapabilityChanged(object sender, EventArgs e)
{
// Code to update the UI appropriately
}
if (callService.VoIPCallingCapability.Allowed)
{
// Code to establish another call
}
Session Timers is a technique defined by RFC 4028 to minimize resource utilization for calls that do not have signalling support (media preserved), and is available in the Client SDK. Avaya does not recommend the use of Session Timers in applications because a call without signalling support may continue to have media support (media preserved) providing the user with the minimal necessary call experience. The use of Session Timers will terminate a media preserved call when the negotiated call session expires automatically. In situations where signalling support is not available, the Avaya recommended practice is to allow the end-user to determine if the existing call is providing the minimal experience by allowing the user to terminate the call at their discretion.
By default, Session Timers duration is set to 0, or disabled. Session Timer value is activated by a non-zero value provided at: SipClientConfiguration.SessionRefreshTimeout.