SlideShare une entreprise Scribd logo
1  sur  41
The Activity Stream: Your Gateway To
Pushing Higher Traffic Through
Connections
James Gallagher, Senior Software Engineer, IBM Ireland
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.
Agenda
Intro
Integrate 3rd
Party Events
Integration with IBM products
Life in 3rd
Party Apps
Conclusion
Q&A
Intro
Possibility of Higher traffic
Heavily featured product, think it could be used more?
Leveraging it full potential?
Content + Location
Activity Stream Features
AS_Intro.mp4
Video with presentation's zip on IBM Greehouse here
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
How Its Implemented
Activity Stream Standard - http://activitystrea.ms/
Used by
– IBM
– Google
– Microsoft
– Opera
– MySpace
– To name a few...
Exposed as an Open Social Gadget
Integrate 3rd
Party Events
Atlassian Integration Example
AS_Atlassian_Integration.mp4
Video with presentation's zip on IBM Greehouse here
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
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
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
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
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": "http://ebmedia.eventbrite.com/s3-
build/images/6261669/36270708046/1/logo.png"
},
"displayName": "Social Connect VI",
"url": "http://socialconnections.info/events/social-connections-vi"
}
The image, if provided, is displayed in stream. Should be 16x16
Generator – registration
Applications can be registered
(NewsActivityStreamService.registerApplication())
Provide following details:
– appId, displayName, url, secureUrl, imageUrl, secureImageUrl, summary
– NewsActivityStreamService.registerApplication("socialConnectVI", "Social Connect VI",
"http://socialconnections.info/events/social-connections-vi/", "https://socialconnections.info/events/social-
connections-vi/", "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png",
"https://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png", "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
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": "http://SocialConnectionsVI.com/ASIntegration.odp",
"displayName": "ASIntegration.odp",
"url": "http://SocialConnectionsVI.com/viewSlide?deck=ASIntegration.odp"
}
}
File Item
Can also add preview image
"object": {
...
"image": {
"url": "http://SocialConnectionsVI.com/getThumb?deck=ASIntegration.odp"
}
}
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*
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.
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/com.ibm.lconn.gadget/
test/bootstrap.html
<developer enabled="true" allowSSOFeature="true" allowIntranetProxyAccess="true">
EE - OpenSocial Gadget
Need to provide gadget and context when posting entry
"opensocial": {
"embed": {
"gadget": "http://SocialConnectionsVI.com/gadgets/slideview.xml",
"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
EE - URL
Provide url when posting entry
"opensocial": {
"embed": {
"url": "http://SocialConnectionsVI.com/ee/viewSlide?
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
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"
},
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
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}.
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.
Coding Example
Coding_Example.mp4
Video with presentation's zip on IBM Greehouse here
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": "http://w3.ibm.com"
}
}
Add a Generator
{
"generator": {
"image": {
"url": "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png"
},
"id": "SocialConnectionsVI",
"displayName": "Social Connections VI",
"url": "http://socialconnections.info/events/social-connections-vi"
},
"actor": {
"id": "@me"
},
"verb": "share",
"title": "${share}",
"object": {
"summary": "A totally new way of looking atthings",
"id": "thisid",
"displayName": "Something Interesting",
"url": "http://w3.ibm.com"
}
}
Add a Comment
{
"generator": {
"image": {
"url": "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png"
},
"id": "SocialConnectionsVI",
"displayName": "Social Connections VI",
"url": "http://socialconnections.info/events/social-connections-vi"
},
"actor": {
"id": "@me"
},
"verb": "comment",
"title": "${comment}",
"object": {
"summary": "This is definitely interesting",
"id": "commentid",
"objectType": "comment",
"displayName": "Definitely interesting",
"url": "http://w3.ibm.com"
},
"target": {
"summary": "A totally new way of looking atthings",
"id": "thisid",
"displayName": "Something Interesting",
"url": "http://w3.ibm.com"
},
"connections": {
"rollupid": "thisid"
}
}
Add Formatted Text
{
"generator": {
"image": {
"url": "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png"
},
"id": "SocialConnectionsVI",
"displayName": "Social Connections VI",
"url": "http://socialconnections.info/events/social-connections-vi"
},
"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="http://inspirationalgadget.googlecode.com/s
vn/trunk/images/misty.jpg"></td></tr></table>",
"object": {
"summary": "This is definitely interesting",
"id": "commentid",
"objectType": "comment",
"displayName": "Definitely interesting",
"url": "http://w3.ibm.com"
},
"target": {
"summary": "A totally new way of looking atthings",
"id": "thisid",
"displayName": "Something Interesting",
"url": "http://w3.ibm.com"
},
"connections": {
"rollupid": "thisid"
}
}
Add Embeddied Experience
{
"generator": {
"image": {
"url": "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png"
},
"id": "SocialConnectionsVI",
"displayName": "Social Connections VI",
"url": "http://socialconnections.info/events/social-connections-vi"
},
"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="http://inspirationalgadget.googlecode.com/s
vn/trunk/images/misty.jpg"></td></tr></table>",
"object": {
"summary": "This is definitely interesting",
"id": "commentid",
"objectType": "comment",
"displayName": "Definitely interesting",
"url": "http://w3.ibm.com"
},
"target": {
"summary": "A totally new way of looking at things",
"id": "thisid",
"displayName": "Something Interesting",
"url": "http://w3.ibm.com"
},
"connections": {
"rollupid": "thisid"
},
"openSocial": {
"embed": {
"gadget": "http://inspirationalgadget.googlecode.com/svn/trunk/wisdom.xml",
"context": {
"id": "12345"
}
}
}
}
Integration with IBM Products
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
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
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
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
Q&A
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, ibm.com,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
www.ibm.com/legal/copytrade.shtml
Other company, product, or service names may be trademarks or service marks of others.

