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:
- Publish the PowerPoint document to the bridge using HTTP(S) POST requests.
- Receive feedbacks from the MCU (SIP INFO messages).
- Move from slide to slide using SIP INFO messages.
- Close the presentation session using SIP INFO message.
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 | |
|
The second request structure:
Element | Value | Availability |
Request type | HTTP(S) POST | Mandatory |
Request URL | /presentation | Optional |
Content | < Binary > | Mandatory |
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) |
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 |
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 |