<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>The Tropo Blog</title>
	
	<link>http://blog.tropo.com</link>
	<description>THE platform for building cloud communications applications</description>
	<lastBuildDate>Mon, 30 Jan 2012 18:05:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tropo" /><feedburner:info uri="tropo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Customer Spotlight: PalmLing</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/ysXJKZEJR-I/</link>
		<comments>http://blog.tropo.com/2012/01/30/customer-spotlight-palmling/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 18:05:36 +0000</pubDate>
		<dc:creator>cmatthieu</dc:creator>
				<category><![CDATA[Tropo]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web API]]></category>
		<category><![CDATA[conferencing]]></category>
		<category><![CDATA[international]]></category>
		<category><![CDATA[palmling]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[spotlight]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5409</guid>
		<description><![CDATA[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 [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/11/04/customer-spotlight-fetchnotes/' rel='bookmark' title='Customer Spotlight: FetchNotes'>Customer Spotlight: FetchNotes</a></li>
<li><a href='http://blog.tropo.com/2011/11/18/customer-spotlight-speak2leads/' rel='bookmark' title='Customer Spotlight: Speak2Leads'>Customer Spotlight: Speak2Leads</a></li>
<li><a href='http://blog.tropo.com/2011/11/11/customer-spotlight-radish-systems/' rel='bookmark' title='Customer Spotlight: Radish Systems'>Customer Spotlight: Radish Systems</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://palmling.com"><img src="http://blog.tropo.com/files/2012/01/Palmling-300x119.jpg" alt="" title="PalmLing" width="300" height="119" class="alignleft size-medium wp-image-5410" /></a> We are excited to feature <a href="http://palmling.com">PalmLing</a> on this week’s Tropo Customer Spotlight! Today I sat down with <a href="https://twitter.com/#!/rvfrankel">Ryan Frankel</a>, one of the co-founders of PalmLing, to discuss their new business and learn more about how they are using <a href="http://tropo.com">Tropo</a> and <a href="http://phono.com">Phono</a> for their human translation services.</p>
<h2>What is PalmLing?</h2>
<p>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. </p>
<p>PalmLing uses <a href="http://tropo.com">Tropo&#8217;s</a> Voice APIs and platform to answer international calls and initiate conferences between callers and translators to provide their service.  PalmLing also uses <a href="http://phono.com">Phono</a>, Tropo&#8217;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.</p>
<p>To learn more about PalmLing, visit their website at <a href="http://palmling.com">http://palmling.com</a>!</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/jKjeRoqHGEM" frameborder="0" allowfullscreen></iframe></p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/11/04/customer-spotlight-fetchnotes/' rel='bookmark' title='Customer Spotlight: FetchNotes'>Customer Spotlight: FetchNotes</a></li>
<li><a href='http://blog.tropo.com/2011/11/18/customer-spotlight-speak2leads/' rel='bookmark' title='Customer Spotlight: Speak2Leads'>Customer Spotlight: Speak2Leads</a></li>
<li><a href='http://blog.tropo.com/2011/11/11/customer-spotlight-radish-systems/' rel='bookmark' title='Customer Spotlight: Radish Systems'>Customer Spotlight: Radish Systems</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/01/30/customer-spotlight-palmling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/01/30/customer-spotlight-palmling/</feedburner:origLink></item>
		<item>
		<title>Tropo Teams with Apigee on API Explorer</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/SY45vRuihY4/</link>
		<comments>http://blog.tropo.com/2012/01/27/tropo-teams-with-apigee-on-api-explorer/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 21:37:32 +0000</pubDate>
		<dc:creator>cmatthieu</dc:creator>
				<category><![CDATA[Samples]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[Web API]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[api explorer]]></category>
		<category><![CDATA[apigee]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[rest api]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5418</guid>
		<description><![CDATA[Tropo is excited to partner with Apigee on the Tropo API Explorer! The API Explorer allows more developers to explore, learn, and test Tropo&#8217;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, [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tropo.com/files/2012/01/weloveapis.jpeg"><img src="http://blog.tropo.com/files/2012/01/weloveapis-300x109.jpg" alt="" title="weloveapis" width="300" height="109" class="alignleft size-medium wp-image-5419" /></a></p>
<p><a href="http://tropo.com">Tropo</a> is excited to partner with <a href="http://apigee.com">Apigee</a> on the <a href="https://apigee.com/support6/embed/console/tropo">Tropo API Explorer</a>!  The API Explorer allows more developers to explore, learn, and test Tropo&#8217;s cloud communications APIs faster than ever before.</p>
<p>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.  </p>
<p>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.</p>
<p>Now you can use the Apigee API explorer to experiment with our <a href="https://www.tropo.com/docs/rest/rest_api.htm">REST API</a> without writing a single line of code! It is built with <a href="http://apigee.com/about/products/free">Apigee To-Go</a>, 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 <a href="https://apigee.com/support6/embed/console/tropo">full screen version</a>.</p>
<p><iframe src="https://apigee.com/support6/embed/console/tropo" width="100%" height="600"></iframe></p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/01/27/tropo-teams-with-apigee-on-api-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/01/27/tropo-teams-with-apigee-on-api-explorer/</feedburner:origLink></item>
		<item>
		<title>Tropo Drinkup San Francisco</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/cEACZMWfyBk/</link>
		<comments>http://blog.tropo.com/2012/01/25/tropo-drinkup-san-francisco/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 20:30:21 +0000</pubDate>
		<dc:creator>cmoe</dc:creator>
				<category><![CDATA[Tropo]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[drinkup]]></category>
		<category><![CDATA[happy hour]]></category>
		<category><![CDATA[San francisco]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5367</guid>
		<description><![CDATA[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&#8217;s resolutions with us at [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/01/10/palo-alto-startup-drinkup-wednesday-112/' rel='bookmark' title='Palo Alto Startup Drinkup Wednesday 1/12'>Palo Alto Startup Drinkup Wednesday 1/12</a></li>
<li><a href='http://blog.tropo.com/2011/02/25/south-beach-startup-drinkup-tonight/' rel='bookmark' title='South Beach Startup Drinkup Tonight!'>South Beach Startup Drinkup Tonight!</a></li>
<li><a href='http://blog.tropo.com/2011/01/27/philadelphia-startup-drinkup/' rel='bookmark' title='Philadelphia Startup Drinkup'>Philadelphia Startup Drinkup</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tropo.com/files/2012/01/Tropo-Drinkup-beers.jpg"><img class="alignleft size-medium wp-image-5368" title="Tropo Drinkup beers" src="http://blog.tropo.com/files/2012/01/Tropo-Drinkup-beers-300x201.jpg" alt="" width="300" height="201" /></a> Join us Friday January 27th for our Tropo Drinkup in San Francisco at our <a title="Tropo Headquarters Office" href="http://maps.google.com/maps?hl=en&amp;sugexp=pfwl&amp;tok=LhN6BqJsjntriV2sxHjBvg&amp;cp=25&amp;gs_id=2l&amp;xhr=t&amp;q=28+2nd+st+3rd+floor+sf+ca&amp;gs_upl=&amp;bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&amp;biw=1225&amp;bih=491&amp;um=1&amp;ie=UTF-8&amp;hq=&amp;hnear=0x808580629c61cef1:0x4c7ff6ad09f9e39,28+2nd+St,+San+Francisco,+CA+94104&amp;gl=us&amp;ei=flcfT4XOHYro2QXg1aWWDw&amp;sa=X&amp;oi=geocode_result&amp;ct=title&amp;resnum=1&amp;sqi=2&amp;ved=0CCEQ8gEwAA">SOMA headquarters office</a> and enjoy some complimentary drinks while entertained by future rockstars letting loose on our piano and guitars.</p>
<p>We like to get our happy hours on early so be ready to break some New Year&#8217;s resolutions with us at 3:58pm.  Yep, 3:58pm.  Because two minutes can make the world of a difference for your weekend.</p>
<p>End your work week early and shimmy by the Tropo office for some beers, bites and a lil&#8217; rock jam session if you are so inclined.</p>
<p>Tropo Drinkup San Francisco</p>
<p>When: Friday January 27th</p>
<p>Where: 28 2nd Street 3rd Floor San Francisco, CA 94123</p>
<p>Time: 3:58pm- 6:00pm</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/01/10/palo-alto-startup-drinkup-wednesday-112/' rel='bookmark' title='Palo Alto Startup Drinkup Wednesday 1/12'>Palo Alto Startup Drinkup Wednesday 1/12</a></li>
<li><a href='http://blog.tropo.com/2011/02/25/south-beach-startup-drinkup-tonight/' rel='bookmark' title='South Beach Startup Drinkup Tonight!'>South Beach Startup Drinkup Tonight!</a></li>
<li><a href='http://blog.tropo.com/2011/01/27/philadelphia-startup-drinkup/' rel='bookmark' title='Philadelphia Startup Drinkup'>Philadelphia Startup Drinkup</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/01/25/tropo-drinkup-san-francisco/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/01/25/tropo-drinkup-san-francisco/</feedburner:origLink></item>
		<item>
		<title>Tropo joins Startup World in 36 cities</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/w195g3Na-CI/</link>
		<comments>http://blog.tropo.com/2012/01/23/tropo-joins-startup-world-in-36-cities/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 01:26:41 +0000</pubDate>
		<dc:creator>Diggz</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[Startup World]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5308</guid>
		<description><![CDATA[Tropo loves startups. Why? Because entrepreneurs always think of new and innovative ways to use Tropo that we&#8217;ve never even dreamed. Since we launched Tropo in 2009, we&#8217;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 [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/05/06/tropo-joins-google-microsoft-yahoo-nasa-the-world-bank-for-random-hacks-of-kindness/' rel='bookmark' title='Tropo joins Google, Microsoft, Yahoo!, NASA &amp; The World Bank for Random Hacks of Kindness'>Tropo joins Google, Microsoft, Yahoo!, NASA &#038; The World Bank for Random Hacks of Kindness</a></li>
<li><a href='http://blog.tropo.com/2010/10/12/tropo-sponsors-startup-weekend-phoenix/' rel='bookmark' title='Tropo Sponsors Startup Weekend Phoenix!'>Tropo Sponsors Startup Weekend Phoenix!</a></li>
<li><a href='http://blog.tropo.com/2011/01/29/pitching-to-win-at-philly-startup-weekend/' rel='bookmark' title='Pitching to Win at Philly Startup Weekend'>Pitching to Win at Philly Startup Weekend</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tropo.com/files/2012/01/startupworld.jpg"><img class="alignright size-full wp-image-5356" title="startupworld" src="http://blog.tropo.com/files/2012/01/startupworld.jpg" alt="" width="302" height="96" /></a>Tropo loves startups.  Why?  Because entrepreneurs always think of new and innovative ways to use Tropo that we&#8217;ve never even dreamed.  Since we launched Tropo in 2009, we&#8217;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&#8230;even our newest <a title="Cristina Moe" href="http://twitter.com/cristinasf">community manager</a>&#8230;have come from startups of our own.  It&#8217;s part of our DNA.</p>
<p>That&#8217;s why we&#8217;re extremely pleased to announce that Tropo is partnering with <a title="Newspepper" href="http://newspepper.com/">Newspepper</a>, <a href="http://thenextweb.com/">TheNextWeb</a>, <a href="http://www.ventures.io/">i/o Ventures</a>, <a href="http://startupbus.com/">Startup Bus</a>, <a href="http://www.startupamericapartnership.org/">Startup America</a> (and a <a href="http://startupworld.tv/sponsors/">whole lot more</a>!) to launch <a href="http://startupworld.tv">Startup World</a>!</p>
<p>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 &#8220;world&#8217;s best startup&#8221;.</p>
<p style="text-align: center;"><a href="http://blog.tropo.com/files/2012/01/startupworld-map.jpg"><img class="aligncenter size-full wp-image-5357" title="startupworld-map" src="http://blog.tropo.com/files/2012/01/startupworld-map.jpg" alt="" width="516" height="236" /></a></p>
<p style="text-align: left;">We&#8217;ll be kicking off <a href="http://startupworld.eventbrite.com/">Startup World at a Launch Party</a> at i/o Ventures in San Francisco on Tuesday Jan 24th 2012.   Come join us for the fun and some awesome speakers including <a href="http://startupworld.tv/blog/">Sarah Lacy</a>!</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/05/06/tropo-joins-google-microsoft-yahoo-nasa-the-world-bank-for-random-hacks-of-kindness/' rel='bookmark' title='Tropo joins Google, Microsoft, Yahoo!, NASA &amp; The World Bank for Random Hacks of Kindness'>Tropo joins Google, Microsoft, Yahoo!, NASA &#038; The World Bank for Random Hacks of Kindness</a></li>
<li><a href='http://blog.tropo.com/2010/10/12/tropo-sponsors-startup-weekend-phoenix/' rel='bookmark' title='Tropo Sponsors Startup Weekend Phoenix!'>Tropo Sponsors Startup Weekend Phoenix!</a></li>
<li><a href='http://blog.tropo.com/2011/01/29/pitching-to-win-at-philly-startup-weekend/' rel='bookmark' title='Pitching to Win at Philly Startup Weekend'>Pitching to Win at Philly Startup Weekend</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/01/23/tropo-joins-startup-world-in-36-cities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/01/23/tropo-joins-startup-world-in-36-cities/</feedburner:origLink></item>
		<item>
		<title>Meet Phono – Tropo’s Web Phone</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/WETjMqASj4Y/</link>
		<comments>http://blog.tropo.com/2012/01/23/meet-phono-tropo-web-phone/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 22:22:09 +0000</pubDate>
		<dc:creator>cmatthieu</dc:creator>
				<category><![CDATA[Awesome]]></category>
		<category><![CDATA[mashups]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SourceCode]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[click to call]]></category>
		<category><![CDATA[phono]]></category>
		<category><![CDATA[scripting api]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[sip headers]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[web phone]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5310</guid>
		<description><![CDATA[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 [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/07/18/2-lines-of-code-to-enable-calling-1-phone-number-and-ringing-multiple-phone-numbers-like-google-voice/' rel='bookmark' title='2 Lines of Code To Enable Calling 1 Phone Number And Ringing Multiple Phone Numbers (like Google Voice)'>2 Lines of Code To Enable Calling 1 Phone Number And Ringing Multiple Phone Numbers (like Google Voice)</a></li>
<li><a href='http://blog.tropo.com/2011/02/17/how-to-build-a-voip-based-baby-monitor/' rel='bookmark' title='How to Build a VoIP-Based Baby Monitor'>How to Build a VoIP-Based Baby Monitor</a></li>
<li><a href='http://blog.tropo.com/2010/05/19/dial-multiple-phone-and-sip-numbers-first-to-answer-wins/' rel='bookmark' title='Dial Multiple Phone and SIP Numbers &amp; First to Answer Wins'>Dial Multiple Phone and SIP Numbers &#038; First to Answer Wins</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://phono.com"><img src="http://blog.tropo.com/files/2012/01/logo-home-big.png" alt="" title="Phono" width="120" height="153" class="alignleft size-full wp-image-5318" /></a>Have you heard about <a href="http://phono.com">Phono</a>, our open source Javascript Phone API project?  </p>
<p>Phono is a free HTML5 jQuery-based web phone that you can add to any web page to place or receive open <a href="http://en.wikipedia.org/wiki/Session_Initiation_Protocol">SIP-based</a> VoIP calls to/from any web browser (or iOS/Android mobile device using <a href="http://phono.com/mobile">Phono Mobile</a>)!  </p>
<p>Phono can be connected to <a href="http://tropo.com">Tropo</a> 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&#8217;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.</p>
<p>To make things even better, Phono and Tropo both support <strong>SIP headers</strong> 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 <a href="http://phono.com">phono.com</a>.  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.</p>
<p>Because we have had a few questions lately on this topic, I wanted to provide some sample code for both <a href="http://phono.com">Phono</a> and <a href="http://tropo.com">Tropo</a> 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.</p>
<p><a href="http://blog.tropo.com/files/2012/01/topher.local_phono3_sipheaders.html_.jpg"><img src="http://blog.tropo.com/files/2012/01/topher.local_phono3_sipheaders.html_.jpg" alt="" title="Phono Click-To-Call" width="400" height="90" class="aligncenter size-full wp-image-5348" /></a></p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
  &lt;head&gt;
    &lt;script src=&quot;http://code.jquery.com/jquery-1.4.2.min.js&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;http://s.phono.com/releases/0.3/jquery.phono.js&quot;&gt;&lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
	&lt;input id=&quot;phonenumber&quot; type=&quot;text&quot;&gt;
    &lt;input id=&quot;call&quot; type=&quot;button&quot; disabled=&quot;true&quot; value=&quot;Loading...&quot; /&gt;
    &lt;span id=&quot;status&quot;&gt;&lt;/span&gt;
    &lt;script&gt;
    $(document).ready(function(){
      var phono = $.phono({
        apiKey: &quot;your secret key&quot;,
        onReady: function() {
          $(&quot;#call&quot;).attr(&quot;disabled&quot;, false).val(&quot;Call&quot;);
        }
      });

      $(&quot;#call&quot;).click(function() {
        $(&quot;#call&quot;).attr(&quot;disabled&quot;, true).val(&quot;Busy&quot;);
        phono.phone.dial(&quot;app:9996182316&quot;, {
		  	headers: [
			             {
			               name:&quot;x-numbertodial&quot;,
			               value:$('#phonenumber').val()
			             }
			           ],
          onRing: function() {
            $(&quot;#status&quot;).html(&quot;Ringing&quot;);
          },
          onAnswer: function() {
            $(&quot;#status&quot;).html(&quot;Answered&quot;);
          },
          onHangup: function() {
            $(&quot;#call&quot;).attr(&quot;disabled&quot;, false).val(&quot;Call&quot;);
            $(&quot;#status&quot;).html(&quot;Hungup&quot;);
          }
        });
      });
    })
    &lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>You could write a Tropo transfer application using the <a href="https://www.tropo.com/docs/scripting/overview.htm">Scripting API</a> in one line of Ruby code that transfers the call to the phone number in the SIP header like this:</p>
<pre class="brush: ruby; title: ; notranslate">
transfer $currentCall.getHeader(&quot;x-numbertodial&quot;)
</pre>
<p>What if you wanted to add a timer that ends the call after 10 minutes like we do on <a href="http://phono.com">phono.com</a> 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.  </p>
<pre class="brush: ruby; title: ; notranslate">
require &quot;net/http&quot;

# 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 &quot;api.tropo.com&quot;

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

say &quot;hold please while we transfer your call.&quot;
transfer $currentCall.getHeader(&quot;x-numbertodial&quot;), :allowsignals =&gt; &quot;limitreached&quot;
say &quot;your limit has been reached.&quot;
</pre>
<p>That&#8217;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:</p>
<pre class="brush: ruby; title: ; notranslate">
phone = $currentCall.getHeader &quot;x-numbertodial&quot;

# 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 }
</pre>
<p>You could add this code immediately above your transfer and add a conditional statement that says something like this example:</p>
<pre class="brush: ruby; title: ; notranslate">
if block_call
  say &quot;calls to this area code are blocked.&quot;
else
  say &quot;hold please while we transfer your call.&quot;
  transfer phone, :allowsignals =&gt; &quot;limitreached&quot;
  say &quot;your limit has been reached.&quot;
end
</pre>
<p>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. </p>
<p>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:</p>
<pre class="brush: ruby; title: ; notranslate">
while $currentCall.isActive
  # Do Stuff
end
</pre>
<p>I think that should get you started!  You can now build your next-generation click-to-call application using <a href="http://phono.com">Phono</a> and <a href="http://tropo.com">Tropo</a>!  Please let us know how you are using Phono with your Tropo applications :)</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/07/18/2-lines-of-code-to-enable-calling-1-phone-number-and-ringing-multiple-phone-numbers-like-google-voice/' rel='bookmark' title='2 Lines of Code To Enable Calling 1 Phone Number And Ringing Multiple Phone Numbers (like Google Voice)'>2 Lines of Code To Enable Calling 1 Phone Number And Ringing Multiple Phone Numbers (like Google Voice)</a></li>
<li><a href='http://blog.tropo.com/2011/02/17/how-to-build-a-voip-based-baby-monitor/' rel='bookmark' title='How to Build a VoIP-Based Baby Monitor'>How to Build a VoIP-Based Baby Monitor</a></li>
<li><a href='http://blog.tropo.com/2010/05/19/dial-multiple-phone-and-sip-numbers-first-to-answer-wins/' rel='bookmark' title='Dial Multiple Phone and SIP Numbers &amp; First to Answer Wins'>Dial Multiple Phone and SIP Numbers &#038; First to Answer Wins</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/01/23/meet-phono-tropo-web-phone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/01/23/meet-phono-tropo-web-phone/</feedburner:origLink></item>
		<item>
		<title>Changes to Tropo Channel Support</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/Gx9swsFS_oc/</link>
		<comments>http://blog.tropo.com/2012/01/11/changes-to-tropo-channel-support/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 17:43:46 +0000</pubDate>
		<dc:creator>Adam Kalsey</dc:creator>
				<category><![CDATA[Tropo]]></category>
		<category><![CDATA[end of life]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[product management]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5243</guid>
		<description><![CDATA[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 [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/02/15/handling-both-regular-user-vs-casual-user-via-the-text-channel/' rel='bookmark' title='Handling regular users vs casual users via the text channel'>Handling regular users vs casual users via the text channel</a></li>
<li><a href='http://blog.tropo.com/2009/04/01/voxeo-announces-cobol-support-for-tropocom-voice-app-platform/' rel='bookmark' title='Voxeo announces COBOL support for Tropo.com voice app platform'>Voxeo announces COBOL support for Tropo.com voice app platform</a></li>
<li><a href='http://blog.tropo.com/2010/03/25/how-to-add-twitter-support-to-a-tropo-com-app-step-by-step/' rel='bookmark' title='How to Add Twitter Support to a Tropo.com App &#8211; Step by Step'>How to Add Twitter Support to a Tropo.com App &#8211; Step by Step</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>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. </p>
<p>Tropo will be deprecating two features at the end of this month.</p>
<ul>
<li><strong>Instant Messaging and Twitter</strong> &#8211; 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 <a href="http://blog.tropo.com/?page_id=5239">here</a>.
</li>
<li><strong>Skype numbers</strong> &#8211; 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&#8217;ve even embedded Phono so you can dial your applications with one click. Read more about this change <a href="http://blog.tropo.com/?page_id=5241">here</a>.
</li>
</ul>
<p>Changing and shaping the future of communications takes a lot of focus, and sometimes requires us to reassess the past. We&#8217;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. </p>
<p>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.</p>
<p>Stay tuned!</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/02/15/handling-both-regular-user-vs-casual-user-via-the-text-channel/' rel='bookmark' title='Handling regular users vs casual users via the text channel'>Handling regular users vs casual users via the text channel</a></li>
<li><a href='http://blog.tropo.com/2009/04/01/voxeo-announces-cobol-support-for-tropocom-voice-app-platform/' rel='bookmark' title='Voxeo announces COBOL support for Tropo.com voice app platform'>Voxeo announces COBOL support for Tropo.com voice app platform</a></li>
<li><a href='http://blog.tropo.com/2010/03/25/how-to-add-twitter-support-to-a-tropo-com-app-step-by-step/' rel='bookmark' title='How to Add Twitter Support to a Tropo.com App &#8211; Step by Step'>How to Add Twitter Support to a Tropo.com App &#8211; Step by Step</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/01/11/changes-to-tropo-channel-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/01/11/changes-to-tropo-channel-support/</feedburner:origLink></item>
		<item>
		<title>Sending SMS to your Constant Contact list</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/gQVExC8gjIE/</link>
		<comments>http://blog.tropo.com/2011/12/27/sending-sms-to-your-constant-contact-list/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 18:34:49 +0000</pubDate>
		<dc:creator>Adam Nutt</dc:creator>
				<category><![CDATA[Tropo]]></category>
		<category><![CDATA[constant contact]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[third-party tools]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5045</guid>
		<description><![CDATA[One of the nice things about Tropo is that it does a lot of the heavy lifting for you, letting you add amazing features to existing products. One very popular contact manager is Constant Contact. Since your contacts must opt-in to this service, combining this with Tropo provides you a nice way to keep in [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2009/03/25/great-tropo-mashup-call-in-and-query-the-imdb-top-250-movies-list/' rel='bookmark' title='Great Tropo mashup &#8211; call in and query the IMDB Top 250 movies list'>Great Tropo mashup &#8211; call in and query the IMDB Top 250 movies list</a></li>
<li><a href='http://blog.tropo.com/2009/11/11/thomas-howe-introduces-the-mobile-mail-list-mashup-for-tropo-with-screencasts-source-code/' rel='bookmark' title='Thomas Howe introduces the Mobile Mail List mashup for Tropo with screencasts, source code'>Thomas Howe introduces the Mobile Mail List mashup for Tropo with screencasts, source code</a></li>
<li><a href='http://blog.tropo.com/2010/09/10/how-to-sending-an-sms-using-webapi/' rel='bookmark' title='How-To:  Sending an SMS using WebAPI'>How-To:  Sending an SMS using WebAPI</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>One of the nice things about Tropo is that it does a lot of the heavy lifting for you, letting you add amazing features to existing products. One very popular contact manager is <a title="Constant Contact" href="http://www.constantcontact.com/index.jsp" target="_blank">Constant Contact</a>. Since your contacts must opt-in to this service, combining this with Tropo provides you a nice way to keep in touch with them beyond simple email.</p>
<p><center><a href="http://www.constantcontact.com/index.jsp" target="_blank"><img class="alignnone size-full wp-image-5065" src="http://blog.tropo.com/files/2011/12/ctct_logo.png" alt="" width="287" height="28" /></a></center></p>
<p>In this post I&#8217;ll describe how I created a <a title="Python" href="http://www.python.org/" target="_blank">Python</a> script that retrieves your contact list from CC and sends them a text message using Tropo. I&#8217;m using a hosted file located on the cloud at <a title="Tropo" href="http://www.tropo.com" target="_blank">Tropo.com</a> for this.</p>
<p><strong>What you&#8217;ll need</strong>:</p>
<ul>
<li><em>Python</em></li>
<li><em>Your Constant Contact API key (from <a href="http://developer.constantcontact.com/" target="_blank">http://developer.constantcontact.com/</a>)</em></li>
<li><em>Your Constant Contact username and password</em></li>
<li><em>A Tropo account</em></li>
</ul>
<p>Let&#8217;s start with the easy part, making a hosted Tropo application to send our users a message.</p>
<ol>
<li>Log in to <a href="http://tropo.com">tropo.com</a></li>
<li>From &#8220;Your Applications&#8221;, click &#8220;Create New Application&#8221;</li>
<li>Click &#8220;Tropo Scripting&#8221;</li>
<li>Give your application a name</li>
<li>For the URL, click &#8220;Hosted File&#8221; and then &#8220;Create a new hosted file for this application&#8221;</li>
<li>Fill in the filename (in this example I&#8217;m going to use JavaScript on the Tropo side, so I chose test.js)</li>
<li>Then just add the following 2 lines of code</li>
</ol>
<pre class="brush: jscript; title: ; notranslate">
call('+' + numberToDial, {
    network:&quot;SMS&quot;});
say(msg);
</pre>
<p>Then just click &#8220;Create File&#8221; and then &#8220;Create Application&#8221;. Once our magic monkey finishes creating your application, you will see the settings page for your application.</p>
<p>Next step is to add a phone number to this application. Click &#8220;Add a new phone number&#8221; and then choose your area code (<em>Tropo only supports SMS from US and Canadian numbers at this time</em>), then click the plus symbol to add this phone number to the application. Once your have completed these steps you&#8217;ll be taken back to the application settings page.</p>
<p>That&#8217;s almost all we need from Tropo. Let&#8217;s take a look at the Python code:</p>
<pre class="brush: python; title: ; notranslate">
import urllib
import urllib2
from xml.dom import minidom
cc_url = 'https://api.constantcontact.com/ws/customers/{user_name}/contacts' cc_api_key = '{paste_your_api_key_inbetween_the_quotes}'
cc_username = '{user_name}'
cc_password = '{password}'

TROPO_URL = 'http://api.tropo.com/1.0/sessions?action=create&amp;token={The Outbound Messaging Token goes here}'
SMS_MSG = 'Wishing you a happy holidays! - From the Tropo Team'
</pre>
<p>This first part, shown above, sets up our URLs &#8211; one for Constant Contact and one for Tropo.  SMS_MSG will contain the content used as the body of your message.</pre>
<pre class="brush: python; title: ; notranslate">
#CC uses Basic Authentication for their API. This code sets up a password manager to take care of that for us
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, cc_url, cc_api_key + '%' + cc_username, cc_password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler) urllib2.install_opener(opener)
</pre>
<p>There's some heavy lifting going on here! Constant Contact is configured to require Basic Authentication for their API. Python provides us with a really nice password manager so we don't have to worry about encoding this into our HTTP request.</pre>
<pre class="brush: python; title: ; notranslate">
pagehandle = urllib2.urlopen(cc_url)
data = pagehandle.read()
dom = minidom.parseString(data)
entry_node = dom.getElementsByTagName(&quot;entry&quot;)
</pre>
<p>This code above sends a request to Constant Contact and parses the XML result. Each of your contacts is stored as an Entry in the XML data. What we want to do is loop over each one of these entries to get the unique ID:</p>
<pre class="brush: python; title: ; notranslate">
for entry in entry_node:
	id = entry.getElementsByTagName(&quot;id&quot;)
	id = id[0].firstChild.nodeValue
	pagehandle = urllib2.urlopen(cc_url + '/' + id.rsplit('/', 1)[1])
	data = pagehandle.read()
	dom = minidom.parseString(data)
	contact_node = dom.getElementsByTagName(&quot;Contact&quot;)
</pre>
<p>Now we've iterated over all of our entries, and requested for the Constant Contact API to return the detailed record for each Contact. The field that we'll use to send our contacts an SMS is defined as "HomePhone" in the code below:</p>
<pre class="brush: python; title: ; notranslate">
	for contact in contact_node:
		phone_num = contact.getElementsByTagName(&quot;HomePhone&quot;)
		phone_num = phone_num[0].firstChild.nodeValue
		url = TROPO_URL + '&amp;numberToDial=' + phone_num + '&amp;msg=' + urllib.quote(SMS_MSG)
		page = urllib2.urlopen(url)
		data = page.read()
</pre>
<p>Now we've parsed out the phone number for our users and requested that Tropo send them our season's greetings!</p>
<p><strong>Note</strong>: If your phone numbers are not in a 10 digit format, this request will fail.<br />
<strong>Note 2:</strong> The outbound messaging token can be found under the settings for your application.</p>
<p>This is something that could clearly be extended to a wide range of things: running specials, thanking customers, really the possibilities are only limited by your imagination. Also, if you wanted to have Tropo talk to the person instead of send a text message, just make the first line of your hosted application look like this:</p>
<pre class="brush: jscript; title: ; notranslate">
call('+' + numberToDial);
</pre>
<p>To run this, take the script, edit it with your information and run it from a terminal window:
<code>python my_script_name.py</code></p>
<p>And here's the code in full:</p>
<pre class="brush: python; title: ; notranslate">
import urllib
import urllib2
from xml.dom import minidom

cc_url = 'https://api.constantcontact.com/ws/customers/{user_name}/contacts' cc_api_key = '{paste_your_api_key_inbetween_the_quotes}'
cc_username = '{user_name}'
cc_password = '{password}'

TROPO_URL = 'http://api.tropo.com/1.0/sessions?action=create&amp;token={The Outbound Messaging Token goes here}'
SMS_MSG = 'Wishing you a happy holidays! - From the Tropo Team'

#CC uses Basic Authentication for their API. This code sets up a password manager to take care of that for us
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, cc_url, cc_api_key + '%' + cc_username, cc_password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler) urllib2.install_opener(opener)

pagehandle = urllib2.urlopen(cc_url)
data = pagehandle.read()
dom = minidom.parseString(data)
entry_node = dom.getElementsByTagName(&quot;entry&quot;)
for entry in entry_node:
	id = entry.getElementsByTagName(&quot;id&quot;)
	id = id[0].firstChild.nodeValue
	pagehandle = urllib2.urlopen(cc_url + '/' + id.rsplit('/', 1)[1])
	data = pagehandle.read()
	dom = minidom.parseString(data)
	contact_node = dom.getElementsByTagName(&quot;Contact&quot;)
	for contact in contact_node:
		phone_num = contact.getElementsByTagName(&quot;HomePhone&quot;)
		phone_num = phone_num[0].firstChild.nodeValue
		url = TROPO_URL + '&amp;numberToDial=' + phone_num + '&amp;msg=' + urllib.quote(SMS_MSG)
		page = urllib2.urlopen(url)
		data = page.read()
</pre>
<p>Questions or comments?  Post to our <a href="http://tropo.com/forums">forums</a> or send us an email to <a href="mailto:support@tropo.com">support@tropo.com</a>.</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2009/03/25/great-tropo-mashup-call-in-and-query-the-imdb-top-250-movies-list/' rel='bookmark' title='Great Tropo mashup &#8211; call in and query the IMDB Top 250 movies list'>Great Tropo mashup &#8211; call in and query the IMDB Top 250 movies list</a></li>
<li><a href='http://blog.tropo.com/2009/11/11/thomas-howe-introduces-the-mobile-mail-list-mashup-for-tropo-with-screencasts-source-code/' rel='bookmark' title='Thomas Howe introduces the Mobile Mail List mashup for Tropo with screencasts, source code'>Thomas Howe introduces the Mobile Mail List mashup for Tropo with screencasts, source code</a></li>
<li><a href='http://blog.tropo.com/2010/09/10/how-to-sending-an-sms-using-webapi/' rel='bookmark' title='How-To:  Sending an SMS using WebAPI'>How-To:  Sending an SMS using WebAPI</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2011/12/27/sending-sms-to-your-constant-contact-list/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2011/12/27/sending-sms-to-your-constant-contact-list/</feedburner:origLink></item>
		<item>
		<title>Node.JS Magic 8 Ball Voice App</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/c8tY8rIQTSM/</link>
		<comments>http://blog.tropo.com/2011/12/23/node-js-magic-8-ball-voice-app/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 19:23:04 +0000</pubDate>
		<dc:creator>cmatthieu</dc:creator>
				<category><![CDATA[Awesome]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web API]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[magic 8 ball]]></category>
		<category><![CDATA[nodester]]></category>
		<category><![CDATA[webapi]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5210</guid>
		<description><![CDATA[Remember the Magic 8 Ball game from yesteryear? How would you like to have the game with you in your pocket when difficult answers are required. I built this Magic 8 Ball game using Node.JS and the Tropo WebAPI. If you roll the array up to a single line of code, you&#8217;re only looking at [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2010/10/01/use-node-js-javascript-to-write-your-tropo-apps/' rel='bookmark' title='Use Node.js &amp; Javascript to Write Your Tropo Apps'>Use Node.js &#038; Javascript to Write Your Tropo Apps</a></li>
<li><a href='http://blog.tropo.com/2010/12/14/naked-node-js/' rel='bookmark' title='Naked Node.JS'>Naked Node.JS</a></li>
<li><a href='http://blog.tropo.com/2011/06/28/telephony-black-magic-with-tropo-node-js-and-redis/' rel='bookmark' title='Telephony Black Magic with Tropo, Node.js and Redis'>Telephony Black Magic with Tropo, Node.js and Redis</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tropo.com/files/2011/12/magic8ball.jpg"><img src="http://blog.tropo.com/files/2011/12/magic8ball.jpg" alt="" title="magic8ball" width="400" height="400" class="alignleft size-full wp-image-5211" /></a> Remember the Magic 8 Ball game from yesteryear?  </p>
<p>How would you like to have the game with you in your pocket when difficult answers are required.</p>
<p>I built this Magic 8 Ball game using <a href="http://nodejs.org">Node.JS</a> and the <a href="https://www.tropo.com/docs/webapi/new_tropo_web_api_overview.htm">Tropo WebAPI</a>.  If you roll the array up to a single line of code, you&#8217;re only looking at a 25-line Node.JS application!</p>
<p>You can call this application at <strong>415-889-8684</strong>!</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/Qqok884axLM" frameborder="0" allowfullscreen></iframe></p>
<p>Here is the Node.JS source code that runs the application.</p>
<pre class="brush: jscript; title: ; notranslate">
var http = require('http');
var tropowebapi = require('tropo-webapi');

// http://en.wikipedia.org/wiki/Magic_8-ball
var answers = [
&quot;It is certain&quot;,
&quot;It is decidedly so&quot;,
&quot;Without a doubt&quot;,
&quot;Yes – definitely&quot;,
&quot;You may rely on it&quot;,
&quot;As I see it, yes&quot;,
&quot;Most likely&quot;,
&quot;Outlook good&quot;,
&quot;Signs point to yes&quot;,
&quot;Yes&quot;,
&quot;Reply hazy, try again&quot;,
&quot;Ask again later&quot;,
&quot;Better not tell you now&quot;,
&quot;Cannot predict now&quot;,
&quot;Concentrate and ask again&quot;,
&quot;Don't count on it&quot;,
&quot;My reply is no&quot;,
&quot;My sources say no&quot;,
&quot;Outlook not so good&quot;,
&quot;Very doubtful&quot;
];

http.createServer(function (req, res) {

	// Create a new instance of the TropoWebAPI object.
	var tropo = new tropowebapi.TropoWebAPI(); 	
	var answer = answers[Math.floor(Math.random()*answers.length)];

	tropo.say(&quot;Welcome to the tropo node J S magic 8 ball.&quot;);

	var say = new Say(&quot;Ask your question now after the beep.&quot;);
    var choices = new Choices(null, null, &quot;#&quot;);

    // Action classes can be passed as parameters to TropoWebAPI class methods.
    // use the record method https://www.tropo.com/docs/webapi/record.htm
    tropo.record(3, false, null, choices, &quot;audio/wav&quot;, 5, 60, null, null, &quot;recording&quot;, null, say, 5, null, &quot;http://example.com/tropo&quot;, null, null);

    tropo.say(answer);

	tropo.say(&quot;Please call back to play again!&quot;);

    res.writeHead(200, {'Content-Type': 'application/json'}); 
    res.end(tropowebapi.TropoJSON(tropo));

}).listen(13188);
</pre>
<p>Be careful what you ask for&#8230;</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2010/10/01/use-node-js-javascript-to-write-your-tropo-apps/' rel='bookmark' title='Use Node.js &amp; Javascript to Write Your Tropo Apps'>Use Node.js &#038; Javascript to Write Your Tropo Apps</a></li>
<li><a href='http://blog.tropo.com/2010/12/14/naked-node-js/' rel='bookmark' title='Naked Node.JS'>Naked Node.JS</a></li>
<li><a href='http://blog.tropo.com/2011/06/28/telephony-black-magic-with-tropo-node-js-and-redis/' rel='bookmark' title='Telephony Black Magic with Tropo, Node.js and Redis'>Telephony Black Magic with Tropo, Node.js and Redis</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2011/12/23/node-js-magic-8-ball-voice-app/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2011/12/23/node-js-magic-8-ball-voice-app/</feedburner:origLink></item>
		<item>
		<title>Dial and SMS your APIs with Tropo</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/9JWqJ1OX9cs/</link>
		<comments>http://blog.tropo.com/2011/12/22/dial-and-sms-your-apis-with-tropo/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 23:22:17 +0000</pubDate>
		<dc:creator>cmatthieu</dc:creator>
				<category><![CDATA[Awesome]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Multi-channel]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[Screencasts]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[SourceCode]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[nodester]]></category>
		<category><![CDATA[voice]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5191</guid>
		<description><![CDATA[The number of APIs available are increasing by the day and so is the popularity of Node.JS, the server-side event-driven javascript framework. This got me thinking&#8230; How cool would it be to be able to call or sms an API with your phone using Node.JS? This is a pretty simple thing to do with Tropo [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/12/23/node-js-magic-8-ball-voice-app/' rel='bookmark' title='Node.JS Magic 8 Ball Voice App'>Node.JS Magic 8 Ball Voice App</a></li>
<li><a href='http://blog.tropo.com/2010/12/14/naked-node-js/' rel='bookmark' title='Naked Node.JS'>Naked Node.JS</a></li>
<li><a href='http://blog.tropo.com/2010/10/01/use-node-js-javascript-to-write-your-tropo-apps/' rel='bookmark' title='Use Node.js &amp; Javascript to Write Your Tropo Apps'>Use Node.js &#038; Javascript to Write Your Tropo Apps</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The number of APIs available are increasing by the day and so is the popularity of <a href="http://nodejs.org">Node.JS</a>, the server-side  event-driven javascript framework.  This got me thinking&#8230; How cool would it be to be able to call or sms an API with your phone using Node.JS?  </p>
<p>This is a pretty simple thing to do with <a href="http://tropo.com">Tropo</a> and <a href="http://nodester.com">Nodester</a>.  Tropo has an <a href="https://github.com/tropo/tropo-webapi-node">NPM module</a> available for adding Voice, SMS, and Instant Messaging to Node.JS applications and Nodester has REST APIs available to report on the status of the platform.  25 lines of Node.JS code later, we now have an Node.JS application using the Tropo API to dial and sms the API to retrieve the status of the platform.  </p>
<p>Here&#8217;s the phone number: <strong>(480) 428-8723</strong> to call or SMS.</p>
<p><iframe width="640" height="480" src="http://www.youtube.com/embed/NZtXWSVczI4" frameborder="0" allowfullscreen></iframe></p>
<p>Install the <a href="https://github.com/tropo/tropo-webapi-node">Tropo WebAPI</a> and <a href="http://twitter.com/mikeal">Mikeal Rogers&#8217;</a> <a href="https://github.com/mikeal/request">Request</a> NPM modules:</p>
<pre class="brush: jscript; title: ; notranslate">
npm install tropo-webapi -g
npm install request -g
</pre>
<p>Run this code on localhost or deploy it to a Node.JS hosting service like <a href="http://nodester.com">Nodester</a>.</p>
<pre class="brush: jscript; title: ; notranslate">
var http = require('http');
var tropowebapi = require('tropo-webapi');
var request = require('request');

http.createServer(function (req, res) {

	// Create a new instance of the TropoWebAPI object.
	var tropo = new tropowebapi.TropoWebAPI(); 	

	// Fetch Nodester status -&gt; http://api.nodester.com/status
	// returns {&quot;status&quot;:&quot;up&quot;,&quot;appshosted&quot;:2878,&quot;appsrunning&quot;:1759}
	request('http://api.nodester.com/status', function (error, response, body) {
	     if (!error &amp;&amp; response.statusCode == 200) {

	       // console.log(body) // Print status
	       var statusreq = JSON.parse(body);

	       tropo.say('nodester is ' + statusreq[&quot;status&quot;] + ' and hosting ' + statusreq[&quot;appshosted&quot;] + ' applications with '+ statusreq[&quot;appsrunning&quot;] + ' running at the moment ');

	       res.writeHead(200, {'Content-Type': 'application/json'}); 
           res.end(tropowebapi.TropoJSON(tropo));
	     }
	   })

}).listen(13151);
</pre>
<p>One of the really cool things about the <a href="http://tropo.com">Tropo</a> API is that you can write your app one time and it automatically runs on multiple communications channels such as: Voice, SMS, and Instant Message.</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/12/23/node-js-magic-8-ball-voice-app/' rel='bookmark' title='Node.JS Magic 8 Ball Voice App'>Node.JS Magic 8 Ball Voice App</a></li>
<li><a href='http://blog.tropo.com/2010/12/14/naked-node-js/' rel='bookmark' title='Naked Node.JS'>Naked Node.JS</a></li>
<li><a href='http://blog.tropo.com/2010/10/01/use-node-js-javascript-to-write-your-tropo-apps/' rel='bookmark' title='Use Node.js &amp; Javascript to Write Your Tropo Apps'>Use Node.js &#038; Javascript to Write Your Tropo Apps</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2011/12/22/dial-and-sms-your-apis-with-tropo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2011/12/22/dial-and-sms-your-apis-with-tropo/</feedburner:origLink></item>
		<item>
		<title>Voice Texting With Tropo Speech &amp; SMS Technology</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/dLcskVmhDI0/</link>
		<comments>http://blog.tropo.com/2011/12/21/voice-texting-with-tropo-speech-sms-technology/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 00:56:57 +0000</pubDate>
		<dc:creator>cmatthieu</dc:creator>
				<category><![CDATA[Awesome]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[fred wilson]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[voice texting]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5172</guid>
		<description><![CDATA[We all agree that texting while driving is very dangerous, right? Fred Wilson, VC and principal of Union Square Ventures thinks so too. He recently wrote a blog post that starts like this: &#8220;As a parent of two young adult drivers and a third soon to hit the road, nothing scares me more than texting [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/08/25/voice-board-and-group-sms-for-burning-man/' rel='bookmark' title='Voice Board and Group SMS for Burning Man'>Voice Board and Group SMS for Burning Man</a></li>
<li><a href='http://blog.tropo.com/2011/02/27/how-to-build-a-reminder-service-using-tropo-and-ruby-on-rails/' rel='bookmark' title='How to Build a Reminder Service Using Tropo and Ruby on Rails'>How to Build a Reminder Service Using Tropo and Ruby on Rails</a></li>
<li><a href='http://blog.tropo.com/2011/02/21/send-a-fax-with-your-voice/' rel='bookmark' title='Send a Fax with your Voice!'>Send a Fax with your Voice!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tropo.com/files/2011/12/drivingtext.jpg"><img src="http://blog.tropo.com/files/2011/12/drivingtext-300x300.jpg" alt="" title="AA017949" width="300" height="300" class="alignleft size-medium wp-image-5173" /></a>We all agree that texting while driving is very dangerous, right?  <a href="http://www.avc.com/">Fred Wilson</a>, VC and principal of <a href="http://www.unionsquareventures.com/">Union Square Ventures</a> thinks so too.  He recently wrote a <a href="http://www.avc.com/a_vc/2011/07/voice-texting.html">blog post</a> that starts like this:</p>
<blockquote><p>&#8220;As a parent of two young adult drivers and a third soon to hit the road, nothing scares me more than texting while driving.&#8221;</p></blockquote>
<p>Fred continued his <a href="http://www.avc.com/a_vc/2011/07/voice-texting.html">blog post</a> envisioning a Voice Texting application as follows:</p>
<blockquote><p>&#8220;Being an engineer at heart and by training, I&#8217;ve been looking for a solution to the problem. I know that the buzz of the phone and the unread/unresponded message is like a drug to many and that the best solution would be a &#8220;hands free&#8221; way to read and respond. And the bluetooth/hands free voice solution works so well on most cars and most phones now, so why can&#8217;t we do the same with texting?&#8221;</p></blockquote>
<p>Having two kids of my own (1 already driving and 1 studying for a drivers permit) and having access to the <a href="http://tropo.com">Tropo</a> API and platform, I felt compelled to build a quick Voice Texting application to share with Fred Wilson!  Here is what Fred had to say upon me sharing it with him&#8230;</p>
<p><a href="http://blog.tropo.com/files/2011/12/A-VC_-Voice-Texting.jpg"><img src="http://blog.tropo.com/files/2011/12/A-VC_-Voice-Texting.jpg" alt="" title="A VC_ Voice Texting" width="603" height="135" class="aligncenter size-full wp-image-5180" /></a></p>
<p>Here is how it works:</p>
<p>To send a text, call <strong>(415) 349-3120</strong> and using <a href="http://tropo.com">Tropo</a> speech recognition say the phone number that you would like to text and then speak your message.  Tropo then transcribes the message and sends your text message to phone number you spoke without taking your eyes or hands off the road.</p>
<p><strong>Disclaimer</strong>: We are not promoting texting while driving even with the proper tools that would keep your eyes on the road such as a bluetooth earpiece and autodial features.</p>
<p>The source code for this project is written in Ruby and open sourced on <a href="https://github.com/chrismatthieu/voicesms">GitHub</a> in case anyone would like to extend it or perhaps even create a new business around this idea and have a head start!  Here&#8217;s a video of me demonstrating the technology in action:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/JaoR_GUKR9Q" frameborder="0" allowfullscreen></iframe></p>
<p>Drive safely!</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/08/25/voice-board-and-group-sms-for-burning-man/' rel='bookmark' title='Voice Board and Group SMS for Burning Man'>Voice Board and Group SMS for Burning Man</a></li>
<li><a href='http://blog.tropo.com/2011/02/27/how-to-build-a-reminder-service-using-tropo-and-ruby-on-rails/' rel='bookmark' title='How to Build a Reminder Service Using Tropo and Ruby on Rails'>How to Build a Reminder Service Using Tropo and Ruby on Rails</a></li>
<li><a href='http://blog.tropo.com/2011/02/21/send-a-fax-with-your-voice/' rel='bookmark' title='Send a Fax with your Voice!'>Send a Fax with your Voice!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2011/12/21/voice-texting-with-tropo-speech-sms-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2011/12/21/voice-texting-with-tropo-speech-sms-technology/</feedburner:origLink></item>
	</channel>
</rss>

