Archive for the ‘SMS’ Category

Tropo + Ushahidi = Awesome

Friday, December 9th, 2011

Ushahidi is a platform for crowdsourcing information. Members of the public submit reports that are geo-located and then put on a map. The platform is used in disaster relief, election monitoring and just about any other situation where people need to learn things from one another quickly and concisely. Out of the box, Ushahidi allows people to submit reports via the web, mobile applications, Twitter, Facebook with support for a few SMS APIs as well.

We have created an easy-to-use application that lets people use Tropo to input data into Ushahidi via SMS. We’ve put the code up on Github and you’re welcome to submit pull requests if you find bugs or add features.

To use the code, you don’t have to install anything on Ushahidi. Here are the steps:

  1. In Ushahidi, create a user with “Admin” privileges.
  2. check out the code from Github
  3. edit the configuration lines at the top with your Ushahidi credentials and URL
  4. create a new Scripting API Application on Tropo.com.
  5. Once your Tropo app is created, you can add an SMS-enabled number (US and Canada currently) and optionally configure it to talk on any IM networks or Twitter.

Now, when you send a message to any of your configured numbers the application will attempt to geo-locate the message based on its contents. The app then submits a report via the Ushahidi API in an unverified state. Admins of the site can then verify the reports and publish them to the web.

In our example here, we simulated a flood in Milwaukee. The instance pulls in feeds from local media and disaster response community, accepts reports via the web and accepts reports from a Tropo app I created. We sent a message to the number configured in the app with the following content:

 

Columbia St. Mary’s Hospital Milwaukee WI is flooded. Power is out.

This was submitted to Ushahidi in an unverified state. The reviewer then added text to flush out the report based on other incoming data and then published the report:

Columbia hospital has been without power for the past 16 hours. Two of the three emergency diesel generators are operating normally. Generator number 2 is scheduled to be functional within the next 6 hours. Fuel supplies are at nominal levels with an estimated 48 hours remaining. Inundation levels are currently low but may begin rising at high tide.

This sort of crowdsourced data, gathered at the source, is valuable for many reasons. It gets the word to responders and the public more quickly so that people can act appropriately (e.g. by not going to that hospital, go to another one.) First responders become aware of the weight of a problem when more people report the same thing or when the first report comes in of a very big event.

Watervoices.ca, developed this past weekend at RHoK, will be going live with this application soon and we hope to see others using it to help the world soon. Over time, we will be adding support for Voice, PhoneGap within Ushahidi and many other features.

LA .NET Hackathon 2011

Monday, December 5th, 2011

Tropo is partnering with the LA .NET Developers Group and Outlook Amusements to sponsor this weekend’s LA (Burbank) Hackathon at Outlook Amusements on Saturday, December 10, 2011 from 9:00 AM to 6:30 PM (PT).

Here’s the address: Outlook Amusements 2900 W. Alameda Ave suite 400 Burbank, CA 91505

