Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flexible Messaging #23

Merged
merged 4 commits into from
Dec 6, 2016
Merged

Flexible Messaging #23

merged 4 commits into from
Dec 6, 2016

Conversation

xla
Copy link
Member

@xla xla commented Nov 28, 2016

Flexible Messaging

In its first inception SIMS (Signal informed Messaging Service) showed some significant weaknesses. With the biggest one being, due to sending unfiltered notifications for every transaction, a quick developing fatigue for the user up to outright annoyance and/or perceiving the messages as spam. On the other hand is the generic content in the messages themselves decreasing the relevance and usually fall apart quickly in specialised applications.

We've proven that the system is capable of reacting to changes in apps in a responsive manner so that we now need to address the quality of notifications. In order to do this we going to overhaul the pipeline of how changes are consumed in SIMS and introduce a couple of new concepts along the way. The goal is to empower the operator with little effort to create quality notifications.

At the heart of the new pipeline will be rules and templates. Where rules are the configuration based on the input e.g (a new Post which has the article tag). After creation of such rule it can be associated with a template which can make use of variables provided (e.g. recipient.Username).

Components

Some house-keeping has to be done as we haven't followed through with some of the concepts required. Up until now we hard-coded the mappings of platform information to internal understanding of an App. As we use SNS there is quite some management going on and we need to put that information (certs, endpoint, schema) in a persistent place that can be managed without code deploys or issuing SQL statements.

Pipeline

  • rule: Determines if and who message should be send to based on configurable criteria and what the message content looks like.
  • criteria: Old and new entity information which can be used in conditions.
  • recipient: Users which stand in relation to the entity (e.g. owner of a post).
  • template: Interpolate string which has a set of variables to work with and is created per recipient and language.
  • var: Piece of information that can be used in templates for personalisation.

Platform

Is the representation of an AWS Platform Application and is used to track important information and alleviate the need for direct interaction with SNS.

// Platform supported for a Device.
const (
	IOSSandbox Ecosystem = iota + 1
	IOS
	Android
)

// Ecosystem of a device.
type Ecosystem uint8

// Platform represents an ecosystem like Android or iOS.
type Platform struct {
	Active    bool
	ARN       string
	Ecosystem Ecosystem
	Scheme    string
}

Tasks

  • Implement Platform
  • Implement Rules
  • Update SIMS

@xla xla self-assigned this Nov 28, 2016
@xla xla added the draft label Nov 30, 2016
@xla xla changed the title [DRAFT] Flexible Messaging Flexible Messaging Nov 30, 2016
@xla xla force-pushed the flexible-messaging branch from 716815c to 424d96e Compare December 2, 2016 08:28
Alexander Simmerl and others added 2 commits December 2, 2016 15:51
Which are used as the book-keeping glue between Apps and the SNS entity
used for notification routing.

* implement platform service
* implement platform create handler (not mounted)
* implement platform create and fetch by ARN or active per app
* add first centralised errors
Implement Application Platforms
@xla xla force-pushed the flexible-messaging branch from 3b9b87c to 338a1c1 Compare December 5, 2016 19:03
@xla xla removed the draft label Dec 6, 2016
@xla xla force-pushed the flexible-messaging branch from da3dbee to 9e323fd Compare December 6, 2016 17:54
In its first inception SIMS (Signal informed Messaging Service) showed some
significant weaknesses. With the biggest one being, due to sending unfiltered
notifications for every transaction, a quick developing fatigue for the user up
to outright annoyance and/or perceiving the messages as spam. On the other hand
is the generic content in the messages themselves decreasing the relevance and
usually fall apart quickly in specialised applications.

We've proven that the system is capable of reacting to changes in apps in
a responsive manner so that we now need to address the quality of
notifications. In order to do this we going to overhaul the pipeline of how
changes are consumed in SIMS and introduce a couple of new concepts along the
way. The goal is to empower the operator with little effort to create quality
notifications.

At the heart of the new pipeline will be rules and templates. Where rules are
the configuration based on the input e.g (a new `Post` which has the `article`
tag). After creation of such rule it can be associated with a template which
can make use of variables provided (e.g. `recipient.Username`).

Some house-keeping has to be done as we haven't followed through with some of
the concepts required. Up until now we hard-coded the mappings of platform
information to internal understanding of an App. As we use `SNS` there is quite
some management going on and we need to put that information (certs, endpoint,
schema) in a persistent place that can be managed without code deploys or
issuing `SQL` statements.

* add rule abstraction and service
* add pipeline abstraction
* integrate in SIMS
@xla xla force-pushed the flexible-messaging branch from 9e323fd to af72407 Compare December 6, 2016 18:04
@xla xla merged commit b33afdb into master Dec 6, 2016
@xla xla deleted the flexible-messaging branch December 6, 2016 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants