Skip navigation

 

Intro

To start a new initiative and provide examples for developers, we're going to start putting out some Jive integrations that we believe provide some benefit to our customers and you—the developers. These are open source projects under the apache 2.0 license and free to be used as they stand or as a baseline for your integrations. We'll be keeping these projects in the jiveapps/addons at master · jivesoftware/jiveapps · GitHub repo.

 

So what is LiveStream? It's a event video platform that's used by companies both big and small to provide event coverage. So a natural use case for it is a company event (like JiveWorld17!) to provide coverage to anyone who can't be at the event in person; or even for company-wide meetings.

 


 

GitHub Repos:


 

Data Flow:

This project integrates Livestream API's to bring a LiveStream live feed feed into Jive. It has the following core functionalities and data flow:

 

 

Custom View Tile (Middlewared)

Screen Shot 2016-09-26 at 6.18.25 PM2.png

Screen Shot 2016-09-26 at 5.17.53 PM.png

  • Middleware Fetches LiveStream Upcoming Events API and pushes the array of events to Tile Config
    • Can be set for other endpoints—was developed and tested on the Private Events endpoint
  • Tile Configuration window displays event to be selected to be displayed on the view window
  • Tile Configuration window has optional field to place the Simple Stream Integration's (SSI) listener URL
  • Middleware reads the saved configuration and if any event has their "isLive" parameter set to true AND a SSI listener URL was entered in the tile's configuration, it generates an activity with the SSI
  • Comments are pulled in from the activity that is related to the event being displayed in the tile and displayed
    • Comment text has link back to the comment itself in the external object
      • The user can see the all comments and continue collaboration and participate in the communication
    • If there is no activity generated, no comments are displayed

 


 

Simple Stream Integration w/ App (non-Middleware)

Screen Shot 2016-09-26 at 6.17.39 PM.png

Screen Shot 2016-09-26 at 6.17.17 PM.png

 

  • The middleware from the Custom View Tile generates activities for each event that goes live
  • The activity has an associated external object
    • The external object has an embedded app
    • External object video is larger and has full collaborative Jive experience (like, comment, share, mark for outcome)
  • App shows the live video that's associated with the video event that generated the activity

 


 

Extra

  • There is an extra file for getting an authentication token at your service's /tokens endpoint by performing a GET request—should you build something that needs to do more with LiveStream's API's

 


 

Considerations

  • This was written using mostly ES6 JavaScript, so it will only work on newer browsers
  • LiveStream currently doesn't offer webhook's so the custom middleware service is a necessity
  • Jive's Node.js SDK's jive.util.base64Encode() method does not work for API key/string only authentication
  • There are two archive files to install into Jive! This is because one service requires middleware and the other doesn't
  • I would have really liked to split up my services.js into three separate classes—LiveStream API's, Custom View Tile data pusher, SSI Activity Generator—if you have the free time or desire to make a pull request, I'll review and commit.

 


 

Initial Setup Requirements

Screen Shot 2016-09-26 at 9.58.50 PM.png

  1. Have a LiveStream account and some videos set to go live in the future
  2. In /jiveclientconfiguration.json, you'll see an object called "livestreamCredentials"—fill in all the fields
    • Look here Livestream Developers | API Dashboard for Client ID & API Key (dashed lines in the picture above)
    • Account ID can be retrieved via API or from your Livestream Video dashboard in the URL of your browser
  3. Update your middleware service URL in /tiles/LiveStreamTile/public/javascripts/configuration.js
  4. In terminal, run npm update
  5. In terminal, run node app.js to start your service and generate a new .zip for your Custom View Tile
  6. Install the zip for both the Tile and the Simple Stream Integration into your Jive Instance
  7. Install and setup the SSI into your page first and copy the URL
  8. Install the tile to your page and paste the URL and select your upcoming public event
  9. Use the LiveStream desktop app and go live in your event and see your video feed in the tile and activity get generated

So we just concluded the Jive Developer Days series' first remote/virtual event based on a European audience and here's what happened!

 

We had a lot of people register and fill out the seats from small to large companies and organizations (Jive Developer Days 2016: European Edition — Register Today!). There was so much demand that we actually went ahead and extended our original seat limit of 25 to fit the extra 5 on the waitlist. Where the past two other events were in person and that makes developing much easier and we could dedicate several hours to working together without losing interest or feeling TOO overwhelmed, we thought we should change it for the remote event to two days and half the time per day — I think that was still a good call. But overall, I think everyone learned a lot, I enjoyed some of the laughs, saw some great questions and engagement from the attendees.

 

