Skip to content

Latest commit

 

History

History
231 lines (222 loc) · 8.02 KB

Technical_Presentation_sharing.md

File metadata and controls

231 lines (222 loc) · 8.02 KB

Presentation sharing allows any SIP client to share PowerPoint documents with any client connected to the same bridge. The only technical requirements are support for HTTP(S) (sharer only) and SIP INFO.
This is a revolutionary way to share presentation as the documents are “streamed” in the video channel which means any client supporting video could see it. The slides are extracted from the document using OpenOffice (or LibreOffice) as JPEG pictures, re-encoded (H.264, VP8 or whatever) and mixed in the current video stream. Technically, OpenOffice is not integrated in the system but forked as new process and this is why both the SDK and application are required. The OpenOffice process will be started by the TelePresence system at boot time and added to the same job group as the current process to make sure the child will exit when the parent unexpectedly die. The default port used for the inter-process commutation is 2083 and could be changed using the configuration as explained here.
The TelePresence system supports CORS which means the request could be sent from any domain.
This feature could be tested using our online WebRTC SIP client.

Steps:

  1. Publish the PowerPoint document to the bridge using HTTP(S) POST requests.
  2. Receive feedbacks from the MCU (SIP INFO messages).
  3. Move from slide to slide using SIP INFO messages.
  4. Close the presentation session using SIP INFO message.

Publishing the document

To start sharing a PowerPoint document you must have an active video session. You can only share ONE presentation at time.
The document is sent to the MCU in TWO HTTP(S) requests using the same connection. The first request sends information about the document and the second the content. You must not mix the document information and content.
The TelePresence system must be configured with an http or https transport (or both) as explained here.
The first request structure:

Element Value Availability
Request type HTTP(S) POST Mandatory
Request URL /presentation Optional
Content-Type application/json Mandatory

First request content (JSON):

Field name Field value Type Availability
action “req_presentation_upload” String Mandatory
name String Mandatory
type String Optional
size Integer Optional
bridge_id String Optional
bridge_pin String Optional
user_id String Mandatory
POST /presentation HTTP/1.1
Host: 192.168.0.37:20065
Connection: keep-alive
Content-Length: 174
Origin: http://conf-call.org
User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Content-type: application/json
Accept: */*
Referer: http://conf-call.org
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

{"action":"req_presentation_upload","name":"db_pres_01.ppt","type":"application/vnd.ms-powerpoint","size":752128,"bridge_id":"100600","bridge_pin":"1234","user_id":"johndoe"}

The second request structure:

Element Value Availability
Request type HTTP(S) POST Mandatory
Request URL /presentation Optional
Content < Binary > Mandatory

Receiving feedbacks

Once the presentation is published the TelePresence system will send SIP INFO messages to give feedbacks about the session state. The SIP INFO messages always contain JSON content.
JSON content:

Field name Field value Type Availability
action “res_presentation_state” String Mandatory
name < server defined > String Mandatory
state “opened”
“exported”
“closed”
“error”
String Mandatory
id < server defined > Integer Optional
page_index < server defined > Integer Optional (0 if missing)

Fetching the presentation

Once the presentation is opened (see previous section), you can navigate through it using SIP INFO messages. For security reasons the presentation is tied to your SIP connection to be sure no one else could control it.
JSON content:

Field name Field value Type Availability
action “req_presentation_goto” String Mandatory
page_index < user defined > Integer Mandatory
id < user defined > Integer Optional

Closing the presentation

At any time you can end the presentation session using SIP INFO request.
JSON content:

Field name Field value Type Availability
action “req_presentation_close” String Mandatory
id < user defined > Integer Optional