SMSified Powers Apps for Communities Winner

Earlier this year, at the Random Hacks of Kindness hackathon in Philadelphia, one team of hacker-activists (Katey Metzroth, Danny Chang and Tim Wisniewski) decided to address the challenge of helping low income Philadelphians find fresh produce in their communities.

The app they developed – PhillySNAP – makes use of the SMSified API to let people find SNAP retailers in their neighborhoods.

This innovative app was honored yesterday by FCC Chairman Julius Genachowski as a winner in the Apps for Communities Challenge

A video overview of the PhillySNAP service can be seen below.


PhillySNAP from Deng-Shun Chang on Vimeo.

In addition, the team worked with the Philadelphia Department of Health and the Food Trust to disseminate information on the program to needy Philadelphians. Some of the Food Trust’s literature featuring PhillySNAP can be seen below.

Congratulations to the entire PhillySNAP team on a job well done!

PhillySNAP Sticker

PhillySNAP Sticker

©2011 SMSified. All Rights Reserved.

.

Phono Mobile How-To Demo

Tim Panton, one of the Senior Developers on our Phono project at Voxeo Labs, has prepared a how-to video to demonstrate building a mobile voice conferencing application on iOS. In this video, Tim uses PhonoSDK 0.3, PhonoGap 1.1, and XCode.

If you are not familiar with our Phono Mobile SDK, it is an extension of Phono that lets you run your existing browser-based PhonoSDK applications on iOS and Android devices as native applications using the PhoneGap mobile platform.

In addition to running VoIP, SIP-based Voice communications on iOS (iPhone, iPad, and iPod Touch) and Android devices, Phono also supports XMPP-based Instant Messaing via a simple jQuery-based developer SDK.

Here’s the video. Enjoy!

©2011 The Phono Blog. All Rights Reserved.

.

PhonoSDK Java Applet

Phono Version 0.3 now supports Java Applets in addition to Flash!  Our Java Applet has even lower latency on VoIP calls which is perfect for enterprise call centers or controlled environments that want HD audio / Wideband call performance with very low latency measured in milliseconds.

Note: For most consumer-facing sites, we still recommend using Flash due to its more pervasive deployment base.

If you would prefer to use our Java Applet on the desktop, we have provided a new audio property on Phono and a Java Applet availability detector. It sets the desired audio client to engage on the web browser or mobile device. Valid options include: auto, flash, java, and none.  This property is optional and is defaulted to auto which means:

  • if on desktop, flash
  • if on android, android
  • if on ios, ios

We have provided a handy Java detection utility that can used like so.  Note: If Java is not detected, Phono will fallback to Flash.

