Download - Building video apps on Salesforce Platformfiles.meetup.com/5530672/makepositive - Northen User Group - Jul 2015.pdf · Building video apps on Salesforce Platform . Salesforce PLATINUM

Transcript

1

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

Innovation

Passion

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

Agenda

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

Video Platforms

•  Skype

•  Vidyo

•  Vsee

•  Skype

•  Etc.

Video Platform vs Standalone Apps

WebRTC

•  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?

Capabilities: •  Robust Messaging •  Multi-part calls •  Archiving •  Voice •  Intelligent Quality Control (IQC)

•  WebRTC (No desktop client needed) •  IE plugin •  Rest API/Javascript SDK •  Android / iOS SDK

OpenTok The OpenTok Platform allows developers to integrate live, face-to-face video directly into their website and mobile apps using WebRTC

Example 1

•  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

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.

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

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

What was missing?

Apex SDK ▪ We built the OpenTok Apex SDK

and we open sourced

Creating Sessions

Generating Tokens

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');

DEMO

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

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]

Thank You