Video Conferencing on a Sales Application Cloud
The most inventive project that I have done is integrating video conferencing into the business workflows of a Sales & Marketing Executive. A Video Conferencing App for Salesforce Cloud was delivered within six months on a budget of less than USD30K. The uniqueness of the application was that the deep integration is done within the native workflows of Salesforce — both at technical and user experience levels. The end-user needed almost zero training to elevate their meetings to do video and content-sharing.
Background of Innovation — Starting with a Business Driver
As the work environment is becoming more and more competitive and demanding, organizations are looking for leveraging video meetings to collaborate more effectively with their partners, customers, or even within their own geographically dispersed workforces.
During a customer & partner event, our Global Director of Technical Marketing made a strategic announcement of delivering solutions that would seamlessly integrate video conferencing to workflows for improved productivity, effective collaboration, and increased efficiency.
There was a big opportunity for our organization in enabling video conferencing and collaboration in the popular native applications across industry verticals. Our Executives were looking forward to piloting this integration into a well-known application that could set the ball rolling in this direction.
The expectation was to showcase this solution in the next keynote demo targeted. I was asked to lead this project considering my track record of delivering innovative software solutions and a research-oriented attitude.
Stages of Development
The project execution was done using Agile methodology. It involved ten sprints of two weeks duration each requiring close collaboration of multi-functional team members including Quality Assurance & Usability. The following were different development stages distributed across various sprints.
Functional Scoping and Usability Design
A lot of vertical applications were analyzed and eventually, the team zeroed down on integrating with Salesforce. The first step was to define the core functionalities and User Experience (UX) intended to build the sales use cases. Who should be scheduling the calls? Who should be attending it? Within an ongoing call, what do you want to show to the host and the attendees? Where in your application would you want to expose these functionalities?
Prototyping for Risk Mitigation
After spending a week in conceptualization, the team smartly and rapidly built an end-to-end working proof of concept (POC) application within just 3 weeks of intense development effort. Several demos were given to the internal teams. The solutions management team gave demos to multiple customers across various customer forums. The whole idea found great traction and finally we received funding from Solution Management.
Requirement Mapping to the exposed services
Required functionalities were mapped with the APIs exposed by the video conferencing platform, as described in the following sections.
Architecture
A browser-based software extension to video conferencing platform enabling universal access to enterprise-grade video conferencing to any business (B2B) or consumer (B2C) at the highest quality, interoperability, reliability, and security was implemented and deployed on a web application server.
For workflow integrations, REST services to schedule video conferences were exposed. A client for attending video conferences through a browser (via an iframe) was implemented.
Configuration Management in External Applications
For all API calls, an application would need to know the web service endpoint URL for outbound messages from this application. An admin would need to configure this URL as part of the post-installation application configuration. Besides this, every API call would also need to carry the username (populated automatically from login) in whose context the API is being called.
Authentication and Single Sign-On (SSO)
Once LDAP-based authentication was successfully done with a valid username and password, a token would be generated using Token Validation APIs which could be used for the next few hours to call other APIs. Storing passwords in an external application’s configuration settings was avoided due to security reasons. Whenever needed, the user was alerted for a password. The above approach was further enhanced for SSO using SAML (Security Assertion Markup Language) protocols.
Configuring SSL Certificate
As some external applications may not allow API calls to servers without proper SSL certificates for security reasons. A facility to upload the complete chain of trusted certificates by administrators to the server configuration was also supported.
Conference Management
Once a conference is scheduled, a web application can send out email notifications to the host and participants invited. The invite would include a URL to attend the meeting via browser or other access information to attend it via other endpoints. Invites can be sent to both enterprises as well as social users. The meetings can optionally be secured via meeting passcodes based on the choice of admin or end-user. Once the user clicks on the meeting URL, he/she can get into the meeting.
Internally web applications had the following main components:
- Application to store administration configurations required for managing the video conferencing infrastructure.
- Services for scheduling video meetings, call controls, and contact management.
- While in the meeting, video rendering in a browser and mobile clients can be done via a client-side SDK with JavaScript and/or native APIs.
Data Modeling of conference resource object for storing critical metadata information related to video meetings was done. It included CRUD operations and different states like Ongoing, Future, Complete, Cancelled. When scheduling a conference, it can be of either type “Meet Now” for instant conferencing or “Schedule Meeting” with specific start & end date-time. One good practice implemented was whenever Start time changes we automatically set the End Date time to Start date-time + 1 hour. Start date and time were automatically set in the New Conference UI screen to the next half hour at least later than 5 minutes. (e.g. if a user creates a new event at 9:23 am, set start time to 9:30 am as default, and if a user creates a new event at 9:27 am, set start time to 10:00 am).
Using email service was implemented to sent notifications to users who are invited to the conference. If an application has its own email notification system, the application’s notifications can be turned off using an option in scheduling APIs. In addition to the basic scheduling as described above, the following advanced options are also supported.
- An option enabling the use of a specific Virtual Meeting Room (VMR) knows as Personal VMR during scheduling a meeting.
- Sending custom email invitations from external applications (with an option to enable/disable invites).
- Use separate Meeting PINs for the host or standard participant while scheduling/joining meetings from external applications.
Participant Management
A user can add/remove participants from the conference using this feature. He/she can invite one or more people into a conference using context from the current workflow. For e.g., if you are in the context of a specific customer or user, you can pre-fill his name as the invitee in the call and schedule a conference with him in a few clicks.
Join Meeting
Once the conference is scheduled, a “Join Meeting” button to the host and invitees was presented. Clicking on this button can launch the in-meeting frame. This button was disabled if the meeting has already ended or it is not due to start soon.
In-meeting Video Rendering
Once a user enters an ongoing meeting, the in-meeting frame lets him/her share the video, audio, and content with each other. It also carries several call controls like hang-up call, audio mute, video mute, view self, etc. This frame was designed to be embedded in either a browser (via an iframe) or inside an application hosting a WebView (or similar) control using a JavaScript client API. Key parameters like the name and email id of the user, meeting identifier, and passcode (if configured) were also passed. To integrate the in-meeting frame, an API to obtain the URL of the deployed service was first called. Using this URL, a <script> tag inside the web page was composed which in turn would launch the in-meeting UI. A JavaScript callback function for handling multiple states like authentication, ongoing, and finally termination of the meeting was implemented. These callback functions will handle these changes in state and make the UI responsive to these changes. The in-meeting frame allowed users to see the currently online users and have a textual group chat.
Implementation and Progressive Refinement
Once the core was ready, more advanced features like the usage of passcodes to secure the meetings or using personal VMRs were incorporated. Fine-tuning of user experiences like displaying the scheduled calls for the host and participants or single click joining experience to the conference was done. Throughout the project, we kept our business users (internal Marketing & IT team) engaged in providing us feedback on various aspects like technical & network design and for identifying key business workflows where video conferencing can bring in maximum value addition with respect to productivity & efficiency of business users.
Summary
This application became the flag bearer solution showcasing a guiding approach to build secure, intuitive, and high-quality meetings to defy distance with video, voice, and content to increase productivity in business applications. It proved to be a great lever for cross-selling other video conferencing endpoints and server-based solutions encouraging more and more such integrations using this cost-effective standardized approach.
This project provided me more exposure towards leveraging Cloud technologies for rapid application development and designing solutions with the mobile-first approach for ensuring best-in-class user experience, engaging with partners for win-win collaboration, experience working with Marketing and Legal for distributing software products over various channels.