IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - Prague - 2014


Published on

Have you ever thought that your organisation could be utilising IBM Connections more? The session will demonstrate the highly flexible and integratable component that is the IBM Connections' Activity Stream. The stream can be integrated into different IBM products such as IBM Notes and IBM WebSphere Portal but is also an Open Social Gadget and therefore can run within any OpenSocial container such as Apache Shindig. This stream is based on an open standard and the content within does not have to be from Connections alone. One business partner integrated Atlassian JIRA and Confluence content into the Activity Stream. This presentation explains and demonstrates how to utilise this functionality in your organisation.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - Prague - 2014

  1. 1. The Activity Stream: Your Gateway To Pushing Higher Traffic Through Connections James Gallagher, Senior Software Engineer, IBM Ireland
  2. 2. Please Note IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM’s sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the user’s job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here.
  3. 3. Agenda Intro Integrate 3rd Party Events Integration with IBM products Life in 3rd Party Apps Conclusion Q&A
  4. 4. Intro
  5. 5. Possibility of Higher traffic Heavily featured product, think it could be used more? Leveraging it full potential? Content + Location
  6. 6. Activity Stream Features AS_Intro.mp4 Video with presentation's zip on IBM Greehouse here
  7. 7. Activity Stream Features Status Update + file upload with image/file preview Timeago + Permalink @mentions URL Preview Inline Commenting Action Items – Like, Comment, Repost, Save this, Stop Following Other Connection Component Updates – blogs, wikis, etc. EE - actions items, forum replies etc. 3 Updates Views – I'm Following, Status Updates, Discover Others Views - @mentions, My Notifications, Action Required, Saved
  8. 8. How Its Implemented Activity Stream Standard - Used by – IBM – Google – Microsoft – Opera – MySpace – To name a few... Exposed as an Open Social Gadget
  9. 9. Integrate 3rd Party Events
  10. 10. Atlassian Integration Example AS_Atlassian_Integration.mp4 Video with presentation's zip on IBM Greehouse here
  11. 11. Authentication Anonymous access For public data, some APIs are available at an anonymous URL, where no authentication challenge is performed <server>/connections/opensocial/anonymous/rest/activitystreams/@ me/@all Form Based Authentication Authentication used by browser URLs (where the user is redirected to the login page) Ajax applications also use this when accessing APIs in order to take advantage of the available session information Complex login redirect handing is however required Not recommended or supported for third party applications <server>/connections/opensocial/rest/activitystreams/@me/@all
  12. 12. Authentication Basic Authentication Needs Base-64 encoded header for the username and password This should always be done over https (avoid cleartext passwords) Most HTTP libraries support setting basic authentication headers <server>/connections/opensocial/basic/rest/activitystreams/@public/ @all OAuth Authorisation Is an authorisation (rather than authentication) mechanism You can authorise a service to act on your behalf without giving them your credentials <server>/connections/opensocial/oauth/rest/activitystreams/@public/ @all
  13. 13. 3rd Party Events Can POST any event to the stream of the current user – /connections/opensocial/rest/activitystreams/@me/@all Main details are - – actor : Connections or External Id – verb : from a set list – title : Connections will generate if needed – content : for display of event details – updated : event time – object : details on the object including title, id etc. – connections : a grab bag of connections specific properties that add more information
  14. 14. HTML Formatting No Active Content – ACF run on all fields title – Allows anchor tags only content, object.summary – Allows following tags – <a> <b> <blockquote> <br> <caption> <cite> <code> <col> – <colgroup> <dd> <dl> <dt> <em> <i> <img> <li> <ol> <p> – <pre> <q> <small> <strike> <strong> <sub> <sup> <table> – <tbody> <td> <tfoot> <th> <thead> <tr> <u> <ul> Style limitations – Images given max-width of 100% (of the item container) – Tables given simple 1px border – Vertical whitespace (newlines, paragraphs) collapsed
  15. 15. Generator Identifies the source of the entry Can be used to request filtered feeds Can specify details in entry being posted "generator": { "id": "socialConnectVI", "image": { "url": " build/images/6261669/36270708046/1/logo.png" }, "displayName": "Social Connect VI", "url": "" } The image, if provided, is displayed in stream. Should be 16x16
  16. 16. Generator – registration Applications can be registered (NewsActivityStreamService.registerApplication()) Provide following details: – appId, displayName, url, secureUrl, imageUrl, secureImageUrl, summary – NewsActivityStreamService.registerApplication("socialConnectVI", "Social Connect VI", "", " connections-vi/", "", "", "Best Conference EVER!", "true") Benefits: – Post events with just appId for generator "generator": { "id": "socialConnectionsVI" } – ImageUrl or SecureImageUrl choosen appropriately for feed – Filter displayed in ActivityStreams in Connections
  17. 17. File Item Use objectType: “file” for entry that denotes a file { "actor": { "id": "@me" }, "verb": "post", "title": "${Actor} has uploaded ${Object} to <a href='#'>SlideView</a>", "object": { "summary": "", "objectType": "file", "id": "slide001", "fileUrl": "", "displayName": "ASIntegration.odp", "url": "" } }
  18. 18. File Item Can also add preview image "object": { ... "image": { "url": "" } }
  19. 19. Embedded Experience Provide extra detail and embedded functionality for your ActivityStream entry Displayed in popup when entry is clicked in the stream Defined in entry.opensocial.embed Two types supported: – OpenSocial gadget – URL*
  20. 20. Configuration Development Edit the opensocial-config.xml file in the LotusConnections-config directory. Set the whiteListEnable attribute of gadget-settings to "false". Any Gadget can now be placed into the stream. This is not secure enough for a production environment. However, it is suitable for a development server. <security whitelistEnabled="false" featureAdminEnabled="true"> With this setting in place, you can now post any event into the Activity Stream referencing any Gadget, and the Gadget will be rendered. Note : You should be checking the file out to do this, but if you are on a single node you can edit the file directly and restart the server.
  21. 21. Configuration Enabling developers on a production server Where a server is required for both production and development the server admin can enable a development page and a number of hosts who have the authority to deliver Gadgets. You will need to edit the opensocial-config.xml file in the LotusConnections-config directory You should set the enabled attribute of developer to "true". You can then use the developer page to test Gadgets. http://<myserver>/connections/resources/web/ test/bootstrap.html <developer enabled="true" allowSSOFeature="true" allowIntranetProxyAccess="true">
  22. 22. EE - OpenSocial Gadget Need to provide gadget and context when posting entry "opensocial": { "embed": { "gadget": "", "context": { "deck": "ASIntegration.odp" } } } gadget – URI to the gadget definition context – Anything you want Gadget must be registered – via Homepage Administration UI or wsadmin commands – Gadgets that are not registered will be ignored, and a generic EE from Connections is used Typically, gadgets will use OAuth authentication to load data from application
  23. 23. EE - URL Provide url when posting entry "opensocial": { "embed": { "url": " deck=ASIntegration.odp"" } } There is no context supported, but contextual data can be passed in URL URL must be whitelisted (via opensocial-config.xml) – URLs that are not whitelisted will be ignored, and generic EE from Connections is used
  24. 24. Rollup In order to address the scenario where a user posts a file and 200 people 'like' it, filling up their Activity Stream, rollup needs to be performed. This means – Only the latest event on any given object is shown – The 2 most recent comments are returned. We support the ?rollup=true flag on retrieval for specifying that a rolled up feed is required. In order to provide for rollup, simply add the following (by default, the object id will be used) "connections": { "rollupid": "3d7638dd-b5e1-4d52-a03d-83591996da20" },
  25. 25. Templated titles Connections allows for the introduction of two kinds of title template – Object substitutions - where a referenced object within the event is substituted into the title. – Title template substitutions - using object substitutions, providing a complete title
  26. 26. Templated titles Object Substitution - A number of substitution values are supported within a submitted event.title. These are specified using the ${} marker. – ${Actor} - this is converted into appropriately marked up HTML which displays the Actors name and links to a Business Card corresponding to the Actor – ${Object} - for person objects as per Actor above, otherwise the displayName with a link to the url – ${Target} - for person objects as per Actor above, otherwise the displayName with a link to the url Title Template Substitution – ${add}=${Actor} added ${Object}. – ${create}=${Actor} created ${Object}.
  27. 27. Distributing events By default most users do not have the authority to distribute events to another users stream. If they did then this would mean that any user would have the ability to spam indiscriminately. Although the ability to distribute can be opened up via configuration to any user, there is some basic distribution allowed for any user. – To [UserID] where the user in question is the current user – To @me which resolves to the same thing – To @public which means the event will appear on everyones discovery tab - but this is only permitted if the submitting user is also the actor in the event – To [CommunityId] where the current user is a member of that community or the community is public - again this is only permitted if the submitting user is also the actor in the event. In order do distribute any event to any user, the distributing user needs to be in the appropriate J2EE Role.
  28. 28. Coding Example Coding_Example.mp4 Video with presentation's zip on IBM Greehouse here
  29. 29. Simple Event { "actor": { "id": "@me" }, "verb": "share", "title": "${share}", "object": { "summary": "A totally new way of looking at things", "id": "thisid", "displayName": "Something Interesting", "url": "" } }
  30. 30. Add a Generator { "generator": { "image": { "url": "" }, "id": "SocialConnectionsVI", "displayName": "Social Connections VI", "url": "" }, "actor": { "id": "@me" }, "verb": "share", "title": "${share}", "object": { "summary": "A totally new way of looking atthings", "id": "thisid", "displayName": "Something Interesting", "url": "" } }
  31. 31. Add a Comment { "generator": { "image": { "url": "" }, "id": "SocialConnectionsVI", "displayName": "Social Connections VI", "url": "" }, "actor": { "id": "@me" }, "verb": "comment", "title": "${comment}", "object": { "summary": "This is definitely interesting", "id": "commentid", "objectType": "comment", "displayName": "Definitely interesting", "url": "" }, "target": { "summary": "A totally new way of looking atthings", "id": "thisid", "displayName": "Something Interesting", "url": "" }, "connections": { "rollupid": "thisid" } }
  32. 32. Add Formatted Text { "generator": { "image": { "url": "" }, "id": "SocialConnectionsVI", "displayName": "Social Connections VI", "url": "" }, "actor": { "id": "@me" }, "verb": "comment", "title": "${comment}", "content": "<table><tr><td><i>Click on this entry to launch the embedded experience and see details and event history<p/><b>Note :</b> This is the default experience</i></td><td><img src=" vn/trunk/images/misty.jpg"></td></tr></table>", "object": { "summary": "This is definitely interesting", "id": "commentid", "objectType": "comment", "displayName": "Definitely interesting", "url": "" }, "target": { "summary": "A totally new way of looking atthings", "id": "thisid", "displayName": "Something Interesting", "url": "" }, "connections": { "rollupid": "thisid" } }
  33. 33. Add Embeddied Experience { "generator": { "image": { "url": "" }, "id": "SocialConnectionsVI", "displayName": "Social Connections VI", "url": "" }, "actor": { "id": "@me" }, "verb": "comment", "title": "${comment}", "content": "<table><tr><td><i>Click on this entry to launch the embedded experience and see details and event history<p/><b>Note :</b> This is the default experience</i></td><td><img src=" vn/trunk/images/misty.jpg"></td></tr></table>", "object": { "summary": "This is definitely interesting", "id": "commentid", "objectType": "comment", "displayName": "Definitely interesting", "url": "" }, "target": { "summary": "A totally new way of looking at things", "id": "thisid", "displayName": "Something Interesting", "url": "" }, "connections": { "rollupid": "thisid" }, "openSocial": { "embed": { "gadget": "", "context": { "id": "12345" } } } }
  34. 34. Integration with IBM Products
  35. 35. Notes Heavily Integrated within Notes Activity Stream gadget can live in multiple places – AS gadget in narrow mode on side bar – AS gadget in full mode within it's own window Multiple Embedded Experience gadgets used also – Repling to Forums Context Menu Actions and Controls
  36. 36. Portal Fully functional Activity Stream able to live anywhere inside Portal Can be associated to user's I'm Following or to a community Portal_AS_Integration.mp4 Video with presentation's zip on IBM Greehouse here
  37. 37. Life in 3rd Party Apps Activity Stream OSG can be loaded into any Open Social Container Also the Connection's EEs could be leveraged Notes is an example of this All of this could be integrated with 3rd Party Event + EEs Living in 3rd Party applications
  38. 38. Conclusion With more relevant Content And located in related areas of products Will push more traffic into Connections And begin to leverage it's full potential Can have you own Activity Stream wherever you want
  39. 39. Q&A
  40. 40. Acknowledgements and Disclaimers Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. © Copyright IBM Corporation 2014. All rights reserved. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. IBM, the IBM logo,,and IBM Connections, and IBM FileNet are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at Other company, product, or service names may be trademarks or service marks of others.