tl;dr

  • Presented the Jive Developer Platform story
  • Made the example App Reference app using jive-sdk create app
  • Made a RSS News Feed Custom View Tile (see attachment)
  • Made a Simple Stream Integration with the App Reference App embedded (see attachment)

 

Screen Shot 2016-09-16 at 11.08.39 AM.png

 

First Day

We started the first day by introducing the high level Jive Developer Story—the Add-on Framework, Mobile solutions, External Storage Framework, and the Jive Analytics Platform. What we wanted out of this is to expose both new and seasoned Jive Developers to the full gamut of platform offerings. Since awareness is sometimes the biggest obstacle, we hoped to open the doors to all the possibilities for developers to fully realize the Jive as a organization's Hub story.

 

Following after the overview, Ryan Rutan used the Jive Node.JS SDK to create the Introducing the Jive Developer App Reference "App" on the Developer Sandbox example app, and get an understanding of app action contributions to filter where an app can go and also see the context (where, the person viewing, and content being viewed) that is available for use to enrich the experience of the community.

 

Second Day

Screen Shot 2016-09-16 at 1.37.47 PM.png

The second day took the foundations we laid down the first day and expanded on them. We started off by creating a Custom View Tile that makes a OSAPI HTTP Get request to the sample Yahoo Query Language RSS feed URL and displays the 10 most recent news articles in the tile with links to the source. We also showed how to speed up our integration development times with Ngrok.

 

Screen Shot 2016-09-16 at 1.34.33 PM.png

After that, we created a basic Simple Stream Integration from our Simple Stream Integration Builder and demonstrated a simulated Activity being generated within Jive in minutes of starting the developing. After that, we embedded the App from the session prior into the generated activity's external object and also passed in all the request data that created the Simple Stream Activity that can be used to make a richer collaborative experience. There were some hiccups that we uncovered and are going to patch our SDK shortly (this is part of why we're doing these events—make sure everything is solid).

 

What's Next?

More developer days virtual events coming soon! We are taking feedback from this pilot event and we're going to provide better ways for people to follow along and try the material out in better detail at a later time.

Introduction

 

Webhooks are a powerful Jive feature that allow you to subscribe to events that occur in the system. For example, you can subscribe to all user account creations, or all the new documents that are created in a particular Place. The subscription basically tells Jive to send a JSON object (of the content you want) to whatever endpoint you've specified.

 

The Jive documentation mentions creating some kind of add-on/extension and subscribing using a Tile, but it's actually possible use a tool like Postman to talk to the Webhook REST API to register a hook, or manage all the webhooks that are set up on your Jive instance.

 

Note; we run our community in a /community sub-folder.. so if you're following this guide, take that into account for any URLs you're copying.

 

oAuth2 Add-On

 

The first thing you need to do is install a pretty generic oAuth2 add-on. This was originally provided in this document, but I've altered meta.json to have a callback URL linked to Postman. I've attached the add-on to this document.

 

Note; uninstalling the add-on will remove any webhooks you set up against it.

 

 

oauth1.png

 

Setting Up Postman

 

Next, you need to follow these steps to set up Postman to use an OAuth 2.0 access token.

 

oauth2.png

 

oauth3.png

 

PHP Debugger

 

As you can see, in step (9) I'm telling the webhook to talk to a PHP page. This is a dead simple debug page I set up to see what the webhook payload looked like, and to test that the whole thing was working. It'll send the contents of any request to a log file.

 

Here's the code;

 

<?php
    $todays_date = date("Y-m-d G:i:s");
    $requestBody = array2string($_REQUEST);
    $entityBody = file_get_contents('php://input');
    
    $fp = fopen("webhooks.log", "at");
    fwrite($fp, "$todays_date -> $requestBody --> $entityBody\n\n");
    fclose($fp);

    function array2string($data){
        $log_a = "";
        foreach ($data as $key => $value) {
            if(is_array($value))    $log_a .= "[".$key."] => (". array2string($value). ") \n";
            else                    $log_a .= "[".$key."] => ".$value."\n";
        }
        return $log_a;
    }    
?>

 

 

Further Reading

 

Webhooks API documentation

https://developers.jivesoftware.com/api/v3/cloud/rest/WebhooksService.html

 

The post which set me on the right track to get Postman to talk to Jive

https://community.jivesoftware.com/message/1588488

 

Original oauth2 add-on.

https://community.jivesoftware.com/docs/DOC-97348

Filter Blog