Integrating with Confluence Notifications and Tasks (aka, WorkBox), AtlasCamp US 2012

Post on 17-May-2015

2.001 views 3 download

Tags:

description

Shihab Hamid, Integration Dev Team Lead With Confluence 4.3 introduced an amazing new feature – Tasks and Notifications. Plugin developers can take advantage of both to offer richer experiences. This talk will show you how.

Transcript of Integrating with Confluence Notifications and Tasks (aka, WorkBox), AtlasCamp US 2012

Getting into WorkBoxIntegrating with Notifications & Tasks

@shihabhamid

Why WorkBox?

@me

WorkBox Features

WorkBox Features

WorkBox Features

..all available on the go

Why should you care?

Get your plugin noticed

Email notifications now in-app

Think of cool integrations on top of WorkBox

Time for a QuickieExample 1

Time for a QuickieExample 1

SpeakEasy

Greasemonkey for your instance

Prototype your plugins fast

Example 1

SpeakEasy

Greasemonkey for your instance

Prototype your plugins fast

Example 1

Create a buttonCheck we’re on a page

Example 1

Create a buttonCheck we’re on a page

Example 1

Add the it to the right spot

Create a taskExample 1

Create a taskExample 1

Create a taskExample 1

Create a taskExample 1

Create a taskExample 1

Create a taskExample 1

Make it better!

Detect whether a page has a task

Example 1

Tasks APIREST Java

/mywork/1/task TaskService

GET find

POST createOrUpdate

PUT createOrUpdate

DELETE delete

When to use tasks?

When to use tasks?

Tasks are designed to be light-weight and personal

When to use tasks?

Tasks are designed to be light-weight and personal

Tasks only have the concept of complete/incomplete

When to use tasks?

Tasks are designed to be light-weight and personal

Tasks only have the concept of complete/incomplete

Tasks allow users to make their own notes

When to use tasks?

Tasks are designed to be light-weight and personal

Tasks only have the concept of complete/incomplete

Tasks allow users to make their own notes

Users can prioritise their tasks

When to use tasks?

Tasks are designed to be light-weight and personal

Tasks only have the concept of complete/incomplete

Tasks allow users to make their own notes

Users can prioritise their tasks

Tasks can be used as pointers to things that need to get done

What next?

What next?

Prototyped the plugin in SpeakEasy

What next?

Prototyped the plugin in SpeakEasy

Converted it to a <web resource/> plugin

What next?

Prototyped the plugin in SpeakEasy

Converted it to a <web resource/> plugin

Do your users know about your cool plugin?

Invite your users to tryExample 2

Invite your users to tryPlugins start with a PluginEnabledEvent

Example 2

Invite your users to tryPlugins start with a PluginEnabledEvent

Example 2

Notify your users of your cool plugin

Invite your users to tryExample 2

Invite your users to tryYou will spam users

Example 2

Invite your users to tryYou will spam users

when any plugin is enabled

Example 2

Invite your users to tryYou will spam users

when any plugin is enabled

every time your plugin is enabled

Example 2

Invite your users to tryYou will spam users

when any plugin is enabled

every time your plugin is enabled

Your notifications won’t be crash hot

Example 2

Spicing up your notificationExample 2

Spicing up your notificationExample 2

Spicing up your notificationExample 2

Your users are an assetIn-App Notifications are a powerful way of getting the attention of your users

Spamming them won’t make you more money

What is a Notification?

What is a Notification?

titleicon

aggregation read/unread

What is a Notification?item:title

action:iconavatar

description action

aggregation

What is a Notification?

entry actions

item actions

taskify

What is a Notification?

A notification is an instance of an action on an item

item = page, issue, blog post

action = share, comment, mention, like

Taking a notification apart

Taking a notification apart

Taking a notification apart

Taking a notification apart

No#fica#on(

Ac#on(

En#ty( Page(

