canmove, Confirmed users
1,173
edits
m (→Overview) |
m (Telliott moved page Services/Notifications/Specification to CloudServices/Notifications/Specification) |
||
(11 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
== Engineers Involved == | == Engineers Involved == | ||
* Alex Amariutei | * Alex Amariutei | ||
* Shane da Silva | * Shane da Silva | ||
* Toby Elliott | |||
* Philipp von Weitershausen | |||
== Terminology == | == Terminology == | ||
* '''Notification''': A message intended to alert its recipient to some event or occurrence. | |||
* '''Provider''': A notification provider, or '''web app''', is any web service that is capable of sending notifications. | * '''Provider''': A notification provider, or '''web app''', is any web service that is capable of sending notifications. | ||
* '''User''': End-user; someone who receives notifications. | * '''User''': End-user; someone who receives notifications. | ||
Line 17: | Line 18: | ||
= Requirements = | = Requirements = | ||
The following section outlines the requirements of the service with respect to the user, | The following section outlines the requirements of the service with respect to the user, third-party developers (a special type of user) who will have to interact with the system. It also outlines the requirements of the system itself. | ||
== User Requirements == | == User Requirements == | ||
Line 28: | Line 29: | ||
* '''Portability''': Service ''MUST'' work with any device that supports the protocol. | * '''Portability''': Service ''MUST'' work with any device that supports the protocol. | ||
== Developer Requirements == | == Developer Requirements == | ||
Line 43: | Line 40: | ||
This section outlines the use cases of the service from both the user's and web app's point of view. | This section outlines the use cases of the service from both the user's and web app's point of view. | ||
== | == Users == | ||
=== Register with Notifications Service === | === Register with Notifications Service === | ||
Line 56: | Line 53: | ||
If the user has already registered with the notification service, then they can add an additional client to receive notifications. See the list of related use cases below. | If the user has already registered with the notification service, then they can add an additional client to receive notifications. See the list of related use cases below. | ||
'''Related Use Cases''': [[# | '''Related Use Cases''': [[#Add a New Client|Add a New Client]] | ||
=== Subscribe to Notifications === | === Subscribe to Notifications === | ||
Line 62: | Line 59: | ||
Once set up the user will the be able to subscribe to web sites which they wish to receive push notification from. The process is as follows: | Once set up the user will the be able to subscribe to web sites which they wish to receive push notification from. The process is as follows: | ||
# User clicks a button | # User clicks a button or otherwise interacts with a web page such that the page requests to send notifications. | ||
# Client displays a confirmation box asking user if they wish to receive notifications from the web page in question. | # Client displays a confirmation box asking user if they wish to receive notifications from the web page in question. | ||
# Upon confirmation, a new subscription is created and can be viewed in the client's list of subscriptions. | # Upon confirmation, a new subscription is created and can be viewed in the client's list of subscriptions. | ||
Line 77: | Line 74: | ||
'''Related Use Cases''': [[#Subscribe to Notifications|Subscribe to Notifications]] | '''Related Use Cases''': [[#Subscribe to Notifications|Subscribe to Notifications]] | ||
=== | === Add a New Client === | ||
One of the main advantages of the service is it allows users to receive notifications on multiple clients, be it their browser, mobile phone, etc. Thus setting up another client to receive notifications is likely to be a common operation. The following are two possible methods the user can use to set up an additional client (note: the goal is to have this be virtually identical to Firefox Sync). | One of the main advantages of the service is it allows users to receive notifications on multiple clients, be it their browser, mobile phone, etc. Thus setting up another client to receive notifications is likely to be a common operation. The following are two possible methods the user can use to set up an additional client (note: the goal is to have this be virtually identical to Firefox Sync). | ||
Line 99: | Line 96: | ||
'''Related Use Cases''': [[#Register with Notifications Service|Register with Notifications Service]] | '''Related Use Cases''': [[#Register with Notifications Service|Register with Notifications Service]] | ||
== | == Providers == | ||
=== Send a Notification === | === Send a Notification === | ||
The web app is able to send a message (i.e. the notification) to a specific user using a '''routing key''' that was given to it by the user's client. The routing key can be thought of as an address that specifies the destination "mailbox" of the message. The process from the point of view | The web app is able to send a message (i.e. the notification) to a specific user using a '''routing key''' that was given to it by the user's client. The routing key can be thought of as an address that specifies the destination "mailbox" of the message. It maintains the user's anonymity while still allowing the service to communicate with the user. The process from the web app's point of view is as follows: | ||
# Web app creates a | # Web app creates a message it wishes to send | ||
# Web app sends the | # Web app sends the message to the notification server. | ||
= Implementation = | = Implementation = | ||
Line 130: | Line 127: | ||
* '''Subscription''': Represents the relationship between a web app and a user who wishes to receive notifications from said web app. A subscription consists of the "link" that allows the web app to send notifications to the user. | * '''Subscription''': Represents the relationship between a web app and a user who wishes to receive notifications from said web app. A subscription consists of the "link" that allows the web app to send notifications to the user. | ||
* '''Routing Key/Token''': A unique identifier generated by the Agent when a user subscribes to notifications from a web app. The routing key is used as a "mailbox address" | * '''Routing Key/Token''': A unique identifier generated by the Agent when a user subscribes to notifications from a web app. The routing key is used as a "mailbox address" to send notifications to the user. | ||
* '''User Exchange''': Entity within the message broker where all messages destined for a particular user are sent. | * '''User Exchange''': Entity within the message broker where all messages destined for a particular user are sent. | ||
Line 161: | Line 158: | ||
* What features will we provide for administrators of the server? | * What features will we provide for administrators of the server? | ||