The theme of the LA Hackathon is “Build Voice/SMS apps for Holidays”! Here are a few ideas to get you thinking:

  • Santa Caller (similar to http://santacall.us) – Build a website that allows a parent to schedule a call to their kids from Santa. Have Santa ask the kid what they would like for Christmas and then email the parents their kid’s recorded message and/or transcribe the message for the email.
  • Santa Tag (similar to http://www.bloggingbistro.com/jc-penney-comes-up-with-a-new-use-for-qr-codes-video/) – Build a website that calls someone to record a message then associates the message with a QR code that plays when scanned.
  • Holiday Greetings Hotline – Build a holiday greetings hot line where user can leave a voice message that will be transcribed into text and posted to “Holiday Greetings” twitter account.

Even though this event is sponsored by the .NET Developers Group, we will be supporting all development languages and will have Tropo expertise onsite in .NET, PHP, Ruby/Rails, and Javascript, and Node.JS!

Register today!

Drop2Drink wins Random Hacks of Kindness San Fran

Monday, December 5th, 2011

What a weekend!   Tropo sponsored Random Hacks of Kindness events in 4 different cities.  We’re still resting up from the craziness, but I wanted to do a quick post about the winning project in San Francisco.

Last summer I was attending Summer of Smart at GAFFTA and I met Sarah Filley, who told me about an idea she had for an earthquake preparedness project centered around awareness.  Turns out that there are 62 fire hydrants spread out around San Francisco specifically designated for emergency drinking water in the event of a major quake.  The most publicly available source of this info was a “blurry PDF file downloadable from a city website” or visibly by a blue “drop” painted on each of the hydrants.  Sarah wanted to increase the visibility of these sources of emergency drinking water.

I thought this would make for a great project for Random Hacks of Kindness so I encouraged Sarah to present her project on Friday night.   By Saturday afternoon Sarah’s excellent team of hackers had an interactive Google Map set up.  By Sunday, they had full interactive QR-codes, text messaging (powered by Tropo), Four Square checkins… no longer were these 62 hydrants virtually invisible!

Thanks to the RHoK sponsors:  Google, Microsoft, Yahoo, NASA, HP and the World Bank!   More on the other RHoK locations soon…

Customer Spotlight: flockNote

Friday, December 2nd, 2011

We are excited to feature flockNote on this week’s Tropo Customer Spotlight! Today I sat down with Matthew Warner, the Founder of flockNote, and Jeff Geerling, their CTO, to discuss their business and learn more about how they are using Tropo for their Voice and SMS services.

What is flockNote?

  • flockNote is a custom registration and communication tool that takes care of your bulk emailing, text messaging, phone calling, social media and more – all from one place.
  • flockNote is made specifically for Catholic parishes, dioceses and organizations who want to connect with their members using the most effective communication tools of today.
  • It’s simple, friendly and effective. And it gives your leadership team a powerful way to organize and manage all of your communications across your many ministries.

flockNote uses PHP, Drupal, and the Tropo Scripting API to deliver Voice and SMS services to parishioners. They even use one of Tropo’s SMS short codes (84576) to deliver a very high volume of SMS messages on-demand as needed by churches.

To learn more about flockNote, visit their website at http://flocknote.com!

Introducing TropoVBX

Wednesday, November 16th, 2011

As you may recall, Disruptive Technologies recently extended the capabilities of OpenVBX (the open source cloud PBX software) to run on our Tropo cloud communications platform. The original blog post announcing this project was entitled, “Jailbreaking OpenVBX“. This title was chosen carefully because at the time of the post, OpenVBX only ran on a single cloud platform. Disruptive Technologies was able to extend the communications layer of this application to not only add support for Tropo but also simplify future efforts involved in adding support for other platforms such as Asterisk, FreeSwitch, and others.

As it turns out, the original repository maintainers declined to accept Disruptive Technologies’ GitHub pull request to merge the code bases and asked that the name of the new project be changed, effectively requesting a formal fork of the open source project. Here is the new GitHub repository for TropoVBX.

The TropoVBX fork still provides support for multiple platforms – including the platform of the original repository maintainer. Disruptive Technologies will also be merging updates from the original fork where possible and continuing to add new features to TropoVBX as time permits. Because TropoVBX now runs on the Tropo platform, there are many new and advanced features only supported Tropo which include:

  1. Speech Recognition in 24 languages
  2. Text-to-Speech in 24 languages with male and females voices for each
  3. Support for biometrics on password resets
  4. Ability to route Skype calls into TropoVBX
  5. Ability to support true SIP VoIP in and out of the platform
  6. Phono web phone integration
  7. International SMS
  8. Phone numbers in 41 countries
  9. Multiple phone numbers supported per callflow
  10. Large conference calls

Please feel free to clone, contribute, and fork the new TropoVBX project and use our logo as you see fit. Our version of this project will remain truly open in every sense of the word and spirit of open source.

Customer Spotlight: FetchNotes

Friday, November 4th, 2011

We finally got a chance to catch up with the guys (@_chaselee and @alexschiff) behind the popular new notes service called FetchNotes!

What makes FetchNotes so cool? For one, it has a super simple web UI. The entire site behaves like an app and leverages Python’s Tornado Webserver and AJAX to add and tag notes without lifting your fingers from the keyboard. Tags are basically hashtagged keywords in the note that allow the app to categorize notes by topic.

Secondly, FetchNotes leverages Tropo to deliver a truly multichannel communications experience. Today FetchNotes extensively leverages Tropo’s SMS services but the team has already started working on adding Tropo’s Voice with transcription service as well as Tropo’s Instant Messaging services on all of the IM networks including: GTalk, Yahoo!, MSN, AOL, and Jabber! We may even see support in the near future for in-browser, voice-powered note taking using Tropo’s Javascript Phone API, Phono.

Thirdly, Chase and Alex are working to add groups and third-party integration into other services such as GitHub or Google Calendar. This would allow developers, testers, and users to take a note about a #feature or #bug and tag it accordingly and watch the note get pushed to other services as GitHub issues or even calendar entries on Google!

The FetchNotes service is still in private beta but the first 50 new subscribers that click on fetchnotes.com/invite/tropo will be allowed to register for the service and check out the new coolness first hand!

Jailbreaking OpenVBX

Wednesday, September 21st, 2011

Remember when the iPhone was only available on AT&T?   That was true until October 11, 2009 when a young coder named geohot (and friends) released the first iPhone/iPod jailbreak.  Suddenly iPhones weren’t tied to to just AT&T…now you could give AT&T the boot and choose Verizon or T-Mobile as your service provider.  Score!

In the spirit of geohot’s jailbreaking efforts, the rapscallions at Disruptive Technologies took on the the task of “jailbreaking” OpenVBX.

OpenVBX is a web-based open source phone system. It’s essentially a virtual PHP/MySQL PBX  and it’s available for download from GitHub.   Users of OpenVBX can make phone calls, send text messages…all very cool.

The catch is…you’re locked into one service provider: Twilio.  There’s no way to choose to use another cloud telephony provider…until now.

Today we’re pleased to announce a new fork of OpenVBX that adds support for Tropo.  For the first time, users of OpenVBX will have a choice of multiple platforms on which to run it, making it REALLY OpenVBX.

The coders at Disruptive Technologies added full support for the the Tropo API and Phono SIP-based VoIP web phone to the communications layer of the OpenVBX project. Of course, when selecting the Tropo API, users will now get access to all of the more advanced features of the Tropo network: speech recognition and text-to-speech in 24 languages, phone numbers in over 40 countries, international SMS, in/outbound SIP VoIP support, inbound Skype support, multiple phone numbers per callflow script, improved conferencing.

Disruptive Technologies also extended OpenVBX with the VoiceVault API to support Voice Biometrics in password resets. After adding VoiceVault credentials on the API Accounts Tab, the password reset dialog will provide an option to request a phone call to reset your OpenVBX account password.

The OpenVBX fork with Tropo can be found on GitHub.  We have sent the maintainer of the OpenVBX project a pull request to merge these updates into the project. The following features and bugfixes have been added to the OpenVBX package:

  • Fixed a redirect bug. OpenVBX no longer incorrectly redirects users to 404 pages.
  • Fixed bug in Twilio client. 60 seconds after the user has been “inactive”, the client is no longer able to be called for that user. This prevents calling the client if the user has closed their browser. (This also works for the Phono Client)
  • Added support for the Tropo API. You can now add a “Tropo API account” on the system settings page, and from the installer. Either a Tropo or Twilio account is required. Included in the new Tropo API additions are:
    1. Support for Tropo domestic and international phone numbers, on the “numbers” page.
    2. All applets in the “flows” page now support Tropo JSON as well as TwiML. Any number can be assigned any flow – so a tropo number and a twilio number can both be assigned the same flow.
    3. Support for existing Tropo numbers & applications. If the user prefers to set up their numbers initially in Tropo.com, the application will see these numbers and they can be assigned a flow within the application.
    4. Recordings, and Voicemail, as well as outbound dialing with Tropo.
  • Several theme changes. The OpenVBX logo has been modified to include both the Tropo and Twilio logo. If only one of the accounts is active, only that logo will show in the VBX logo – so if a user only has a Twilio account, only the Twilio logo will show, and vice versa. Other minor theme changes:
    1. Several pages in the System Settings tabs have been reworked.  Notibly the API accounts page, which now has each API accounts logos.
    2. Step 3 of the installation has been reworked.
    3. Several Twilio-specific content has been changed to be more ambiguous.
  • Added support for “Phono” browser phone, in addition to the Twilio Client. Any non-Twilio based numbers will use the new Phono browser phone.

This project has since been renamed to TropoVBX. Please refer to the updated blog post and new source code repository on GitHub.

SMS forwarding to an email using MailChimp

Tuesday, September 6th, 2011

Depending on your application, you might receive multiple messages back to back to back – system notifications, alerts, user confirmations and so on – that would be inconvenient to redirect to your phone one by one. As an alternative, how about receiving a full list of the inbound texts sent to you as an email? Using MailChimp with Tropo, this can be accomplished with relative ease.

MailChimp allows users to send an email to multiple email addresses at once as an email blast; this blog will show how to implement MailChimp’s API with a Tropo Scripting app using Ruby. As is typical, first step is to set up an account for MailChimp.

Go here to sign up for an account, then once signed up and logged in, we need to create a list – this is how MailChimp sends emails. Unfortunately, lists cannot be made programmatically, so to set up a new list – sign-in, fill out the requirements, then click the tab Lists.

Once there, hit the “create a subscriber list” button to the left. Following that, some information will be requested – list name, default name, and default email (which is not the email that will send the text messages, but the email that receives confirmation that the emails were sent). When everything is filled out, hit save to create a new list.

Next, the first email address that will receive the email containing the texts needs to be added. This can be done by clicking “add people”.

After selecting “add people”, the only relevant information that needs to be added is the email address. Repeat this process to add multiple email destinations.

From here, the app takes over. To begin, a few requirements are necessary – uri, to format strings into proper URLs,  net/http, to submit URLs to receive information and send the emails, and json, to read the received information.

%w(uri net/http json).each{|lib| require lib}

Following this will be the config section, which are constants that can be set in the beginning.

**Important Note**

-In the API_URL the first three characters can change and will rely strictly on the API_KEY.  An example to expect is: myapikey-us2, in this case the first three characters would be us2.

#CONFIG
YOUR_NAME = URI.encode("Kevin Bond")
API_URL = "http://us2.api.mailchimp.com/1.3"
API_KEY = 'mailchimp_api_key'
FROM_ADDRESS = "kbond@voxeo.com"
SUBJECT = URI.encode("You just received a text message!")

The next piece of code will extract the text and the caller id from the SMS. The text will be the “content” of the email (the body) and the caller id will be the “from_name”.

# Get the initial Text, and callerId
initial_text = $currentCall.initialText
caller_id = $currentCall.callerID

Now it’s finally time to utilize the MailChimp API. This piece of code will send a request to get the list id, which is the specific number that corresponds to the list we made earlier. Once received, it is parsed into JSON and read as the variable list_id.

#Get the list ID that corresponds to your email
id =Net::HTTP.get_response(URI.parse("#{API_URL}/?method=listsForEmail&apikey=#{API_KEY}&email_address=#{FROM_ADDRESS}"))
list_id = JSON.parse(id.body)

The next step in sending this email blast is to create a new email campaign. To do this, there are some parameters that need to be added to the URL. There are four in total, two variables – “api key” and “type of email” – and two arrays or hashes. The code below shows the two hashes (“content” and “options”).

#This will be the body of your email, which is the text message
content = "1=#{URI.encode(initial_text)}"

#Setting the url variables
options = "&
options[list_id]=#{list_id[0]}&
options[subject]=#{SUBJECT}&
options[from_email]=#{FROM_ADDRESS}&
options[from_name]=#{URI.encode(caller_id)}&
options[to_name]=#{YOUR_NAME}".gsub("\n","")

The other two parameters are just inserted individually. Below is the variable parameters, which holds all of the contents.

#Parameters will be the variable that goes inside of the url
#To satisfy mailchimps method, you need 4 fields, the apikey, type of email, 
#options - which is an array or hash, and content - which is also an array or hash
parameters = "apikey=#{API_KEY}&type=plaintext&options=#{options}&content#{content}"

The next MailChimp API request creates a new email campaign, it doesn’t actually send the emails. The request returns the campaign id, called cid, which is used to launch that campaign.

#This response creates a new campaign and returns the id for that campaign
id = Net::HTTP.get_response(URI.parse("#{API_URL}/?method=campaignCreate&#{parameters}"))
cid = id.body[1..10]

Now that the email campaign is created, all that is left to do is send it. The code below sets the URL, creates a new HTTP post, and finally initiates the post. The result should return “true” if the campaign successfully sent.

#This is a post to send the email using the cid, which is the campaign id
url = URI.parse("#{API_URL}/?method=campaignSendNow&apikey=#{API_KEY}&cid=#{cid}")
req = Net::HTTP::Post.new("#{API_URL}/?method=campaignSendNow&apikey=#{API_KEY}&cid=#{cid}")
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }

Once this executes, all of the email adresses from the list will receive the email with the text message contents.

Hope this was helpful, you can go here to view the app in full. Questions or concerns can be added in the comments, or opened as a forum post here.

Voice Board and Group SMS for Burning Man

Thursday, August 25th, 2011

This is a true testimonial to the power of running Tropo in a Private Cloud using generators for disaster relief or business continuity or for handling communications for events like Burning Man!

This rack includes Tropo and OpenBTS communications equipment for powering Burning Man’s Tropo Voice Board and Group SMS apps!

Once a year, tens of thousands of BurningMan participants gather in Nevada’s Black Rock Desert to create Black Rock City, dedicated to community, art, self-expression, and self-reliance. They depart one week later, having left no trace whatsoever.  Black Rock Desert (or the Playa as Burners refer to it) is an isolated region with no electricity, running water, or communications.

Tropo has partnered with Range Networks and GWOB to setup a local OpenBTS-powered cell tower to provide both Tropo-powered Voice and SMS communications services to the Burners on the Playa.

Custom Private Cloud Tropo applications have been developed to deliver a social voice mail solution – or better yet – an asynchronous voice board messaging platform as well as a Group SMS solution like Facebook’s new messaging app but for local Burners only.

This is what the Voice Board application looks like if you were to connect to the Tropo server using a local IP address!  It’s basically a Ruby on Rails 3.1 application utilizing Tropo’s Scripting API and small Ruby script.  The website is designed to allow the outside world to interface with the Burners, provided we can establish a good satellite data uplink (more details to follow). The website grabs the latest BurningMan-tagged Flickr image and associates it with a voice memo being streamed while enjoying photos from the event.

Burners can call into our Voice Board application to record social voice memos and listen to public messages left by other Burners on the voice board. If a recording is in progress when a new call comes in, it automagically  becomes a conference room party line and continues recording the chat from the participants.

The conference room recording simply becomes another voice memo like the others – presented in descending order to new callers. As you listen to voice memos, they automagically get marked as read and disappear from your list. The Voice Board application loops through options (record memo or listen to memos) while the call isActive and lets you leave multiple voice memos or join the conference after listening to memos (if one is in progress)!

The Voice Board application also includes a Group SMS application which is available only for the local Burners. Any one who has called the Voice Board or texted a message to the Tropo Group SMS app will automagically be added to the Group SMS distribution list for the duration of the event.  They will receive text messages from other Burners any time the Voice Board is sent a text message!

The source code for our the Tropo-powered Voice Board and Group SMS application can be found at https://github.com/chrismatthieu/voiceboard

We are also in the process of establishing a satellite data connection to allow for VoIP connectivity of these communications applications to the outside world allowing the Burners to actually make real phone calls to anyone in North America.  This is powered byt the Tropo.com Public Cloud service.  If communications with the outside world can be established, Tropo will be sponsoring an unlimited number of 5 minute phone calls from the Playa to any phone number in North America to allow Burners to stay in touch with loved ones and to provide an additional route for emergency communications.

We are proudly embracing the BurningMan experience and we hope to gain more experience in using Tropo to deliver real-time communications services in times of disaster and business continuity programs as well as allowing our customers and telcos/carriers to run Tropo’s cloud communications API and platform in their own data centers and private voice clouds.

For more information on about Tropo’s involvement and applications used in the BurningMan event, please refer to our blog post below or contact Chris Matthieu at chris [at] tropo.com

http://blog.tropo.com/2011/08/23/tropo-openbts-burning-man-awesome/

Tropo powers Carnegie Mellon’s Fitwits program

Monday, July 25th, 2011

A few months ago I was contacted by one of the members of our Tropo developer community, Armen Arevian, about an app he was working on for a project called Fitwits™.  Fitwits is a fun, hands-on program developed at Carnegie Mellon University School of Design, designed to inform kids and families about healthy eating and active living.

The game encourages families to interact with each other, ask questions and discuss health in a fun and engaging way. For five weeks, starting on Aug. 1, 2011, Eat’n Park Restaurants will introduce the Fitwits program to guests by offering a series of five Fitwits collectible character cards to families. Each card contains nutritional information, recipes, trivia and memory triggers to teach children about appropriate portion sizes.

Armen was busy developing Fitwits’ first-ever text-messaging game on Tropo called “Road Trip with Elvis,” which uses families to advise Fitwits character Elvis Pretzley how to make healthy choices during his busy travel schedule.   Armen works with with the Open Science Initiative, a nonprofit with the goal of helping researchers to be as productive as possible and tackle the most challenging problems in science.

When Armen first contacted me, he expressed concern with covering the cost of the SMS text messages and he reached out to see if I could help.

I quickly called up our friends at Geeks without Bounds, told them about Armen’s project, and through brute force and determination, we were able to get ALL of the SMS text messages for the Fitwits project sponsored so Armen could focus on making the app awesome. :-)

So, thanks to Armen @ The Open Science Initiative, the folks and Carnegie Mellon School of Design, Eat’n Park Restaurants and Geeks without Bounds  Fitwits game launches next week and the whole Tropo team is elated that we’re able to help put our technology towards such a rewarding cause.

For more information, you can check out the Fitwits Press Release or visit the Fitwits website.