Like( Comment(

Jonathan(commented(on(Page(

Alice(commented(on(Page(

Share( Men#on(

Taking a notification apart

No#fica#on(

Ac#on(

En#ty( Page(

Like( Comment(

Jonathan(commented(on(Page(

Alice(commented(on(Page(

Share( Men#on(

Taking a notification apart

No#fica#on(

Ac#on(

En#ty( Page(

Like( Comment(

Jonathan(commented(on(Page(

Alice(commented(on(Page(

Share( Men#on(

One Last ExampleExample 3

One Last Example

Marketing team wants to monitor and react to tweets

Example 3

One Last Example

Marketing team wants to monitor and react to tweets

Let’s put them in WorkBox!

Example 3

The System

TwitterTwitterListener

NotificationService

I <3 the NewShinyFeature

yo…so goood!

Marketing Team

Twitter User

Example 3

The System

TwitterTwitterListener

NotificationService

I <3 the NewShinyFeature

yo…so goood!

Marketing Team

Twitter User

Example 3

Getting TweetsExample 3

Getting TweetsConfigure the client to track marketing’s key words

Example 3

Getting TweetsConfigure the client to track marketing’s key words

Example 3

Ping the marketing team when a new tweet matches

Getting TweetsConfigure the client to track marketing’s key words

Example 3

Ping the marketing team when a new tweet matches

Tweets as NotificationsOur marketing team only cares about tweets and retweets mentioning a certain key word

Example 3

Tweets as NotificationsOur marketing team only cares about tweets and retweets mentioning a certain key word

No#fica#on(

Ac#on(

En#ty( Tweet(

Post((Tweet/RT)(

Bob(tweeted(BLAH!(

Jenny(RT(BLAH!(

Example 3

Aggregating TweetsWe want RTs to aggregate with the original tweets

Example 3

Aggregating TweetsWe want RTs to aggregate with the original tweets

Example 3

Aggregating TweetsRegister i18n and use global IDs

Example 3

Aggregating TweetsRegister i18n and use global IDs

Example 3

Aggregating TweetsRegister i18n and use global IDs

Example 3

Notification Actions

We want our marketing team to be able to quickly

Reply to negative tweets

RT happy experiences

Example 3

Notification ActionsRegister the actions you want to appear at the item and notification instance level

Example 3

Notification ActionsRegister the actions you want to appear at the item and notification instance level

Example 3

Notification ActionsRegister the actions you want to appear at the item and notification instance level

Example 3

Notification ActionsExample 3

Notification ActionsExample 3

Notification ActionsExample 3

Notification ActionsExample 3

Notification ActionsExample 3

Social Media MonitoringExample 3

Make it better!We could add in social media monitoring support on Facebook fan pages

Example 3

Make it better!We could add in social media monitoring support on Facebook fan pages

No#fica#on(

Ac#on(

En#ty( Wall(Post(

Comment(

Alice(commented(“Cool!”(

Bob(commented(“I(hate(this”(

Example 3

Make it better!We could add in social media monitoring support on Facebook fan pages

No#fica#on(

Ac#on(

En#ty( Wall(Post(

Comment(

Alice(commented(“Cool!”(

Bob(commented(“I(hate(this”(

Example 3

Make it even better!Notifications and Tasks can store arbitrary metadata

Example 3

Make it even better!Notifications and Tasks can store arbitrary metadata

Example 3

Make it even better!Notifications and Tasks have an Event API

Example 3

Make it even better!Notifications and Tasks have an Event API

Example 3

Make it even better!Notifications and Tasks have an Event API

Example 3

Make it even better!Notifications and Tasks have an Event API

Urgent tweet

Example 3

When to use Notifications

When to use Notifications

Inform your users of a change that directly affects them

When to use Notifications

Inform your users of a change that directly affects them

Move email notifications to in-app

When to use Notifications

Inform your users of a change that directly affects them

Move email notifications to in-app

When there are quick actions users can take

When to use Notifications

Inform your users of a change that directly affects them

Move email notifications to in-app

When there are quick actions users can take

Be aware that users can create tasks from notifications

When to use Notifications

Inform your users of a change that directly affects them

Move email notifications to in-app

When there are quick actions users can take

Be aware that users can create tasks from notifications

Notifications are transient

What’s coming up?

In WorkBox 1.1

JIRA Integration

Remote Java APIs

AppLinks: Trusted Apps & OAuth

Better Android compatibility

Get your hack on!Bamboo

No#fica#on(

Ac#on(

En#ty( Build(Plan(

Build(Execu#on(

Alice(broke(the(build(

Bob(Fixed(the(build(

Get your hack on!WorkBox Chrome Extension and Native App

Get your hack on!WorkBox CLI for tasks

Get your hack on!WorkBox CLI for tasks

It’s your turn!

Further ReadingAPI Documentation

http://docs.atlassian.com/mywork-api/1.0.2/

http://docs.atlassian.com/mywork-confluence-host-plugin/REST/1.0.2/

Tutorials

https://developer.atlassian.com/display/CONFDEV/Working+with+the+Tasks+REST+API+in+Confluence

https://developer.atlassian.com/display/CONFDEV/Posting+Notifications+in+Confluence