Contenu connexe

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

Cis407 a ilab 6 web application development devry university
Cis407 a ilab 6 web application development devry universityCis407 a ilab 6 web application development devry university
Cis407 a ilab 6 web application development devry university
lhkslkdh89009
 

Similaire à IBM Connections Activity Stream 3rd Party Integration - Social Connect VI - Prague - 2014 (20)

Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Google Wave API: Now and Beyond
Google Wave API: Now and BeyondGoogle Wave API: Now and Beyond
Google Wave API: Now and Beyond
 
Getting started with rails active storage wae
Getting started with rails active storage waeGetting started with rails active storage wae
Getting started with rails active storage wae
 
Moodle + Adobe Connect
Moodle + Adobe Connect Moodle + Adobe Connect
Moodle + Adobe Connect
 
Asset Model Import FlexConnector Developer's Guide
Asset Model Import FlexConnector Developer's GuideAsset Model Import FlexConnector Developer's Guide
Asset Model Import FlexConnector Developer's Guide
 
Vincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial GadgetsVincent Burckhardt - Exending Connections with OpenSocial Gadgets
Vincent Burckhardt - Exending Connections with OpenSocial Gadgets
 
MuleSoft Surat Live Demonstration Virtual Meetup#3 - Building JWT OAuth 2.0 C...
MuleSoft Surat Live Demonstration Virtual Meetup#3 - Building JWT OAuth 2.0 C...MuleSoft Surat Live Demonstration Virtual Meetup#3 - Building JWT OAuth 2.0 C...
MuleSoft Surat Live Demonstration Virtual Meetup#3 - Building JWT OAuth 2.0 C...
 
Moodle andoffice365withadfs
Moodle andoffice365withadfsMoodle andoffice365withadfs
Moodle andoffice365withadfs
 
Plugins 2.0: The Overview
Plugins 2.0: The OverviewPlugins 2.0: The Overview
Plugins 2.0: The Overview
 
YUI Basics
YUI BasicsYUI Basics
YUI Basics
 
Meteor + Ionic Introduction
Meteor + Ionic IntroductionMeteor + Ionic Introduction
Meteor + Ionic Introduction
 
Synopsis
SynopsisSynopsis
Synopsis
 
The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Started
 
Oracle ADF Case Study
Oracle ADF Case StudyOracle ADF Case Study
Oracle ADF Case Study
 
Cis407 a ilab 6 web application development devry university
Cis407 a ilab 6 web application development devry universityCis407 a ilab 6 web application development devry university
Cis407 a ilab 6 web application development devry university
 
Revised Adf security in a project centric environment
Revised Adf security in a project centric environmentRevised Adf security in a project centric environment
Revised Adf security in a project centric environment
 
Java EE Services
Java EE ServicesJava EE Services
Java EE Services
 
Unicenter Autosys Job Management
Unicenter Autosys Job ManagementUnicenter Autosys Job Management
Unicenter Autosys Job Management
 
The Ball Launch on 2013 Microsoft TechDays Part 2/2
The Ball Launch on 2013 Microsoft TechDays Part 2/2The Ball Launch on 2013 Microsoft TechDays Part 2/2
The Ball Launch on 2013 Microsoft TechDays Part 2/2
 
