Integrating with Confluence Notifications and Tasks (aka, WorkBox), AtlasCamp US 2012
Post on 17-May-2015
2002 Views
Preview:
DESCRIPTION
Transcript
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
Code ExamplesCode from the talk
https://bitbucket.org/shamid/mywork-ril
https://bitbucket.org/shamid/mywork-tweets
Other code examples
https://bitbucket.org/cofarrell/mywork-example
https://bitbucket.org/sherif/workday-chrome-extension
https://bitbucket.org/samtardif/workbox-cli
top related