際際滷

際際滷Share a Scribd company logo
Getting into WorkBox
Integrating with 鰻看岳庄鍖c温岳庄看稼壊 & 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 noti鍖cations now in-app
Think of cool integrations on top of WorkBox
Example 1


Time for a Quickie
Example 1


Time for a Quickie
Example 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 button
Check were on a page
Example 1


Create a button
Check were on a page




Add the it to the right spot
Example 1


Create a task
Example 1


Create a task
Example 1


Create a task
Example 1


Create a task
Example 1


Create a task
Example 1


Create a task
Example 1


Make it better!


 Detect whether a page has a task
Tasks API
       REST             Java

   /mywork/1/task    TaskService

        GET              鍖nd

       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?
Example 2


Invite your users to try
Example 2


Invite your users to try
 Plugins start with a PluginEnabledEvent
Example 2


Invite your users to try
 Plugins start with a PluginEnabledEvent


 Notify your users of your cool plugin
Example 2


Invite your users to try
Example 2


Invite your users to try
 You will spam users
Example 2


Invite your users to try
 You will spam users
   when any plugin is enabled
Example 2


Invite your users to try
 You will spam users
   when any plugin is enabled
   every time your plugin is enabled
Example 2


Invite your users to try
 You will spam users
   when any plugin is enabled
   every time your plugin is enabled
 Your noti鍖cations wont be crash hot
Example 2


Spicing up your noti鍖cation
Example 2


Spicing up your noti鍖cation
Example 2


Spicing up your noti鍖cation
Your users are an asset
 In-App 鰻看岳庄鍖c温岳庄看稼壊 are a powerful way of getting
 the attention of your users
 Spamming them wont make you more money
What is a 鰻看岳庄鍖c温岳庄看稼?
What is a 鰻看岳庄鍖c温岳庄看稼?

                         title
  icon



aggregation
                     read/unread
What is a 鰻看岳庄鍖c温岳庄看稼?
               item:title    aggregation




 action:icon
      avatar

                      description          action
What is a 鰻看岳庄鍖c温岳庄看稼?
             item actions

                              taskify




                            entry actions
What is a 鰻看岳庄鍖c温岳庄看稼?


 A noti鍖cation is an instance of an action on an item
   item = page, issue, blog post
   action = share, comment, mention, like