$(document).ready(function(){
var audioType = 'auto';
if (navigator.javaEnabled()) {
    audioType = 'java';
}

Once you have determined if Java is installed on the your client, you can now set the audio property when initializing Phono in your jQuery script like so:

var phono = $.phono({
  apiKey: "YOUR_KEY_GOES_HERE",
  audio: {type:audioType},
  onReady: function(event) {
   // stuff
 }
});

Note: If you are running MacOS Lion, you may need to follow these instructions for getting Java applets to automatically load in your web browser.

©2011 The Phono Blog. All Rights Reserved.

.

VoxeoLabs Releases PhonoSDK Version 0.3

PhonoSDK version 0.1 was released in October 2010 at the jQuery Conference in Boston. In March of 2011, PhonoSDK version 0.2 was released with support for better echo suppression so that headphones were no longer necessary. In July 2011 we released Phono Mobile allowing web developers to build and deploy native iOS and Android apps based on PhonoSDK.

Today Voxeo Labs is releasing PhonoSDK version 0.3! This is a major step forward in our commitment this opensource JavaScript Phone API project. Here is a list of new features supported in version 0.3:

  • Java Applet version of Phono is now included in the SDK! This version has even lower latency than our current Flash-based version of the SDK making this solution perfect for enterprise call centers and companies/individuals who prefer to use Java applets over Flash.
  • HTTPS support for secured signaling on the network.
  • HD Audio (wideband) support for Phono-to-Phono and Phono-to-SIP clients and SIP-to-Phono connections for VoIP calling.
  • Improved latency with updated Flash version of PhonoSDK.
  • Phono Mobile support for PhoneGap 1.1 (with support for 1.2 coming shortly).

Upgrading from PhonoSDK 0.2 to 0.3 is easy.  Simply change 0.2 to 0.3 in your jquery.phono.js URL path like this:

http://s.phono.com/releases/0.3/jquery.phono.js

Stay tuned for more blog posts demonstrating unique features of our latest version of PhonoSDK!

©2011 The Phono Blog. All Rights Reserved.

.

Customer Spotlight: PalmLing

We are excited to feature PalmLing on this week’s Tropo Customer Spotlight! Today I sat down with Ryan Frankel, one of the co-founders of PalmLing, to discuss their new business and learn more about how they are using Tropo and Phono for their human translation services.

What is PalmLing?

PalmLing is human translation in the palm of your hand. PalmLing is a phone-based platform that enables travelers to use their cell phones to speak with exceptional translators. Translators are available 24/7 and can speak directly to the person with whom you are communicating, or they can provide the information you need to communicate in a foreign language.

PalmLing uses Tropo’s Voice APIs and platform to answer international calls and initiate conferences between callers and translators to provide their service. PalmLing also uses Phono, Tropo’s web phone, to demo their translation service directly from their website. Phono basically initiates a call from the web browser into their Tropo voice application just as if someone dialed their phone number.

To learn more about PalmLing, visit their website at http://palmling.com!

©2012 The Tropo Blog. All Rights Reserved.

.

Related posts:

  1. Customer Spotlight: FetchNotes
  2. Customer Spotlight: Speak2Leads
  3. Customer Spotlight: Radish Systems

Tropo Teams with Apigee on API Explorer

Tropo is excited to partner with Apigee on the Tropo API Explorer! The API Explorer allows more developers to explore, learn, and test Tropo’s cloud communications APIs faster than ever before.

Tropo provides an API and cloud communications platform for building powerful Voice applications with speech recognition and text-to-speech in 24 languages, call recording, conferencing, SIP/VoIP, and phone numbers in 41 countries. Tropo also provides international SMS services.

The API Explorer makes this integration easier, helping developers authenticate and test our API in seconds, view the full surface area of an API, view request/response pairs in only a few clicks and share what they are seeing with others.

Now you can use the Apigee API explorer to experiment with our REST API without writing a single line of code! It is built with Apigee To-Go, a free product to let users build, skin and embed their own API Console. The Tropo API Explorer is embedded below or you can jump to this full screen version.

©2012 The Tropo Blog. All Rights Reserved.

.

No related posts.

Tropo Drinkup San Francisco

Join us Friday January 27th for our Tropo Drinkup in San Francisco at our SOMA headquarters office and enjoy some complimentary drinks while entertained by future rockstars letting loose on our piano and guitars.

We like to get our happy hours on early so be ready to break some New Year’s resolutions with us at 3:58pm.  Yep, 3:58pm.  Because two minutes can make the world of a difference for your weekend.

End your work week early and shimmy by the Tropo office for some beers, bites and a lil’ rock jam session if you are so inclined.

Tropo Drinkup San Francisco

When: Friday January 27th

Where: 28 2nd Street 3rd Floor San Francisco, CA 94123

Time: 3:58pm- 6:00pm

©2012 The Tropo Blog. All Rights Reserved.

.

Related posts:

  1. Palo Alto Startup Drinkup Wednesday 1/12
  2. South Beach Startup Drinkup Tonight!
  3. Philadelphia Startup Drinkup

Tropo joins Startup World in 36 cities

Tropo loves startups. Why? Because entrepreneurs always think of new and innovative ways to use Tropo that we’ve never even dreamed. Since we launched Tropo in 2009, we’ve helped thousands of developers and entrepreneurs build apps, demo them, pitch them, get investment and launch into full businesses. In fact, pretty much everyone behind Tropo from the engineers to evangelists…even our newest community manager…have come from startups of our own. It’s part of our DNA.

That’s why we’re extremely pleased to announce that Tropo is partnering with Newspepper, TheNextWeb, i/o Ventures, Startup Bus, Startup America (and a whole lot more!) to launch Startup World!

Startup World is a global competition to find the next big thing. The competition will be held in 36 cities world-wide, with the regional winners flying to Silicon Valley for a grand showdown to battle it out in front of a panel of expert judges to be crowned the “world’s best startup”.

We’ll be kicking off Startup World at a Launch Party at i/o Ventures in San Francisco on Tuesday Jan 24th 2012.   Come join us for the fun and some awesome speakers including Sarah Lacy!

©2012 The Tropo Blog. All Rights Reserved.

.

Related posts:

  1. Tropo joins Google, Microsoft, Yahoo!, NASA & The World Bank for Random Hacks of Kindness
  2. Tropo Sponsors Startup Weekend Phoenix!
  3. Pitching to Win at Philly Startup Weekend

Meet Phono – Tropo’s Web Phone

Have you heard about Phono, our open source Javascript Phone API project?

Phono is a free HTML5 jQuery-based web phone that you can add to any web page to place or receive open SIP-based VoIP calls to/from any web browser (or iOS/Android mobile device using Phono Mobile)!

Phono can be connected to Tropo to place or receive phone calls to/from real telephone numbers! Phono can also interact with Tropo voice applications directly from a web page using Tropo’s speech recognition and text-to-speech in 24 languages as well as record and play media such as WAV or MP3 files or conduct conference calls, call transfers, call recording, etc.

To make things even better, Phono and Tropo both support SIP headers which are basically key/value pairs of data that you can sent along with calls. SIP headers are very common in call center applications and enterprise screen-pop implementations. Using SIP headers allows Phono to place a call into a Tropo application and pass along data instructing Tropo to transfer the call to another telephone number. This is how all of the click-to-call demo applications work on phono.com. These demo applications are also limited to 10 minutes in length so that you can experience the quality of a Phono call and write your own Tropo application for longer calls.

Because we have had a few questions lately on this topic, I wanted to provide some sample code for both Phono and Tropo to make this easier for you to apply to your application. This demo application allows you to enter a phone number on a web page and call it using Phono and Tropo. The web page has a simple form that asks for a phone number and has a call button that initiates a SIP VoIP call to Tropo app:9996182316. Reviewing the Phono code below, you will find that it uses jQuery to pass the phone number value in the textbox to Tropo as a SIP header.

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script src="http://s.phono.com/releases/0.3/jquery.phono.js"></script>
  </head>
  <body>
	<input id="phonenumber" type="text">
    <input id="call" type="button" disabled="true" value="Loading..." />
    <span id="status"></span>
    <script>
    $(document).ready(function(){
      var phono = $.phono({
        apiKey: "your secret key",
        onReady: function() {
          $("#call").attr("disabled", false).val("Call");
        }
      });

      $("#call").click(function() {
        $("#call").attr("disabled", true).val("Busy");
        phono.phone.dial("app:9996182316", {
		  	headers: [
			             {
			               name:"x-numbertodial",
			               value:$('#phonenumber').val()
			             }
			           ],
          onRing: function() {
            $("#status").html("Ringing");
          },
          onAnswer: function() {
            $("#status").html("Answered");
          },
          onHangup: function() {
            $("#call").attr("disabled", false).val("Call");
            $("#status").html("Hungup");
          }
        });
      });
    })
    </script>
  </body>
</html>

You could write a Tropo transfer application using the Scripting API in one line of Ruby code that transfers the call to the phone number in the SIP header like this:

transfer $currentCall.getHeader("x-numbertodial")

What if you wanted to add a timer that ends the call after 10 minutes like we do on phono.com for demo purposes? This feature is also simple but it requires multithreading your Ruby application and using our REST API for sending a signal to interrupt the transfer method once your timer reaches its alarm.

require "net/http"

# Create second thread for timer and announcements
Thread.new do
  sleep 600 # Note: Sleep is in seconds so 600 = 10 minutes

  http = Net::HTTP.new "api.tropo.com"

  request = Net::HTTP::Get.new "/1.0/sessions/#{$currentCall.sessionId}/signals?action=signal&value=limitreached"
  response = http.request request
end

say "hold please while we transfer your call."
transfer $currentCall.getHeader("x-numbertodial"), :allowsignals => "limitreached"
say "your limit has been reached."

That’s cool but what if you wanted to block certain phone numbers or limit the demo calls to North America? You could add area codes or phone numbers to a regex array and check the desired phone number against the list of regexes to see if you should allow the call to transfer or not like this example:

phone = $currentCall.getHeader "x-numbertodial"

# Blocked North American area codes
blocked = [
  /^+?1?8[024]9/,
  /^+?1?26[48]/,
  /^+?1?24[26]/,
  /^+?1?34[05]/,
  /^+?1?[62]84/,
  /^+?1?67[10]/,
  /^+?1?78[47]/,
  /^+?1?8[024]9/,
  /^+?1?86[89]/,
  /^+?1?441/,
  /^+?1?473/,
  /^+?1?664/,
  /^+?1?649/,
  /^+?1?721/,
  /^+?1?758/,
  /^+?1?767/,
  /^+?1?876/,
  /^+?1?939/
]

block_call = blocked.any? { |x| phone =~ x }

You could add this code immediately above your transfer and add a conditional statement that says something like this example:

if block_call
  say "calls to this area code are blocked."
else
  say "hold please while we transfer your call."
  transfer phone, :allowsignals => "limitreached"
  say "your limit has been reached."
end

You could also add billing functionality to the Tropo script by applying a rate based on country code and multiply it times the number of seconds that the call was in progress. To accomplish this goal, you would add a timestamp at the beginning of the script and a timestamp directly following the transfer method. When either party hangs up, the Tropo script will continue running with the line immediately following the blocked method such as transfer in this case.

If necessary, you could also check to see if the Phono caller is still on the call by interrogating the $currentCall.isActive property or by wrapping your entire application in a while loop like this example:

while $currentCall.isActive
  # Do Stuff
end

I think that should get you started! You can now build your next-generation click-to-call application using Phono and Tropo! Please let us know how you are using Phono with your Tropo applications :)

©2012 The Tropo Blog. All Rights Reserved.

.

Related posts:

  1. 2 Lines of Code To Enable Calling 1 Phone Number And Ringing Multiple Phone Numbers (like Google Voice)
  2. How to Build a VoIP-Based Baby Monitor
  3. Dial Multiple Phone and SIP Numbers & First to Answer Wins

Changes to Tropo Channel Support

As Tropo evolves, we continue to evaluate our product features and make changes to improve the overall experience of using Tropo. Often, this means we add a feature or improve an existing one. Sometimes, this means removing a feature.

Tropo will be deprecating two features at the end of this month.

  • Instant Messaging and Twitter – Sending instant messages to your application was a fun idea and we used this a lot internally to test text applications, but shifting network protocols and uncooperative IM services meant we spent a lot of effort on the feature for very little positive result. We will be disabling the ability to add new IM networks shortly, and turning off the IM servers on January 28. Read more about this change here.
  • Skype numbers – Providing each application a Skype number allowed developers to test incoming calls to their applications. Unlike all of our other phone numbers and VoIP access, this was one-way: you could not call out with Skype. The Microsoft acquisition of Skype has left even this limited support with an uncertain future. You can continue to test your applications with SIP, phone numbers, or Phono. We’ve even embedded Phono so you can dial your applications with one click. Read more about this change here.

Changing and shaping the future of communications takes a lot of focus, and sometimes requires us to reassess the past. We’ve learned a lot from our Skype and IM support, and will put that knowledge to work in creating more great things in the future.

Deprecating these features is the first step in allowing us to focus on things that our users truly want. Look for a lot of great things coming from Tropo in the coming weeks and months.

Stay tuned!

©2012 The Tropo Blog. All Rights Reserved.

.

Related posts:

  1. Handling regular users vs casual users via the text channel
  2. Voxeo announces COBOL support for Tropo.com voice app platform
  3. How to Add Twitter Support to a Tropo.com App – Step by Step