socialappslab / appcivist-platform

Core AppCivist Platform
http://citris-uc.org/social-apps-lab/project/appcivist-2/
Other
5 stars 0 forks source link

Notifications #509

Open cdparra opened 7 years ago

cdparra commented 7 years ago

Summary: implemente a new model of subscriptions management and notification signaling.

Old model: each user had N Subscriptions to specific Events. Each Event was identified by an eventId equal to a UUID (of the campaign, contribution, etc.) + EVENT_NAME (e.g., 3de5a9f3-232d-4527-83b6-c850aeaf7388_NEW_IDEA). Whenever the EVENT_NAME occurred, a Signal was sent with the eventId, title, text, data (in JSON) and a filterBy (service to send the signal too). The signal processing then would find all subscribers of the eventId and send a message to the exchange identified by the alertEndpoint in the subscription.

New Model: store subscriptions to top level entities (campaign, assembly, working group, contribution) and manage, within the subscription, which events are being tracked (new idea, updated idea, etc.). Signals would then work the same, using the eventId but adding a resourceUUID to identify the top level entity. The signal processing would be updated to send the message via rabbitmq to subscribers that have the event enabled for that entity. If a subscription is of type "newsletter", then a newsletter service will process signals for these subscriptions and send periodic aggregated messages.

To implement this new model we need to update the https://github.com/socialappslab/subscription-manager and implement some things in AppCivist too.

ToDo list (to be converted in specific issues)

cdparra commented 7 years ago

@rafaelangarita can you add details about your latest improvements to the social-bus in the comments? Particularly, you mentioned something about having some form of user management and additional services.

cdparra commented 7 years ago

Moreover, I am linking here the original paper on the social bus by @rafaelangarita. I don't think is necessary to read to develop this issue, but just in case.