Your Enterprise Communication Platform Should be as Mobile as Your Employees
The rapid rise of social networking and BYOD — along with the ubiquitous availability of high-speed connectivity and the movement to the cloud — mean that the working world is no longer governed by a 9-to-5 mentality. During the past decade, business communication has undergone a massive change, witnessing a rise in the popularity of online communication platforms and applications that enable video conferencing, group messaging, etc. Since being connected anywhere and anytime is now the new normal, your enterprise communication strategy should be as mobile as your business.
However, from an enterprise perspective, consumer messaging apps like Whatsapp, Hike, and WeChat are not suitable because (1) they don’t provide data protection, (2) they don’t allow user management and control, (3) the clouds used to host data may not have enterprise-level security compliances, (4) they do not provide integration with existing enterprise apps and tools, and (5) they do not provide data analytics and conversation history audit capabilities. So the question remains, how do you evolve your static enterprise application into a vibrant communication platform without investing a lot in equipment and additional resources?
MiEC SDK: Your Enterprise Communication Solution
Although many vendors provide off-the-shelf messaging solutions, each organization has unique requirements, and many organizations need to enable communication capabilities within existing mobile applications. Mitel Embedded Communications (MiEC) SDK is a one-size-fits-all solution because it enables developers to build communication capabilities into their own applications. Based on a private global communication platform, MiEC SDK is offered as a dynamic framework for iOS, a Java library for Android, and a JS library for web applications — thus enabling a seamless integration of communication capabilities into any enterprise application.
MiEC SDK comes with comprehensive documentation, sample applications, and code libraries that application developers can use to easily enable communication capabilities in an enterprise application. It has a simplified interface, less public APIs, and asynchronous API design, which makes complex communication tasks like 1-1/group chat, voice/video calls, and maintaining conversation history easy to implement. MiEC SDK also comes ready-to-use with quick start guide for downloading, installing, and activating communication capabilities.
The goal of MiEC SDK is to foster innovation by incorporating team collaboration into a business’ work processes so that employees can easily share information and solve business problems more efficiently.
Application Integration with MiEC SDK
Application integration is very easy because of MiEC SDK’s simple interface and modular design. The below high-level architecture diagram depicts how a third party application becomes integrated with MiEC SDK. As you can see, MiEC SDK has various loosely coupled modules that each support a specific feature. Every module has independent public APIs and listeners, which have no dependencies on other modules. This means that a third party application (3PA) can only use the required modules based on the feature supported without bearing the overhead of unnecessary modules initialization (thus minimizing the overall memory footprint).
The authentication module is at the core of MiEC SDK; that is, to use any of the SDK modules, a 3PA must initialize and authenticate using the authentication module first. The authentication module logins with MiEC SDK backend does feature subscription, provides SDK authenticate current state, registers listeners for state change events, and logouts from the MiEC SDK backend. Authentication module initialization is an essential activity for the MiEC SDK user. While a 3PA can execute this task at any point, we recommend doing it at the launch of the application.
Business groups and users under the respective business groups must be provisioned from the MiEC SDK backend, as MiEC SDK does not provide any interface to register new users. At the time of provisioning, an administrator can specify the required feature support for the respective users. MiEC SDK only enables the provisioned features for the respective user. User credentials are generated upon successful provisioning, which can be used by the 3PA to authenticate to the MiEC SDK.
ChatManager, CallManager, PresenceManager, LocationManager, FileTransferManager, and ConversationHistoryManager are the key singleton classes that provide the respective features of MiEC SDK to the 3PA. Details about the interface and usage of these classes can be found in the MiEC SDK’s API reference guide.
Errors reported to the 3PA by MiEC SDK are in the form of MiECError object. MiECError is the base class for the various specific error classes, based on the feature and SDK state. The MiECError object provides the error code, error description, and additional information about the error. Some of common errors include (1) the feature not allowed error, (2) the user/system permission error, (3) the SDK state not authenticated error, and network availability error. Details about each error classes and error codes can be found in the API reference guide of MiEC SDK.
Modular Design To Support Individual Or Integrated Feature Sets
MiEC SDK has a modular design, with various loosely coupled modules each supporting a specific feature. These simplified modules function independently of each other. Based on the communication feature requirements of your application, you can initialize and use only the required modules, thus reducing the overall memory footprint of the SDK. For example, if your application only needs chat support, then you can utilize Chat Manager; other modules like Call Manager, Location Manager, etc. are not even instantiated by the SDK. The separation of concerns among these modules has made them function in a purely cohesive manner.
Abstraction Of Communication Functions To Simplify Integration For App Developers
MiEC SDK abstracts the complex communication functions like 1-1/group chat, voice/video call, and more behind its simple interface. 3PAs do not have to manage the details of communication protocols, network/socket layer exception handling, persistent storage issues, or native APIs usage to achieve any of the complex communication functions. All a 3PA has to do is call an API and wait for the response (success or failure) in its listener routines.
The asynchronous API design of MiEC SDK further simplifies integration for 3PA developers, as it means that there are no blocking API call and developers don’t have to manage threads. This feature is most beneficial for UIs, as not blocking on a method call will result in the UI appearing to be more responsive to the user.
MiEC SDK is supported for iOS, Android, and JS platforms. Since all of these SDKs support common protocol specifications and backends, all of the features of MiEC SDK have cross-platform support. In other words, a video call between a MiEC SDK-enabled Android app and an iOS app is no different from ann iOS-to-iOS or Android-to-Android video call. This same principle applies to other SDK features like 1-1/group chat, file transfer, presence, etc.
Common Interface Design Across All Platforms
With other communication backends, you have to search for separate SDKs/libraries for each client platform (e.g., iOS, Android, and JS). Even if you obtain separate SDKs/libraries for all of the client platforms, there are always inconsistency issues between these SDKs/libraries because they have been developed by different development teams. These inconsistency issues include: (1) higher learning curves and communication issues within the team due to different public interfaces, (2) lack of support for every feature by every SDK/library, (3) inconsistent documentation, (4) and lack of developer support. With MiEC SDK, there are no such issues. It has a common interface design for all the platforms, the same feature supports across all the platforms, high-quality documentation, and full developer support.
Companion Whitelabel App and Widgets
Time-to-market is the key to success in mobile application development, and the MiEC SDK team understands this quite well. The MiEC SDK comes with a whitelabel app and reusable communication widgets for all client platforms (iOS, Android, JS) to help enterprises reduce the time-to-market for their communication features.
The whitelabel app is basically a messaging app with most of the communication features build in with a rich user interface (e.g., presence, chat, call). If you want to develop an independent messaging app for your enterprise workforce communication, you can take the source code of this whitelabel app and customize it to meet your functional and brand UI requirements, thus reducing the time-to-market your app significantly. Even if you are integrating communication functions within your existing enterprise application, you can take advantage of the whitelabel app by looking at its code and understanding how to integrate it with MiEC SDK classes.
MiEC SDK also comes with reusable widgets and components for common communication features like a call screen for making and receiving calls, message bubbles, a chat screen, and a thin layer of wrapper over MiEC SDK public APIs that further simplifies the integration with a 3PAa.
Offline Cache & Intermediate Network Connectivity Handling
MiEC SDK maintains cache data in a device’s persistent storage for offline access. This cache data includes a team list, conversation list, call logs, and message logs. So while users may not be able to perform communications functions like make a call or send a message when their device is out-of-network, they can still read their old messages, view calls, and see the team list. Cache data is maintained by MiEC SDK seamlessly, without exposing the complexity of cache limit handling or persistent storage error handling to the 3PA. It provides simple APIs with which 3PAs can access this cache data.
Intermediate network connectivity is one of the major aspects that should be considered while designing a mobile application or an SDK. An app/SDK requires constant connection with the server since mobile devices keep moving physically, which results in changing wifi connections (i.e., switching from wifi to cellular and out-of-pocket scenarios). MiEC SDK handles all these network reachability states internally and provides a seamless, always-authenticated state to the 3PA. The 3PA can register listeners to receive changes in the SDK’s connection state. In case of a network disconnect, the SDK internally keeps on trying to reconnect until it succeeds within an exponential time interval, thus optimizing the better usage.
Team List & Presence
The presence API of an MiEC SDK-enabled 3PA retrieves the list of users from a business team and listens for their real-time presence information. “Get user list” provides a list of users based on the start offset and limit passed by the 3PA, along with the user list that the SDK gives the pagination data, which provides the next offset that can be used by the 3PA to fetch the next set of users. The 3PA can also register listeners so that they receive real-time presence updates about the users from their business team list (i.e., updates in their presence status, user addition and deletion).
MiEC SDK also provides APIs to publish a user’s presence state. The 3PA can publish the complete presence payload for the respective user. Users of the same business/group will be notified for this presence event.
The presence payload contains the following fields about the respective user:
- User availability: availability status of the user (i.e., online, offline, in-call)
- State: custom field provided to the 3PA that have any custom value (e.g., check-in, driving, etc.)
- Location: location status of the user (i.e., latitude, longitude, accuracy, timestamp)
- Profile image: user profile picture
- User name: user’s unique name
- Display name: user’s display name (contains first name and last name)
MiEC SDK supports 1-1 and group messaging within your business team. The 3PA can pass one or more users to start a conversation, and the conversation thread is modeled around the list of participants. Every unique list of participants will have a unique conversation thread, which can have an optional subject field (i.e., can be used as a conversation topic for potentially conveying app-specific business context). Any team member from a user business team can be added or removed from an ongoing conversation.
A conversation provides the participants, conversation history, conversation topics, unread messages, most recent message, etc. It also allows a user to take actions like send a message, send a display report for messages, send a message composing notification, etc. Individually, messages within a conversation provide details for each posting, such as text, sender/recipients, and message status (sent, delivered, read).
The 3PA can register listeners to receive real-time chat events like new incoming messages, message status notifications (sent, delivered, displayed) and group chat events like participants joining and leaving.
Group chat in MiEC SDK is a chat conversation with three or more participants. 1-1 chat can also be extended to a group chat by adding the participant to the existing 1-1 chat conversation.
Voice & Video Call
MiEC SDK provides both voice and video call functionalities over the IP. It also provides the ability to upgrade an ongoing voice call to a video call and vice versa.
MiEC SDK’s call function is designed as a generic call session, which takes a simple attribute to enable or disable video for the call. In addition to upgrading and downgrading the video, a call session also allows for other actions such as get call status (initiated, ringing, connected, ended), end call, mute/unmute, speaker on/off, switch camera, etc. A call session gets created either by making an outgoing call or by accepting an incoming call.
In the case of a video call, the 3PA can retrieve the video view from the respective call session and add it to the application’s layout. The call session provides two types of video views: local video view and remote video view. The local video view shows the user’s camera feed, and the remote video view shows the camera feed from the other side of the call.
The 3PA can register listeners to receive call events like call invite, call accepted/rejected by the terminating side, call end, addition or removal of video, changes in call status, etc.
MiEC SDK’s file transfer APIs are designed so that they can be used in conjunction with an ongoing chat conversation or call session, or as a standalone file transfer activity between a set of users from the same business/group. These APIs support both 1-1 or group sharing modes.
To transfer a file, the 3PA must provide the following information about the file: recipients (one or more users), file information (name, size, type, path), and a listener to receive file transfer events.
To receive a file, the 3PA must register a listener with MiEC SDK to receive the file transfer invite. Once an invite is received, the 3PA can take the action to accept or reject the file transfer.
The 3PA can register listeners to receive file transfer events for the file being sent, such as file sent successfully, file failed to send with proper error, events for file transfer invite, and events for the file being received (e.g., file received successfully, file receive failed with proper error).
The 3PA can enable location tracking in MiEC SDK. Once enabled, a user’s location will be continuously published to the MiEC backend after a particular time interval. The location payload comprises of latitude, longitude, and timestamp. Location history for the respective user will be maintained in the MiEC backend server. Users from the same team/business group can fetch the location history of other users, based on the timeframe. Locations permission will be required for enabling location tracking on the respective device.
MiEC SDK maintains a conversation history cache in a device’s persistent storage for offline access. It also provides APIs so that a 3PA can access the conversation history cache. The conversation history includes a conversation list, message logs, and call logs. To optimize the use of a device’s memory, the conversation history cache has a limit, which can be configured from the MiEC SDK backend. However, the MiEC SDK backend maintains the complete conversation history, which can be used by enterprises for analytics and auditing purposes.
Enterprise Use Cases
Below are some examples of how a business can utilize the respective MiEC SDK features within its Enterprise Mobile Application.
Team List & Presence
- Presence can be customized into an effective time tracking tool that enables remote and onsite employees to clock in/out, check their break times, and stay accountable.
- Team list gives your employees access to the whole company directory or to the whole business team, based on the type of provisioning. Users can filter the contacts based on the search criteria.
- Messaging could be associated with a specific job, event, or location (e.g., could be used for intelligent dispatch based on the field locations of service professionals).
- Group chat enables employees to directly share news in real-time with their teams and/or the whole company.
- Chat groups allow teams to instantly share knowledge and ideas, as well as access content and conversations — thus simplifying collaboration and fostering innovation across teams and projects.
- Delivery and read receipts in chat conversations — along with user presence status in the team list — provides instant feedback and makes communication within the team more effective.
- Using group chat, team members can have virtual meetings when they are on the move.
Voice & Video Call
- Video calling could be used for “you see what I see” functionality for field service management.
- Voice calling is a good alternative to walkie-talkies for workforces in power plants, stores, and warehouses.
- Sales teams often work on projects with tight deadlines that require them to quickly share changes with their teams and managers for review and feedback (e.g., creating detailed customer reports).
- Integrating file transfer capabilities with MiEC SDK’s group chat feature could help these teams accelerate their content creation and review cycles.
- By integrating Location Breadcrumb with a messaging app, you can be continuously track the location of your employees, such as sending a manager updates on his/her team members who are in-route to a field location.
- You can set Geographic Zones around important locations for your on-field staff and get notified when someone leaves the office, arrives at a job site, or visits a stop on a route.
- The Conversation History from your group chat can serve as the “minutes” of meeting and help you keep track of your discussions whenever required.
- Conversation History can also be used for audits and analytics (i.e., study team behavior and overall productivity).
- MiEC SDK’s availability on mobile via iOS and Android and on desktop via JS enables a direct connection between your on-field mobile workers and your office staff.
- Because MiEC SDK’s backend is a private global communication platform, all of your confidential corporate conversations are protected and are only accessible to you.
Case Study: FieldAware Messenger
One such company that has successfully utilized MiEC SDK is FieldAware, a provider of field service management solutions for small and medium businesses. FieldAware helps field service companies increase their profits by streamlining the service scheduling process, increasing field worker productivity, accelerating invoicing, improving customer satisfaction, and generating lead opportunities in the field. And since the SaaS solution is available on-demand over the internet, so there’s no hardware to buy or software to install for your office.
Being a leader in field service management solutions, FieldAware understands the significance of communication capabilities in its mobile solutions. As such, FieldAware has developed an enterprise communication app called FieldAware Messenger. This solution is a cross-platform communication app supported on iOS and Android for mobile clients and JS app, with support for various modern browsers for desktop clients.
The communication features of FieldAware Messenger include team list and presence, instant messaging, voice/video call, and conversation history. These communication capabilities are solely powered by Mitel’s MiEC SDK and its backend. Instead of developing all these communication features from scratch and maintaining the expensive backends for the same, FieldAware has utilized the read-to-use rich set of communication capabilities of MiEC SDK. Using MiEC SDK, FieldAware has reduced its time-to-market significantly while also providing its users with a rich user experience for on-field communications.
How Do You Get MiEC SDK?
To access MiEC SDK, visit the Mitel Developer Portal. The portal contains full documentation, complete SDK feature details, enterprise use cases, and SDK download for all client platforms (iOS, Android and JS). You should also review the Getting Started Guide, which provides information on how you can collaborate with Mitel to provision your business group and users in the developer portal, as well as how to integrate the SDK with your enterprise applications.
As our world continues to be both more disperse and more connected, businesses will need to ensure that their enterprise communication platforms are flexible enough to accommodate mobile workforces while also ensuring high levels of security for corporate communications. Unlike off-the-shelf messaging solutions, MiEC SDK enables businesses to create customized communication platforms or build new capabilities into their existing applications. It’s not often you can say that something is a “one size fits all” solution, but in MiEC SDK’s situation, it really is a wonderfully adaptive tool for any communication platform.
About the Author
Ajit Singh is a Technical Architect at GlobalLogic who has worked in the mobile space since 2005. During his career, Ajit has helped design and develop mobile solutions for the world’s top telecom operators and mobile companies (e.g., Mitel, Gemalto, Sprint Wireless, Sandisk, MobiTV) leveraging mobile technologies across the spectrum (e.g., iOS, Android, HTML5, BREW MP).