The most inclusive mobile app platform in the world. Voice and text apps for dumb phones (and smart phones, too!).
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.
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.
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.
This is barely an alpha version :) Use at your own risk. Submit any bugs to the issue tracker.
The Dumb Store uses the GitHub's "Fork & Pull" Collaborative Model as its backbone.
-
Fork the Dumb Store repository to your own account.
-
Clone the repository to your computer so that you can start writing code in it.
$ git clone [email protected]:yourname/dumbstore.git
- 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
- 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.rbshould have a class calledWeather. A file calledlocal-listings.rbshould have a class calledLocalListings.
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
endAn 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 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.
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-
Commit your changes to your local repository.
-
Push the changes to your GitHub account and take out a pull request.
-
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!
Copyright © 2013 Allison Burtch and Ramsey Nasser. Provided under the MIT License.