Grails Advanced
Grails Advanced Grails Advanced
Grails Advanced
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

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

  • 1. The Activity Stream: Your Gateway To Pushing Higher Traffic Through Connections James Gallagher, Senior Software Engineer, IBM Ireland
  • 2.
  • 3. 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.
  • 4. Agenda Intro Integrate 3rd Party Events Integration with IBM products Life in 3rd Party Apps Conclusion Q&A
  • 6. Possibility of Higher traffic Heavily featured product, think it could be used more? Leveraging it full potential? Content + Location
  • 7. Activity Stream Features AS_Intro.mp4 Video with presentation's zip on IBM Greehouse here
  • 8. 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
  • 9. How Its Implemented Activity Stream Standard - http://activitystrea.ms/ Used by – IBM – Google – Microsoft – Opera – MySpace – To name a few... Exposed as an Open Social Gadget
  • 11. Atlassian Integration Example AS_Atlassian_Integration.mp4 Video with presentation's zip on IBM Greehouse here
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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": "http://ebmedia.eventbrite.com/s3- build/images/6261669/36270708046/1/logo.png" }, "displayName": "Social Connect VI", "url": "http://socialconnections.info/events/social-connections-vi" } The image, if provided, is displayed in stream. Should be 16x16
  • 17. Generator – registration Applications can be registered (NewsActivityStreamService.registerApplication()) Provide following details: – appId, displayName, url, secureUrl, imageUrl, secureImageUrl, summary – NewsActivityStreamService.registerApplication("socialConnectVI", "Social Connect VI", "http://socialconnections.info/events/social-connections-vi/", "https://socialconnections.info/events/social- connections-vi/", "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png", "https://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png", "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
  • 18. 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": "http://SocialConnectionsVI.com/ASIntegration.odp", "displayName": "ASIntegration.odp", "url": "http://SocialConnectionsVI.com/viewSlide?deck=ASIntegration.odp" } }
  • 19. File Item Can also add preview image "object": { ... "image": { "url": "http://SocialConnectionsVI.com/getThumb?deck=ASIntegration.odp" } }
  • 20. 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*
  • 21. 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.
  • 22. 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/com.ibm.lconn.gadget/ test/bootstrap.html <developer enabled="true" allowSSOFeature="true" allowIntranetProxyAccess="true">
  • 23. EE - OpenSocial Gadget Need to provide gadget and context when posting entry "opensocial": { "embed": { "gadget": "http://SocialConnectionsVI.com/gadgets/slideview.xml", "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
  • 24. EE - URL Provide url when posting entry "opensocial": { "embed": { "url": "http://SocialConnectionsVI.com/ee/viewSlide? 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
  • 25. 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" },
  • 26. 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
  • 27. 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}.
  • 28. 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.
  • 29. Coding Example Coding_Example.mp4 Video with presentation's zip on IBM Greehouse here
  • 30. 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": "http://w3.ibm.com" } }
  • 31. Add a Generator { "generator": { "image": { "url": "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png" }, "id": "SocialConnectionsVI", "displayName": "Social Connections VI", "url": "http://socialconnections.info/events/social-connections-vi" }, "actor": { "id": "@me" }, "verb": "share", "title": "${share}", "object": { "summary": "A totally new way of looking atthings", "id": "thisid", "displayName": "Something Interesting", "url": "http://w3.ibm.com" } }
  • 32. Add a Comment { "generator": { "image": { "url": "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png" }, "id": "SocialConnectionsVI", "displayName": "Social Connections VI", "url": "http://socialconnections.info/events/social-connections-vi" }, "actor": { "id": "@me" }, "verb": "comment", "title": "${comment}", "object": { "summary": "This is definitely interesting", "id": "commentid", "objectType": "comment", "displayName": "Definitely interesting", "url": "http://w3.ibm.com" }, "target": { "summary": "A totally new way of looking atthings", "id": "thisid", "displayName": "Something Interesting", "url": "http://w3.ibm.com" }, "connections": { "rollupid": "thisid" } }
  • 33. Add Formatted Text { "generator": { "image": { "url": "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png" }, "id": "SocialConnectionsVI", "displayName": "Social Connections VI", "url": "http://socialconnections.info/events/social-connections-vi" }, "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="http://inspirationalgadget.googlecode.com/s vn/trunk/images/misty.jpg"></td></tr></table>", "object": { "summary": "This is definitely interesting", "id": "commentid", "objectType": "comment", "displayName": "Definitely interesting", "url": "http://w3.ibm.com" }, "target": { "summary": "A totally new way of looking atthings", "id": "thisid", "displayName": "Something Interesting", "url": "http://w3.ibm.com" }, "connections": { "rollupid": "thisid" } }
  • 34. Add Embeddied Experience { "generator": { "image": { "url": "http://ebmedia.eventbrite.com/s3-build/images/6261669/36270708046/1/logo.png" }, "id": "SocialConnectionsVI", "displayName": "Social Connections VI", "url": "http://socialconnections.info/events/social-connections-vi" }, "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="http://inspirationalgadget.googlecode.com/s vn/trunk/images/misty.jpg"></td></tr></table>", "object": { "summary": "This is definitely interesting", "id": "commentid", "objectType": "comment", "displayName": "Definitely interesting", "url": "http://w3.ibm.com" }, "target": { "summary": "A totally new way of looking at things", "id": "thisid", "displayName": "Something Interesting", "url": "http://w3.ibm.com" }, "connections": { "rollupid": "thisid" }, "openSocial": { "embed": { "gadget": "http://inspirationalgadget.googlecode.com/svn/trunk/wisdom.xml", "context": { "id": "12345" } } } }
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. Q&A
  • 41. 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, ibm.com,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 www.ibm.com/legal/copytrade.shtml Other company, product, or service names may be trademarks or service marks of others.