Giter Club home page Giter Club logo

dumbstore's Introduction

The Dumb Store

The most inclusive mobile app platform in the world. Voice and text apps for dumb phones (and smart phones, too!).

Usage

Dumb apps can be used over voice and text. Call or text +1 646-666-3536 to access any of the apps available on the store.

Voice Apps

To use a voice app, call the Dumb Store number. You will be prompted to enter the ID of the app you want to use followed by the pound key (#). For example, the Drone app's ID is "drone", so enter 37663 followed by the pound key. The app takes over from there.

Text Apps

Send a text message to the Dumb Store number with the ID of the app you want to use followed by any additional information the app might be expecting from you. For example, the weather app's ID is "weather" and it expects additional text to tell it where to forecast the weather. To get the weather in Brooklyn, you would text weather 11205 to the Dumb Store number. The app takes over from there.

Stability

This is barely an alpha version :) Use at your own risk. Submit any bugs to the issue tracker.

Contributing

The Dumb Store uses the GitHub's "Fork & Pull" Collaborative Model as its backbone.

Fork and clone

  1. Fork the Dumb Store repository to your own account.

  2. Clone the repository to your computer so that you can start writing code in it.

$ git clone [email protected]:yourname/dumbstore.git

Implement your app

  1. Create a new file in the apps/ folder. Use a name that reflects the nature of your app. Currently The Dumb Store only supports Ruby apps.
$ touch apps/my-app.rb
  1. A Dumb App is a Ruby class that inherits from Dumbstore::App. The name of the class must be a titlized verison of the file name. For example, weather.rb should have a class called Weather. A file called local-listings.rb should have a class called LocalListings.
class Weather < Dumbstore::App
    author 'Ramsey Nasser'
    author_url 'http://nas.sr/'
    description 'My awesome weather app'

    text_id 'weather'
    def text params
      current_weather = WeatherApi.get_weather
      "<Response><Sms>The weather is #{current_weather}</Sms></Response>"
    end

    voice_id 'weather'
    def voice params
      current_weather = WeatherApi.get_weather
      "<Response><Say>The weather is #{current_weather}</Say></Response>"
    end
end

An app can operate over text (SMS), voice, or both.

To support SMS, give your app a text ID as shown above and implement a text method that takes a single argument and returns a string. The text method will be executed when a user sends a message to the store with your app's text ID. The argument passed to the method is a hash of the original Twilio request. In the above example, params['Body'] would hold the value of the user's text message minus the app ID. The method must return a valid TwiML document in response to the user's text.

Supporting voice is the same, except you give your app a voice ID and implement a voice method. Its parameters are different.

You can implement whatever kind of logic you want in the text and voice methods. See the apps in the apps/ folder for reference.

Do not use a text or voice ID of an existing app.

Testing

Testing your apps locally is currently very janky. For now, try curl localhost:5000/text -d Body=APPNAMEHERE\ test\ text after you've launched the server. We are actively working on a better local testing workflow.

Advanced

For functionality not exposed by our APIs, an authenticated Twilio client object is always available at Dumbstore.twilio. This will allow you to do anything the Twilio gem supports. Dumbstore.twilio is a reference to @client.account, so to send an SMS manually you could do this

Dumbstore.twilio.sms.messages.create(
  :from => Dumbstore.phone_number,
  :to => '+16105557069',
  :body => 'Hey there!'
)

You also might want to skip the Dumbstore's automatic response mechanism when making more advanced apps. Return nil from a text or voice method to avoid responding.

def voice params
  Dumbstore.twilio.sms.messages.create(
    :from => Dumbstore.phone_number,
    :to => 'params["From"]',
    :body => 'Responding to a call with a text!'
  )

  nil
end

Take out a pull request

  1. Commit your changes to your local repository.

  2. Push the changes to your GitHub account and take out a pull request.

  3. Discuss the submission in the comments thread of the pull request. Once it's approved, it gets pushed to the store and made available to everyone!

Legal

Copyright © 2013 Allison Burtch and Ramsey Nasser. Provided under the MIT License.

dumbstore's People

Contributors

ambled avatar arnavroy avatar bantic avatar hayksaakian avatar jdan avatar joelterry avatar lizcira avatar nasser avatar quantumpotato avatar rcy avatar runasand avatar samgreen avatar uiri avatar usdivad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dumbstore's Issues

MMS Support

Twilio can do MMS and so can a lot of dumbphones. Would be neat to have.

Celsius in Weather

If easy to do so, please add the degrees in Celsius too, can be bracketed after the Fahrenheit number.

This will make more sense to people texting from places like Australia and the UK.

Local Listings App

An app that takes as input the name of a place and returns its address and phone number. Cross streets would also be awesome.

Universal Translator

Would be cool to be able to text a word then have it translated to another language in response.

Weather app is crashing

Other apps seem ok, but something is crashing the weather app no matter how the weather app is used.

Local testing

We need a mechanism to be able to develop and test apps locally

Make it case-insensitive?

Lots of phones automatically capitalize the first letter of every text--not having to go back and correct that would be nice for usability.

Snapchat

Voice app, similar to the Wall app. You call in and leave a message that can only be heard by one person, once, before it deletes itself.

A forwarding app?

This is something like a feature request, but without certain requirements.
It comes from my not willing to dig into ruby, but it might be supported by much better arguments than that ;)

Are you planning to support other languages/technologies?
I guess not. (which is totally understandable for me)

So maybe you'd be willing to create a forwarding app that would work like that:
user sends fw externalappname otherstuff and it triggers the fw application.

fw application checks the list of registered app URLs:
'appname':'http://someaddress/to/a/gateway'
and sends a POST request to the address with otherstuff in the body.
The service returns text.
fw app limits the length to a SMS length (so no SMS bombs consisting of hundreds of SMSes when a page throws a lengthy error message)

That would allow anyone with any technology join your (awesome) platform just by submitting a pull request with one line of configuration. I know I want to.

Nomethod error when running server.rb

I run this:

bundle
ruby server.rb

and get this:

server.rb:12:in `<main>': undefined method `twilio_account_sid=' for Dumbstore:Module (NoMethodError)

This happens no matter what the twilio_account_sid value is; I even tried hardcoding my own SID to see if that would work but got the same error. :( Running Ruby 1.9.3-p484. Also tried Ruby 1.9.2-p363 but got the same result. Any ideas?

Directions App

An app that can take an origin address and a destination address and respond with step by step directions between the two. Additionally, directions for cars and bicycles would be great.

Parallel stores

People should be able to deploy their own Dumb Stores off of their own Twilio accounts. We would also use this feature to run a test store to test experimental features and apps.

CitiBike App

An app that provides information on available CitiBikes near a given area.

Back-and-forth

Build an API that supports a back and forth between the user and the app. At the moment, all interaction is one-off, call and response. Users should be able to have a conversation with the app. Certainly over voice, possibly over text.

Identifying the user

Possible register/login auth feature?
With username being the dumb phone user's phone number.

myapp register 214245

myapp login 214245

myapp get custom info

+ character is lost in transmission

example

curl localhost:4567/text -d Body="wall s+++++s++++s++++s++++s

<Response><Sms>s s s s s</Sms></Response>

no more +'s

:(


context: I was writing an app to roll dice a lá "roll 1d4+4" when i discovered the + symbol never made it...

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.