sms-todo's People
sms-todo's Issues
remove/update twilio-creds.json
Will need to update or remove from GitHub, committed in a1cbe9d
Feature ideas
- add options on reminder to engage user to remind again, complete, or dismiss (e.g. Google Calendar)
- calendar integration
- email integration
- custom NLP / ML engine
- slack integration
- allow others to assign todos to each other
responding w/ "help" returns some default response
Need to identify the source, but guessing this is a Twilio response, the response should be
- create a todo, start a text with 'Remind me to'
- retrieve the list of all your todos, text 'list'
- edit a todo, text 'Edit N' (where N is the todo number)
- delete a todo, text 'Delete N' (where N is the todo number)
- view your settings type 'settings'
don't allow random people to text Woodhouse
- add in condition that ensures only admins can invite new users
- evaluate the vulnerability and openness of the GET call
Unique Pages
For future features (need unique mobile pages, linked via text message > monetization):
- secure credit card information (Venmo / Stripe)?
- ordering pages / checkout?
setup a cron server
- Ran every minute
- Query and Search all todos in DynamoDB, checking date / time
- remind a user on a specific date/time
- remind a user daily up and until that date/time
- send SMS to phone number if match
- delete todos who have an expired date / time
don't know how to add a line break to SMS
Twilio has documentation using their XML, nothing from Plivo. I sent an email to Plivo's support.
SMS response parsing needs to be updated
Ask for date and time if not specified
Provide feedback request points via SMS
deployment issue
Todo, Edit, and Delete path forward
- identify the structure of the todo, current recommendation:
- keywords
- relations (actions)
- taxonomy
- date (optional)
- time (optional)
-
qty (optional) -
importance?
- identify the best way to parse this information (NLP vs tiered questions)
- how to list all todos (requires Query and Search against DynamoDB and indexing)
- figure out how to Edit a todo (using an index of some kind?)
- figure out how to Delete a todo (using an index of some kind?)
NLP API options: (http://www.programmableweb.com/news/how-5-natural-language-processing-apis-stack/analysis/2014/07/28)
limit nginx (aws) access to plivo servers
...otherwise random people can send texts with the api with minimal hacking.
auto-delete todos that have expired
For todos with specific due date/times, auto-delete them (CRON job) when they have expired.
Landing Page
- quick description (svg animation)
- signup for waiting list
- counter
production currently breaks on Time Zone setting
Works fine locally (pinging production DynamoDB)
Stress Test Twilio
multiple dates force next week scenario [impacts EVERY and EVERY OTHER qualifier]
Current weekday: Tuesday
Ex: Monday and Wednesday at 5PM
It'll set Monday and Wednesday for the following week because both weekdays have to be in the future.
Scenarios:
- EVERY: Wednesday's start date should be the next day (not a week + 1 day)
- EVERY OTHER: not sure yet
check to see if a similar todo already exists before saving the todo
Prompt the user to see if they want to merge or cancel?
Background app
- track geo data to send text message notifications
- check phone data to see if you actually call someone
- check email to see if you actually send an email (may not need an app to accomplish this)
- visualization of todos?
expand to all timezones
DynamoDB isn't saving UTC values
When passing UTC values to DynamoDB, they are being removed and not saved as Elements.
params sent:
{ StartDate: Fri May 20 2016 17:00:00 GMT-0400 (EDT),
StopDate: Fri May 20 2016 19:00:00 GMT-0400 (EDT),
Repeat: 'bi-weekly',
DateCreated: Tue May 17 2016 16:27:14 GMT-0400 (EDT),
Input: 'Remind me to take my pills every other Friday from 5 to 7pm',
Phone: '19186918755' }
saved values:
Repeat: 'bi-weekly',
Input: 'some text',
Phone: '19186918755'
Saving the date as ISO works.
NLP issues
- multiple sentences? (validated by nlp.text(TEXT).sentences.length)
- repeat back the todo + reminder format
Date / Time
- make sure dates are always in the future (AND, TO, THROUGH, OR)
- multiple days / reminder times (chrono breaks it into multiple objects)
- Monday AND Friday or Monday, Wednesday, AND Friday
- Wednesday OR Friday
- differentiate between AND and OR
- OR is a much rarer use case (may revisit in next sprint)
- differentiate between prepositions and determiners
- ON / THIS (specific day)
- BY (daily reminder until that day)
- EVERY (should also apply to multiple days / reminder times)
- EVERY OTHER (maybe wait for this one?)
- NEXT (the week after the current one) >> temporarily resolved
chrono
andnlp_compromise
references the current week (Mon-Sun)- if on Sun and "next Thursday", identifies the first coming up Thursday
- if on Mon and "next Thursday", idenifies the next week's Thursday
- possibly ask the user which week they are referring to
- ranges
- TO (e.g. Friday from 5 to 7PM)
- THROUGH/THRU (e.g. Friday from 5 through 7PM)
- TO (e.g. Tuesday to Thursday)
- THROUGH/THRU (e.g. Tuesday through Thursday)
- other conditions
- in 30 minutes
- in an hour
- in a day
- in a week
- next week/month
- in a couple/few days
- later today
- every QUALIFIER (e.g. third) UNIT_OF_TIME
- EVERY condition
- day
- hour
- minutes
- second
- can't handle phrases like "this weekend"
- nlp.text(TEXT).date() is currently broken, the returned values in the documentation doesn't accurately detect the date or multiple dates
- can't handle multiple subjects (nouns) and date/times (e.g. pick up the groceries on Friday and call the babysitter on Monday) > leads to higher order question of breaking up a todo into segments
Quantity
- no idea how to handle at this point
- tags don't identify a quantity
- separate quantity from date
currently using https://github.com/wanasit/chrono and https://github.com/nlp-compromise/nlp_compromise
archive all todos
Setup an archival DB table for all todos to perform analytics and support future NLP / ML work.
Handle multiple date and time combinations
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.