{"id":134,"date":"2009-03-20T00:02:18","date_gmt":"2009-03-20T05:02:18","guid":{"rendered":"http:\/\/www.timrosenblatt.com\/blog\/2009\/03\/20\/voxeo-tropo-orug\/"},"modified":"2009-03-20T00:07:01","modified_gmt":"2009-03-20T05:07:01","slug":"voxeo-tropo-orug","status":"publish","type":"post","link":"http:\/\/www.timrosenblatt.com\/blog\/2009\/03\/20\/voxeo-tropo-orug\/","title":{"rendered":"Voxeo, Tropo, &#038; ORUG"},"content":{"rendered":"<p>I went out to ORUG tonight. <a href=\"http:\/\/www.voxeo.com\/\">Voxeo<\/a> was presenting a thing they&#8217;re working on, <a href=\"http:\/\/www.tropo.com\">Tropo<\/a>. Disclosure: they bought us dinner. Full disclosure: I think this thing is really tight.<\/p>\n<p>I used to help set up phone systems in high school, and phone trees have always seemed like kind of a mystery. Tropo lets you build whole phone apps, and it&#8217;s ridiculously easy. It&#8217;s basically a phone system DSL. They handle text-to-speech, speech-to-text, playing recorded sound files; there&#8217;s lots of convenience things for capturing different types of inputs, handling error cases, recording calls, transferring calls, etc. They give local phone numbers in different area codes, they&#8217;ve also got Skype integration, and a few other ways to connect to the system. The very cool part is that it&#8217;s all free to play around with, but once you start using it for commercial reasons, then you have to pay.<\/p>\n<p>Ever hear of Google&#8217;s Grand Central? With this, you could easily make your own. I&#8217;ve been playing around with a few things using <a href=\"http:\/\/github.com\/timrosenblatt\/tropo_science\/tree\/master\">Tropo&#8217;s Ruby setup, and I&#8217;ve put the demo code on GitHub<\/a>. Very cool stuff.<\/p>\n<p>You can write apps in Ruby, PHP, Python, Javascript, and Groovy (&#8220;Java++&#8221;). There&#8217;s a bunch of <a href=\"http:\/\/docs.tropo.com\/\">example code on their site<\/a>, and development is really easy to do. For example:<\/p>\n<pre class=\"brush: ruby; title: ; notranslate\" title=\"\">answer\r\n\r\ndigits = $currentCall.callerID.to_s.split('')\r\n\r\narea_code = digits[0..2]\r\ncity_code = digits[3..5]\r\nsubscriber_number = digits[6..9]\r\n\r\n# single dashes get spoken as 'dash', use doubles for a pause.\r\n# Double commas don't work, neither do extra spaces\r\nsay &quot;-- -- -- S-up. Your phone number is -- #{area_code.join(',')}--#{city_code.join(',')}--#{subscriber_number.join(',')}&quot;\r\n\r\nhangup<\/pre>\n<p>There is a debugger that you can print messages to. Right now there&#8217;s a *ton* of output to it, but you&#8217;ll find your messages in there.<\/p>\n<p>One thing: I was getting a message that the caller was &#8220;not accepting calls at this time&#8221;. I realized this was a parse\/compile error in my script. So, if you can&#8217;t get something to load, check it. The debugger doesn&#8217;t seem really helpful with this, I got a generic seeming Java Exception for a variable name typo. They use Java under the hood for tons of stuff, so even though I&#8217;m writing Ruby code, it gets interpreted in Java.<\/p>\n<p>I did learn a cool fact about these phone trees. You know how a lot of phone trees suck when you try and talk to them? Well, for speech-to-text conversion, you can only get around an 80% success rate. The reason is that phones are only around 64kbps of data. There&#8217;s too much loss for the algorithms to work well. That&#8217;s why apps that run on the local computer\/phone are able to do better &#8212; they embed part of the recognition algorithm in the client.<\/p>\n<p>And, on a final note: skateboarding through downtown is awesome.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I went out to ORUG tonight. Voxeo was presenting a thing they&#8217;re working on, Tropo. Disclosure: they bought us dinner. Full disclosure: I think this thing is really tight. I used to help set up phone systems in high school, and phone trees have always seemed like kind of a mystery. Tropo lets you build &hellip; <a href=\"http:\/\/www.timrosenblatt.com\/blog\/2009\/03\/20\/voxeo-tropo-orug\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Voxeo, Tropo, &#038; ORUG&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[145,123,31],"tags":[280,430,429,428,431],"_links":{"self":[{"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/posts\/134"}],"collection":[{"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/comments?post=134"}],"version-history":[{"count":0,"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/posts\/134\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/media?parent=134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/categories?post=134"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.timrosenblatt.com\/blog\/wp-json\/wp\/v2\/tags?post=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}