Discover more from Design'ed by DJ
Zoom Integration for Field Service Platform
Design case study for intuitive integration of Zoom services within Zinier's B2B platform
Zinier is a field service automation software. The company invests in finding solutions to common problems of speed and scale with AI-driven field service management.
Product Manager: Abhijeet Anant Joshi, Suhaidah Shahril
C-Suite Stakeholders: Gideon Simons
Engineering Stakeholders: Darshan Thimmaiah
Product Designer: Dhananjay Garg
Case Study: Zoom Zinier Integration
Zoom has played a pivotal role during pandemics for individuals and companies alike. For example, at Zinier, many of the significant clientele rely on various platforms to make audio and video calls with field technicians on the ground. But it is hard to make and receive quick phone calls without a unified platform, call recording and storing, and making the calls without searching for each technician’s phone number. These are some reasons why Zoom integration for telecom companies is required.
We conducted research calls with our clients and customer success teams to understand the use cases before digging deeper into the problem’s wireframe and concept testing stage. Based on the research interview sessions conducted, converted the requirements into the following user stories statements—
AS A WEB USER, I want to initiate a call with a technician assigned to a task (FSE).
Click on a phone icon.
Open Zoom Web SDK in a new tab
AS A WEB USER, I want to call another user via zoom.
Push notification with an option to accept/reject
Open Zoom Web SDK in a new tab
AS A WEB USER, I want to leave a meeting.
With on click of Leave Zoom Meeting, Zoom needs the user to exit the SDK and land on a web page. But the primary Zinier page is already on another tab. Explore if we can have a generic ‘Thank you for joining this meeting’ landing page
AS A MOBILE USER, I want to initiate a call with another user.
AS A MOBILE USER, I want to receive a call from a Zinier user while using the app.
AS A MOBILE USER, I want to receive a call from a Zinier user while NOT using the app.
AS AN FSE USER, I want to see any zoom call details tagged to a task log.
Anyone using FSE.
We created a short product mockup showing the experience and possibilities of further integrating Zoom inside Zinier’s web platform to validate the idea. The demo went well, and we could prioritize the epic further by understanding the technical constraints.
The Zoom integration functionality needs to be compatible with the following web-browsers because there’s a mix of these installed and used by the contractors—
Internet Explorer 10 or higher
Chromium Edge 80 or higher
Google Chrome 53.0.2785 or higher
Safari 10.0.602.1.50 or higher
Firefox 76 or higher
Frontend UI tasks breakdown
We took these requirements to the frontend development team to further understand some of the roadblocks ahead of us.
Add Zoom configuration options at superuser level for org
Consuming Create Meeting API in frontend
Integrate Zoom Web SDK into Frontend application
Open Web SDK in another tab
Handle Leave Meeting flow - land the user on a generic page
Push Notifications when a web user gets invited into a call
The engineering team highlighted many limitations that Zoom’s SDK imposes on our final implementation.
We cannot create a meeting. It has to get generated with the same meeting ID mapped to each unique user created in the system.
Workaround: Server to run API and create meeting - Create Meeting API. API to generate Meeting ID and Password.
Video quality/screen sharing gets restricted to 360p.
Web to Mobile calling - Mobile user not active – Zoom will continue to ring. The caller has to exit the call voluntarily.
Web to Web calling - If the second web user is not active – Zoom will continue to ring. The caller has to exit the call voluntarily. Can leave a missed call notif for the web user,
If calling multiple people, the caller will never know if the participants will join or not. There is no concept of call drop.
We could give the user the impression that the call is getting rejected. However, Zinier-web/mobile can hide the notification, and the callers’ side maybe shows a message saying that the call got dismissed.
We can show that the participant missed a call.
We can’t style anything here once a new tab opens (and we’re inside the meeting container).
We have to provide a leave URL, which will redirect the user once the meeting gets done. So we could show a thank you for the call page.
Even if there is an error while joining the meeting, or any errors in general, it will redirect to “THANK YOU FOR THE CALL page.”
There’s no way for us to know when to call
window.close(). We don’t have a way to tell if the meeting got ended or not right now.
In version 1.0, I figured out various places where the call feature can be integrated inside the platform. For the calls to be a useful feature, I pushed for the functionality combined with the mobile platform. Further tested the prototype with the client and customer success teams.
Things we covered in v1.0.
I want to initiate a call with a technician assigned to a task (FSE).
I want to receive a call from another user via zoom.
I want to leave a meeting.
I want to initiate a call with another user > from a task.
I want to receive a call from a Zinier user while NOT using the app.
I want to see any zoom call details tagged to a task log.
Based on the feedbacks driven in v1.0, we understood that the volume of calls made by our use could be quite significant after implementation. Hence, with the v2.0 design and implementation, we wanted to add the call logs feature to see all the calls they have been a part of in the past and can re-make the ring again.
What changed here?
Added personal user logs – meeting console
Added user contacts – meeting console
Added quick contact search and caller dialogs
Final Screens (Major Impact)
Join call prompt inside Zinier
Missed call as a floating notification
Immediate calling and full call logs
The feature got implemented without bugs and covered most of the requested features under the umbrella. In addition, the product and engineering teams followed the best UX patterns for making and receiving calls promptly. Yet, the clients didn’t agree to enable additional Zoom licenses for their entire organization when it came to licensing costs. Hence, we paused the implementation to get deployed on production servers.