Giter Club home page Giter Club logo

remindem's Introduction

Remindem

Build Status

Remindem is a free and easy-to-use tool that allows you to set up a list of tips, reminders, and advice that people can subscribe to via text messages. Remindem sends important text reminders just when your subscribers need them, based on a schedule you define.

Setup

Remindem is a standard Ruby on Rails application, which uses MySQL as a database engine.

Nuntium

Nuntium settings are stored under config/nuntium.yml. A template of the settings file is provided in config/nuntium-sample.yml. Rename (or copy) this file to 'nuntium.yml' and fill with your configuration. Settings are:

url: host http://nuntium.instedd.org
account: nuntium account name
application: nuntium application name
password: nuntium application password
incoming_username: http interface user
incoming_password: http interface password

At nuntium the application should be configured with HTTP POST interface, url http://<HOST_AND_PORT>/receive_at and user/password as specified in the incoming_username/incoming_password settings.

Guisso

Remindem can use Guisso (Guisso unveils Instedd's Single Sign On) for managing user accounts. This is configured via a config/guisso.yml file, which can be generated from the Guisso's instance to be used; or refer to guisso.yml.template for an example.

Hub

Remindem posts notifications of new subscribers and provides access to external actions in InSTEDD Hub using Hub Client. To configure the client, add a config/hub.yml file with the following contents:

enabled: true                   # Set to false to disable and not send notifications
url: http://hub-stg.instedd.org # URL to the hub instance to be used
connector_guid: CONNECTOR_GUID  # GUID of the Remindem connector in the hub
token: SECRET_TOKEN             # Secret token used to report notifications

Emails

It is required to setup the action mailer and config.action_mailer.default_url_options in order to properly send emails.

Delayed jobs

Run delayed jobs via rake jobs:work.

Development

Docker development

docker-compose.yml file build a development environment mounting the current folder and running rails in development environment.

You can have a stable development environment by running the ./dev-setup script.

To setup and run test, once the web container is running:

$ docker compose exec web rake

remindem's People

Contributors

macoca avatar bcardiff avatar spalladino avatar waj avatar gdaniele avatar juanedi avatar pbrusco avatar matiasgarciaisaia avatar ggiraldez avatar

Stargazers

Ronald Munjoma avatar

Watchers

Julien Portalier avatar Bolo Michelin avatar Ismael Bejarano avatar Johannes Müller avatar  avatar Franciscello avatar Quinton Miller avatar  avatar Beta Ziliani avatar Maria  avatar  avatar Carlos Zillner avatar  avatar

remindem's Issues

Subscriber phone cannot be inserted into Google Spreadsheet

Found in version: 1.6.2

Preconditions:
There is Google Spreadsheet 'Foo'
The Google Spreadsheet 'Foo' contains a Sheet 'Bar'

Steps:
Go to create a Reminder
Press the button '+' to add a new message
Choose 'External Action'
Select Spreadsheet 'Foo'
Choose the Sheet 'Bar'
Select 'Insert' action
Press the Select button

Obtained:
-The loading spinner is not hidden and the following JS Error is thrown:
Uncaught ReferenceError: new_el is not defined
renderForm
(anonymous function)
e._performPromise
(anonymous function)
K.Callbacks.f
K.Callbacks.d.fireWith
r
K.support.ajax.K.ajaxTransport.send.r

Expected:
-The 'External Action' should be added
-Remindem should be saved
-Subscriber phone should be inserted into Google Spreadsheet

screen shot 2015-03-11 at 5 08 41 pm

Don't clear the message box after validation error

Found in version 1.6.2

Steps:
Go to create a new Reminder
Don't fill the Title field
Add an External Action
Save the External Action
Press the button to save the form

Obtained:
The External Action is removed and you have to select a new Externa Action

Expected:
The External Action is not removed after validation error

Additional info:
This happens using External Actions and messages

Reminders cannot be removed

Found in Version 1.6.2

Preconditions:
There is a Reminder 'Foo Bar'

Steps:
Go to the Reminders listing
Open the Reminder 'Foo Bar'
Press the icon to remove the Reminder 'Foo Bar'
Confirm the action

Obtained:
Nothing happens. The Reminder is not removed.

Expected:
The Reminder should be removed

Phone numbers are exposed with protocol

Found in version: 1.6.2

Preconditions:
There is a Reminder 'Foo'
The reminder includes some External Action
The External Action inserts the phone number into the Application (Verboice was used in this test)

Steps:
Add a new subscriber to the reminder 'Foo'
Go to the other App (Verboice phone book in this test)

Obtained:
The subscriber phone number was send including the protocol prefix 'sms:// '

Expected:
Phone numbers should be exposed without protocol to be used by another App

Additional information:
Phone numbers exposed without protocol via API

screen shot 2015-03-13 at 1 15 55 pm

Subscriber phone cannot be inserted into Pollit

Found in version: 1.6.2
Pollit version 4b841128a9dac5d66b26b99f0f0de05a452b651d

Preconditions:
There is Poll 'Foo' (Pollit)

Steps:
Go to create a Reminder
Press the button '+' to add a new message
Choose 'External Action'
Select Pollit connector
Choose the Poll 'Foo'
Select the 'Respondents' option
Press the Select button

Obtained:
-The loading spinner is not hidden
-The properties are not shown

screen shot 2015-03-13 at 1 27 51 pm

screen shot 2015-03-13 at 1 28 36 pm

Expose phone numbers without protocol and plus sign

When exposing phone numbers via API (for entity sets and events), return them without protocol prefix sms:// and without the plus sign for international calls.

If phone numbers are received via an action, accept them with or without protocol prefix and add it before processing them.

See also instedd/pollit#23

'New subscriber' as an event in Hub not executing any action

Found in version 1.6.2
(Hub version 1a700c0)

Preconditions:
User has an enabled reminder in Remindem and an external trigger set with Oauth in mBuilder.

  1. Go to Hub and navigate to Tasks
  2. Create a task
    • Add 'new subscriber' in Remindem as the event
    • Add 'trigger' an external trigger as the action
  3. Make a POST to Remindem with Basic Auth to create a new subscriber through the API (e.g: http://remindem-stg.instedd.org/api/reminders/1/subscribers.json?phone_number=111111)

Obtained: the subscriber is added in the reminder but the external trigger isn't executed. Hub's log does not show any change after the event was reproduced.
NOTE: this happens also when the action is from another connector.

Expected: the external trigger is executed successfully through hub.

Reminders cannot filtered properly

Found in version 1.6.2

Preconditions:
There are at least two channels ('Channel A' and 'Channel B')
The 'Channel A' is running
The 'Channel B' is paused

Steps:
Go to the Reminders listing
Select 'Paused'. Only the 'Channel B' is shown in the Reminders listing.
Select 'Running'.

Obtained:
The Reminders listing is empty

Expected:
Only the 'Channel A' should be shown in the Reminders listing.

screen shot 2015-03-04 at 2 27 59 pm

screen shot 2015-03-04 at 2 28 10 pm

Internal server error in -stg when creating a new reminder

Error is:

ActionView::Template::Error (schedules.js isn't precompiled):
    1: - content_for :head do
    2:   = javascript_include_tag 'schedules'
    3: = form_for @schedule, :validate => true do |f|
    4:   = errors_for @schedule, :as => :reminder
    5:   .field.w60
  app/views/schedules/_form.html.haml:2:in `block in _app_views_schedules__form_html_haml___676066428_84973050'
  app/views/schedules/_form.html.haml:1:in `_app_views_schedules__form_html_haml___676066428_84973050'
  app/views/schedules/new.html.haml:2:in `_app_views_schedules_new_html_haml__427505055_84953680'
  app/controllers/schedules_controller.rb:58:in `new'

Subscribers cannot be removed

Found in version 1.6.2

Preconditions:
There is a Reminder 'Foo'
The Reminder 'Foo' has a Subscriber '12345'

Steps:
Go to the Subscribers listing of the Reminder 'Foo'
Press the icon to remove the Subscriber '12345'

Obtained:
A '404 Not found page' is shown (http://remindem-stg.instedd.org/en/reminders/34/subscribers/136)

Expected:
The Subscriber should be removed

Additional information:
After pausing the Reminder the Subscriber cannot be removed

screen shot 2015-03-04 at 12 14 30 pm

Channels cannot be removed

Found in Version 1.6.2

Preconditions:
There is a Channel '1234' activated

Steps:
Go to the Reminders listing
Press the icon to remove the Channel '1234'

Obtained:
'404 Not found' page is shown

Expected:
The Channel should be removed

Review condition to deliver a message to subscriptor

Currently, a message is delivered only if the time is within 2hs of the time when the subscriptor sent the "subscribe" message to remindem. This does not make sense for minute or hour based schedules. Should we keep this condition?

External action step

  • transform the plus button to add messages to a dropdown. Keep the default to "add message". Add a new option with "external action"
  • display the hub action selector
  • show a dropdown next to each target parameter with internal fields, for now: subscriber phone_number, days_registered.
  • trigger hub action when the time for that step comes.

Bulk uploading subscribers in a time of day earlier than current time causes reminders to be lost

When bulk subscribing reminders at a time of day earlier than the current time, any reminders that fall between the two points in time are not sent.

Example: given a reminder with a single message that is sent at 1 hour after subscription. At 10:00 GMT, bulk subscribe a user to that reminder with Message time of day of 8:00 GMT. The message will be scheduled for 9:00 GMT, and dropped by Remindem since it should be delivered in the past.

Expected: either schedule the first message to be sent at 9:00 GMT of the following day, or display a warning indicating which messages will be lost.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.