Azure Communication Services — Empowering Developers with Telecommunications — Part 2

James Cheng
Microsoft Mobile Engineering
5 min readJun 1, 2022

Calling Composite Engineering Principles

Overview

To be able delight all developers and customers with an UI Library that they can easily integrate, we had to look at many engineering principles that will help us bridge the gap. In this section, we will focus on three engineering principles that are crucial when initially designing the UI Library, while skimming through some honorable mentions as well.

Customizable and Configurable

Every mobile application is unique with its own look and feel, whether it is ensuring the color palette is consistent across the mobile application, ensuring the brand’s logo persist throughout the user’s journey, or needing to flow customer data to the UI Library. We need to ensure the UI Library and underlying APIs support such customizations. As we continue to evolve the UI Library, we want to continue to listen to our customer’s needs and create a library that’s highly customizable.

Configuring the Calling Composite Experience based on your needs.

On top of being able to customize the UI, we also wanted to give you the ability to configure certain Calling features for different workflows and roles. In the Education example from Part 1, there are two entities: professor and the students. The professor’s Calling experience may allow the professor to share their screen, and perhaps also the ability to mute others if needed. The student’s Calling experience will not have the share screen functionality, and instead can only toggle their video and microphone on/off. We can tailor the calling experience based on your needs by allowing you to configure different roles with different functionality.

Compatibility (Teams Interoperability, Backwards Compatible, Cross-platform)

Microsoft Teams Interop is one of the most commonly requested features from customer engagement studies, and allows the ACS UI Library’s Calling and Chatting experience to be compatible with Microsoft Teams. Businesses that are already leveraging Microsoft Teams need to have the ability to setup ad-hoc calls and chats with customers outside of their communication ecosystem. The interoperability between ACS UI Library and Microsoft Teams allows existing businesses and organizations to transcend boundaries and reach out to a larger audience.

ACS UI Library provides the capability to invite external stakeholder into your company’s Microsoft Teams Meeting.

Currently, when API changes are made to the ACS UI Library, we go through a round of reviews with an Azure API Review board. The reviews ensure the API defined is scalable as well as backwards compatible. Once the ACS UI Library is made available publicly, the initial set of APIs are locked in for three years. If any APIs are to be deprecated, we will need to provide developers three years of decommissioning buffer time before removing the APIs.

To minimize the risk of having to modify the APIs often for the UI Library, the engineering team investigated cross-platform framework support with the ACS UI Library. These cross-platform frameworks include React Native, Xamarin, and Flutter, and we want to make sure mobile applications developed on these cross-platform frameworks can integrate just as easily as the native platforms.

ACS UI Library is compatible with React Native, Xamarin, and Flutter cross-platform frameworks.

Thread Safe

Developing mobile applications can be tricky, especially when it comes to multi-threading issues. Often times, these multi-threading issues become more evident when both the main thread and background threads are updating state of object. If not taken care of early on, these multi-threading issues become a nightmare to debug and usually results in needing a major refactoring of the architecture.

To ensure issues around multi-threading are minimized, the ACS UI Library uses the Redux design pattern when updating the object state. Having the UI Library built on top of the Redux design pattern, we are able to debug issues more efficiently. If Redux is new to you, I would highly recommend reading Getting Started with Redux.

Honorable Mentions

Accessible — UI Library is fully compliant with Microsoft Accessibility Standard. Users that leverage Talkback (Android) and VoiceOver (iOS) screen reader capabilities will have a seamless experience.

Composable — Integrate UI Library as a re-usable component that can be assembled in various combinations according to the mobile application’s needs.

Localizable — The UI Library supports 13 languages in its initial offering — with more languages to come.

Observable — Mobile applications can subscribe to different UI Library event and error handlers to respond accordingly.

Modern UI/UX — ACS UI Library utilizes Microsoft’s open-source Fluent UI library to help bring consistency across UI controls and interactions

Testable — Classes and ViewModels follow SOLID principles so business logic can be unit tested to prevent regression.

Robust — We have a set of UI tests that cover core functionalities so any regression can be detected early.

Secure — The UI Library depends on a time-based token which can be retrieved through Azure.

Scalable — Whether it is large number of participants or supporting a complex workflow, the UI Library aims to be performant and robust at the same time.

Next Up

In Part 3, we will dive into the Calling Composite architecture to help you understand how the various engineering principles fit within the overall architecture of the ACS UI Library. Stay tuned.

Appendix

Azure Communication Services

GitHub Repositories

Quick Start

Other

--

--