Text of Building Video Apps on Salesforce Platform
1. 1 Building video apps on Salesforce Platform
2. Salesforce PLATINUM Partner More than 400 successful Salesforce project deliveries Leaders in Customer Engagementsolutions #1 Professional Services Partner for Salesforce in the UK Innovation Passion All about makepositive
3. FRANCESCO IERVOLINO Salesforce Certied Technical Architect @socialcloudtech
4. 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 Agenda
5. 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 eective video apps
6. OpenTok GoToMeeting WebEx Adobe Connect BuddyMeeting Google Hangout Video Platforms Skype Vidyo Vsee Skype Etc. Video Platform vs Standalone Apps
7. WebRTC Open project thatprovides 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.
8. Whats the best?
10. Example 1
11. 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 STREAMS 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. CONNECTIONS SESSIONS Streams, Connections, and Sessions
12. 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.
13. 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.
14. Stream Recording 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
15. The OpenTok Server SDKs let you create OpenTok sessions, generate tokens, and work with OpenTok archiving. Java PHP Python NodeJS .NET Ruby Server SDKs 15
16. What was missing?
17. Apex SDK We built the OpenTok Apex SDK and we open sourced Creating Sessions Generating Tokens Working with Archives //Ensure custom setting has record String 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');
19. Use Cases Recruiting Application Customer Service (overlap with the SOS functionality) Training Application Interview Management Application Next Steps Embedding co-browsing functionality leveraging OpenTok signaling Screensharing