Building video apps on Salesforce Platformfiles.meetup.com/5530672/makepositive - Northen User Group...
Embed Size (px)
Transcript of Building video apps on Salesforce Platformfiles.meetup.com/5530672/makepositive - Northen User Group...
Building video apps on Salesforce Platform
Salesforce PLATINUM Partner
More than 400 successful Salesforce project deliveries
Leaders in Customer Engagement solutions
#1 Professional Services Partner for Salesforce in the UK
All about makepositive
FRANCESCO IERVOLINO Salesforce Certified Technical Architect @socialcloudtech
• Objectives • Video Platforms • WebRTC EXAMPLE
• Streams, Connections, and Sessions • Publishers / Subscribers • High Level Architecture • Stream Recording • Apex SDK DEMO
• Use Cases and Next Steps • Resources • Q&A
Objectives Extend the Force.com capabilities
Powering Force.com apps with real time communication
Enhancing the user experience
Provide multi-channel video capabilities
Build scalable and cost effective video apps
• OpenTok • GoToMeeting • WebEx • Adobe Connect • BuddyMeeting • Google Hangout
• Skype • Vidyo • Vsee • Skype • Etc.
Video Platform vs Standalone Apps
• Open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs
• Supported by Google, Mozilla and Opera
• WebRTC enforces the usage of encryption for both the media and the signalling.
What’s the best?
OpenTok The OpenTok Platform allows developers to integrate live, face-to-face video directly into their website and mobile apps using WebRTC
• A connection is a logical abstraction of a single browser tab's interaction with a Session. The connection is the mechanism through which a browser publishes and subscribes to streams within a Session
• A session represents an entire video chat environment. It is a collection of connections publishing and subscribing to streams.
• A stream is a single audio-video signal, which includes a user's published webcam and microphone feed.
Streams, Connections, and Sessions
Publishers / Subscribers
▪ A Publisher publishes audio-video streams to the chat session.
▪ When you instantiate a Publisher, your browser notifies the Session that it is now streaming a new audio-video stream.
▪ When you destroy your publisher, its stream is terminated and the Session is notified appropriately.
Publisher Subscriber ▪ A Subscriber consumes an audio-video stream in a
Session, displaying it on the web page based on calls to the OpenTok client-side library.
▪ When a web page is notified that a new stream is being published to the Session, it must decide whether or not to subscribe to that stream.
▪ If the application logic deems that the stream should be subscribed to, it uses the OpenTok client-side library to instantiate a subscriber for that stream.
High Level Architecture
▪ The vast majority of functionality is delivered through the OpenTok client-side library. This is executed on the client's browser, iOS app, or Android app.
▪ The web server needs to get involved when creating new Sessions or new Tokens.
▪ Record, archive, and access every OpenTok session
▪ The Archiving API include a number of convenient features such as start-and-stop capabilities, server-side recording
▪ Archives are pushed directly to Amazon S3 account or Windows Azure, with the OpenTok Cloud serving as a 72-hour backup
The OpenTok Server SDKs let you create OpenTok sessions, generate tokens, and work with OpenTok archiving.
• Java • PHP • Python • NodeJS • .NET • Ruby
What was missing?
Apex SDK ▪ We built the OpenTok Apex SDK
and we open sourced
Working with Archives
//Ensure custom setting has recordString apiKey = openTokKey__c.getValue('key').Api_Key__c;OpenTok openTok = new OpenTok(Integer.valueOf(this.apiKey),
openTokKey__c.getValues('key').Secret__c);OpenTokSession session = openTok.createSession(null);String sessionId = session.sessionId;
OpenTokSession session = new OpenTokSession(sessionId, Integer.valueOf(apiKey), openTokKey__c.getValues('key').Secret__c);OpenTokTokenOptions tokenOptions = new OpenTokTokenOptions(OpenTokRole.PUBLISHER, 30, UserInfo.getName());String token = session.generateToken(tokenOptions);
OpenTokHTTPClient openTokHttpClient = new OpenTokHTTPClient('https://api.opentok.com', Integer.valueof(openTokKey__c.getValues('key').Api_Key__c), openTokKey__c.getValues('key').Secret__c);openTokHttpClient.startArchive('sessionId', 'Test_Recording');
Use Cases • Recruiting Application • Customer Service (overlap with the SOS functionality)
• Training Application
• Interview Management Application
Next Steps • Embedding co-browsing functionality leveraging
Resources OpenTok • https://tokbox.com/ OpenTok Developer Guide • https://tbrel.tokbox.com/developer/ Server SDKs • https://github.com/opentok Apex SDK • https://github.com/nchristopher/openTok-Salesforce WebRTC • http://www.webrtc.org/
Q&A FRANCESCO IERVOLINO Technical Architect, makepositive @socialcloudtech [email protected]