Taking a noti鍖cation apart
Taking a noti鍖cation apart
Taking a noti鍖cation apart
Taking a noti鍖cation apart

  En#ty(                                Page(




  Ac#on(     Like(           Comment(            Share(   Men#on(



                      Jonathan(        Alice(
No#鍖ca#on(           commented(
                       on(Page(
                                    commented(
                                      on(Page(
Taking a noti鍖cation apart

  En#ty(                                Page(




  Ac#on(     Like(           Comment(            Share(   Men#on(



                      Jonathan(        Alice(
No#鍖ca#on(           commented(
                       on(Page(
                                    commented(
                                      on(Page(
Taking a noti鍖cation apart

  En#ty(                                Page(




  Ac#on(     Like(           Comment(            Share(   Men#on(



                      Jonathan(        Alice(
No#鍖ca#on(           commented(
                       on(Page(
                                    commented(
                                      on(Page(
Example 3


One Last Example
Example 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
Lets put them in WorkBox!
Example 3


The System
                              I <3 the
                          NewShinyFeature
                           yoso goood!




           Twitter
                       Twitter
          Listener


                                            Twitter User

        Noti鍖cation
         Service




      Marketing Team
Example 3


The System
                              I <3 the
                          NewShinyFeature
                           yoso goood!




           Twitter
                       Twitter
          Listener


                                            Twitter User

        Noti鍖cation
         Service




      Marketing Team
Example 3


Getting Tweets
Example 3


Getting Tweets
Con鍖gure the client to track marketings key words
Example 3


Getting Tweets
Con鍖gure the client to track marketings key words




Ping the marketing team when a new tweet matches
Example 3


Getting Tweets
Con鍖gure the client to track marketings key words




Ping the marketing team when a new tweet matches
Example 3


Tweets as 鰻看岳庄鍖c温岳庄看稼壊
Our marketing team only cares about tweets and
retweets mentioning a certain key word
Example 3


Tweets as 鰻看岳庄鍖c温岳庄看稼壊
Our marketing team only cares about tweets and
retweets mentioning a certain key word


        En#ty(                  Tweet(



                                    Post(
        Ac#on(                (Tweet/RT)(



                     Bob(tweeted(           Jenny(RT(
      No#鍖ca#on(        BLAH!(               BLAH!(
Example 3


Aggregating Tweets
We want RTs to aggregate with the original tweets
Example 3


Aggregating Tweets
We want RTs to aggregate with the original tweets
Example 3


Aggregating Tweets
Register i18n and use global IDs
Example 3


Aggregating Tweets
Register i18n and use global IDs
Example 3


Aggregating Tweets
Register i18n and use global IDs
Example 3


Noti鍖cation Actions


 We want our marketing team to be able to quickly
   Reply to negative tweets
   RT happy experiences
Example 3


Noti鍖cation Actions
 Register the actions you want to appear at the item
 and noti鍖cation instance level
Example 3


Noti鍖cation Actions
 Register the actions you want to appear at the item
 and noti鍖cation instance level
Example 3


Noti鍖cation Actions
 Register the actions you want to appear at the item
 and noti鍖cation instance level
Example 3


Noti鍖cation Actions
Example 3


Noti鍖cation Actions
Example 3


Noti鍖cation Actions
Example 3


Noti鍖cation Actions
Example 3


Noti鍖cation Actions
Example 3


Social Media Monitoring
Example 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

            En#ty(              Wall(Post(




           Ac#on(              Comment(



                          Alice(            Bob(
         No#鍖ca#on(    commented(       commented(
                         Cool!(       I(hate(this(
Example 3


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

            En#ty(              Wall(Post(




           Ac#on(              Comment(



                          Alice(            Bob(
         No#鍖ca#on(    commented(       commented(
                         Cool!(       I(hate(this(
Example 3


Make it even better!
 鰻看岳庄鍖c温岳庄看稼壊 and Tasks can store arbitrary metadata
Example 3


Make it even better!
 鰻看岳庄鍖c温岳庄看稼壊 and Tasks can store arbitrary metadata
Example 3


Make it even better!
 鰻看岳庄鍖c温岳庄看稼壊 and Tasks have an Event API
Example 3


Make it even better!
 鰻看岳庄鍖c温岳庄看稼壊 and Tasks have an Event API
Example 3


Make it even better!
 鰻看岳庄鍖c温岳庄看稼壊 and Tasks have an Event API
Example 3


Make it even better!
 鰻看岳庄鍖c温岳庄看稼壊 and Tasks have an Event API




                                            Urgent tweet
When to use 鰻看岳庄鍖c温岳庄看稼壊
When to use 鰻看岳庄鍖c温岳庄看稼壊

Inform your users of a change that directly affects them
When to use 鰻看岳庄鍖c温岳庄看稼壊

Inform your users of a change that directly affects them
Move email noti鍖cations to in-app
When to use 鰻看岳庄鍖c温岳庄看稼壊

Inform your users of a change that directly affects them
Move email noti鍖cations to in-app
When there are quick actions users can take
When to use 鰻看岳庄鍖c温岳庄看稼壊

Inform your users of a change that directly affects them
Move email noti鍖cations to in-app
When there are quick actions users can take
Be aware that users can create tasks from noti鍖cations
When to use 鰻看岳庄鍖c温岳庄看稼壊

Inform your users of a change that directly affects them
Move email noti鍖cations to in-app
When there are quick actions users can take
Be aware that users can create tasks from noti鍖cations
鰻看岳庄鍖c温岳庄看稼壊 are transient
Whats coming up?

In WorkBox 1.1
  JIRA Integration
  Remote Java APIs
  AppLinks: Trusted Apps & OAuth
  Better Android compatibility
Get your hack on!
Bamboo

         En#ty(            Build(Plan(



                             Build(
         Ac#on(            Execu#on(


                  Alice(broke(      Bob(Fixed(
    No#鍖ca#on(     the(build(       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
Its your turn!
Further Reading
API Documentation

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

  http://docs.atlassian.com/mywork-con鍖uence-host-plugin/
  REST/1.0.2/

Tutorials

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

  https://developer.atlassian.com/display/CONFDEV/Posting
  +鰻看岳庄鍖c温岳庄看稼壊+in+Con鍖uence
Code Examples
Code 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

More Related Content

Getting into WorkBox - AtlasCamp 2012