SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
Social Connections VI Prague - An introduction to ibm connections as an appdev platform
1. There’s
an
API
for
that!
Why
and
how
to
build
on
the
IBM
Connec=ons
PLATFORM
Mikkel
Flindt
Heisterberg
OnTime®
by
IntraVision
2.
3. Agenda
• Brief
intro
to
IBM
Connec=ons
as
a
PLATFORM
• Briefer
intro
to
widgets
for
IBM
Connec=ons
• Boxer
brief
intro
to
developing
for
the
Ac=vity
Stream
• Ultra
brief
intro
to
event
handlers
• Running
short
on
=me
and
taking
ques=ons
in
the
hall
Mikkel
Flindt
Heisterberg
TwiNer:
@lekkim
E-‐mail:
mS@intravision.dk
hNp://lekkimworld.com
hNp://slideshare.net/lekkim
10. Widgets
–
iContext
• An
iContext
instance
is
set
into
the
iScope
instance
• The
iContext
provides
access
to
the
widget
markup
(e.g.
root
element),
I/O
related
func=ons
(i.e.
URL
rewri=ng),
widget
aNributes
etc.
• The
iContext
is
easily
accessed
from
the
iScope
class
using
this.iContext
• Important
func=ons
include:
– iContext.getRootElement() : DOM Element
– iContext.getElementById(id:string) : DOM Element
– iContext.getiWidgetAttributes() : ItemSet
– iContext.getUserProfile() : ItemSet
– iContext.io.rewriteURI(uri:string) : string
– iContext.iEvents.fireEvent(name:string, type:string,
payload:object)
11. Ac=vity
Stream
• The
following
is
based
on
my
highly
acclaimed
(cough,
cough)
presenta=on
on
the
Ac=vity
Stream
• Much
more
detail
and
many
examples
there
• See
hNp://slideshare.net/lekkim
Mikkel
Flindt
Heisterberg
TwiNer:
@lekkim
E-‐mail:
mS@intravision.dk
hNp://lekkimworld.com
hNp://slideshare.net/lekkim
12. Ac=vity
Stream
• IS
– River
of
news
–
it’s
like
water
flowing
by
you
– No=fica=ons
about
”stuff”
happening
in
(other)
systems
–
we
refer
to
these
no=fica=ons
as
entries
• ISN’T
– A
new
inbox
–
doesn’t
replace
email
– A
perpeptual
data
store
–
entries
are
deleted
based
on
a
server
defined
purge
interval
(default
is
30
days)
unless
saved
or
ac<onable
13. Ac=vity
Stream
• In
my
opinion
it
makes
most
sense
to
not
consider
the
ac=vity
stream
as
one
single
stream
• Instead
think
that
– Each
user
has
his/her
own
(@me)
– There
is
a
public
stream
(@public)
– A
community
may
have
a
stream
if
the
widget
has
been
added
by
a
community
owner
–
if
there’s
no
stream
for
a
community
pos=ng
to
it
will
return
a
”403
Forbidden”
14. Ac=vity
Stream
• You
will
mainly
use
the
POST
and
PUT
methods
to
send
JSON
data
(Content-‐Type:
applica=on/json)
to
the
API
• JSON
is
super
simple
key/value
data
format.
It
has
simple
datatypes
(strings,
numbers,
booleans),
objects
and
arrays
{
”email”: ”mh@intravision.dk”,
”niceGuy”: true,
”age”: 37,
”name”: {
”first”: ”Mikkel Flindt”, ”last”: ” Heisterberg”
},
”Connectospheres”: [6, 7, 8, 9, 10, 11, 12, 13, 14]
}
16. Ac=vity
Stream
hNps://<host>/connec=ons/opensocial/<auth>/rest/ac=vitystreams
/<user
ID>/<group
ID>/<applica<on
ID>/<ac<vity
ID>
Component
Meaning
<auth>
(op<onal)
If
using
form
based
authen=ca=on
leave
this
component
out.
Otherwise
op=ons
are
anonymos,
basic,
oauth.
<user
ID>
The
user
whose
stream
you’re
addressing
–
use
@me
for
current
users
stream,
@public
for
public
stream
or
a
community
ID
for
the
stream
in
a
community.
<group
ID>
The
group
of
entries
you’re
addressing
–
use
@all
for
all
posts
or
op=ons
for
special
meaning
such
as
@saved,
@ac<ons,
@men<ons.
Refer
for
InfoCenter
and
resources
slide
for
more.
<applica=on
ID>
When
retrieving
entries
this
refers
to
the
applica=on
(or
”generator”)
that
created
the
entry.
All
the
IBM
Connec=ons
app
names
can
be
used
(profiles,
blogs,
wikis
etc.)
plus
custom
ones
(e.g.
on<megc).
@all
used
for
all
applica=ons.
<ac=vity
ID>
Used
to
reference
a
specific
event
e.g.
for
upda=ng
saved
status.
17. Ac=vity
Stream
1. /activitystreams/@me/@all
List my (current users) entries
2. /activitystreams/@public/@all
List public stream entries
3. /activitystreams/@me/@actions
List my actionable events
4. /activitystreams/@me/@saved/blogs
List my saved events from blogs
5. /@me/@all/@all/
urn:lsid:lconn.ibm.com:activitystreams.story:bdb562f…
Work with entry from my stream based on ID
* All URLs above start with
https://<host>/connections/opensocial/<auth>/rest
Also used
when creating
new entries
(e.g. POSTing)
18. Other
Programming
Interfaces
• SPIs
are
lower-‐level
programming
interfaces
which
may
be
subject
to
modifica<on
from
release
to
release.
• Event
SPI
– The
IBM
Connec=ons
Event
SPI
allows
third
par=es
to
consume
event
data
generated
by
IBM
Connec=ons.
• Seedlist
SPI
– Use
the
Seedlist
service
provider
interface
(SPI)
provided
with
IBM
Connec=ons
to
integrate
your
search
engine
with
IBM
Connec=ons
content.
• Service
SPI
– You
can
use
the
IBM
Connec=ons
Service
SPI
to
learn
about
the
applica=ons
running
in
your
IBM
Connec=ons
deployment.
• User
SPI
– You
can
use
the
IBM
Connec=ons
User
SPIs
to
access
informa=on
about
the
users
in
your
IBM
Connec=ons
deployment.
20. Event
Handlers
–
implementa=on
import com.ibm.connections.spi.events.EventHandler
public class MyEventHandler implements EventHandler {
public void init() throws EventHandlerInitException {}
public void destroy() {}
public void handleEvent(Event event) throws EventHandlerException {
String eventName = event.getName(); // event name
Person actor = event.getActor(); // person that triggered event
// look at the event name
if (event.getName().equals("profiles.person.photo.updated")) {
// a profile photo was updated
this.doEventProfilesPhotoUpdated(event);
} else if (event.getName().equals("profiles.updated")) {
// a profile was updated
this.doEventProfilesUpdated(event);
}
}
}
21. Event
Handlers
–
summary
• Make
event
handlers
asynchroneous
• What
happens
if
your
event
handler
fail?
• What
happens
if
the
recipient
of
the
event
(3rd
party
API)
fail?
• Be
defensive
–
consider
what
happens
if
events
are
lost
22. Thank
you
• Presenta=ons
on
slideshare.net
–
this
one
is
coming
• Contact
me
–
ojen
=mes
more
than
willing
to
help
–
I’ll
let
you
know
when
it’s
a
project
J
Mikkel
Flindt
Heisterberg
TwiNer:
@lekkim
E-‐mail:
mS@intravision.dk
hNp://lekkimworld.com
hNp://slideshare.net/lekkim