<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Adam's Continuity at BlackAcid &#187; twilio</title>
	<atom:link href="http://blogs.blackacid.org/tag/twilio/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.blackacid.org</link>
	<description>Experiments in Real Time</description>
	<lastBuildDate>Tue, 27 Jan 2009 23:24:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Twilio Emulator</title>
		<link>http://blogs.blackacid.org/2009/01/24/twilio-emulator/</link>
		<comments>http://blogs.blackacid.org/2009/01/24/twilio-emulator/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 19:50:59 +0000</pubDate>
		<dc:creator>aballai</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[twilio]]></category>

		<guid isPermaLink="false">http://blogs.blackacid.org/2009/01/24/twilio-emulator/</guid>
		<description><![CDATA[So I&#8217;ve been putting this off for the last month. I&#8217;ve written loggers, done the manual way, etc. Instead of starting my second private project with twilio, I decided while in the shower I needed to do this before I &#8230; <a href="http://blogs.blackacid.org/2009/01/24/twilio-emulator/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been putting this off for the last month.  I&#8217;ve written loggers, done the manual way, etc.  Instead of starting my second private project with twilio, I decided while in the shower I needed to do this before I start.  After about an hour, I&#8217;ve uploaded the start of it to my github profile, first repo to try it out too!  Anyways, feel free to try it out and not burn any trial minutes or pay minutes (like myself) while developing your phone app.  There are a number of bugs that I have not taken care of, but I&#8217;m not done working on it this weekend.  And yes, not all nodes are implemented, but hopefully by the end of the day we have a nice pretty command line with proper tag validation and exception handling.<br />
Below are the links to the repo.<br />
<a href="http://github.com/minddog/twilio-emulator/tree/master">GitHub Master</a><br />
<a href="git://github.com/minddog/twilio-emulator.git">Public Clone URL</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.blackacid.org/2009/01/24/twilio-emulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building an IVR with Twilio</title>
		<link>http://blogs.blackacid.org/2008/12/10/building-an-ivr-with-twilio/</link>
		<comments>http://blogs.blackacid.org/2008/12/10/building-an-ivr-with-twilio/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 05:52:25 +0000</pubDate>
		<dc:creator>aballai</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[ivr]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[twilio]]></category>

		<guid isPermaLink="false">http://blogs.blackacid.org/?p=28</guid>
		<description><![CDATA[Developing an IVR can immediately be a daunting task if you have not had any experience doing so before. To simplify it, Twilio.com came up with a solution that takes the complicated choices in technology away from the project. You &#8230; <a href="http://blogs.blackacid.org/2008/12/10/building-an-ivr-with-twilio/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Developing an IVR can immediately be a daunting task if you have not had any experience doing so before.  To simplify it, <a href="http://twilio.com">Twilio.com</a> came up with a solution that takes the complicated choices in technology away from the project.  You will immediately start to think about your call system instead of which text-to-speech solution should we go with, which software pbx technology to implement, how much will our phone costs be, can we afford it?  Wait, what about multi-lingual call handling?  Don&#8217;t get me wrong, I like to build systems, asterisk is quite fun to get dirty with, but you can&#8217;t do both and have immediate results.  <div id="attachment_29" class="wp-caption alignleft" style="width: 160px"><img src="http://blogs.blackacid.org/wp-content/uploads/2008/12/photo-150x150.jpg" alt="A glimpse at a call diagram" title="IVR Design" width="150" height="150" class="size-thumbnail wp-image-29" /><p class="wp-caption-text">A glimpse at a call diagram</p></div> So after whiteboarding your idea, you want to start out with a menu system.  I&#8217;d recommend splitting up the greeting from your initial menu.  For example in TwiML, do a call redirect from the greeting to your menu.</p>
<ol class="codelist">
<li class="tab0 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="font-weight: bold; color: black;">?&gt;</span></span></code></li>
<li class="tab0 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Response<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 even"><code>Welcome to Hello IVR.</code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Redirect<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 odd"><code>http://example.com/voice/hello/</code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Redirect<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab0 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Response<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://blogs.blackacid.org/code/ivr-twilio/welcome.xml">welcome.xml</a></li>
</ol>
<p>Menu&#8217;s should be simple, they should also conform to the same usage standard through every call screen.</p>
<p>Some common dial keys that have been recommended by others are:</p>
<ul>
<li>* &#8211; Repeat</li>
<li># &#8211; Go back</li>
<li>7 &#8211; Previous</li>
<li>9 &#8211; Next</li>
<li>0 &#8211; Operator</li>
</ul>
<p>Also, when asking for user selection, keep the number of choices to 5.  Have them enter 9 for more options.  With menu&#8217;s always make sure to gather input at anytime to allow quick navigation for experienced phone users.  Here&#8217;s an example of a call menu with TwiML.</p>
<ol class="codelist">
<li class="tab0 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="font-weight: bold; color: black;">?&gt;</span></span></code></li>
<li class="tab0 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Response<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Gather</span><br />
</span</code></li>
<li class="tab4 even"><code>numDigits=&quot;1&quot;</code></li>
<li class="tab4 odd"><code>method=&quot;GET&quot;&gt;</code></li>
<li class="tab4 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab6 odd"><code>Sales, press 1.</code></li>
<li class="tab4 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab6 even"><code>Support, press 2.</code></li>
<li class="tab4 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab6 odd"><code>Frontdesk, press 3.</code></li>
<li class="tab4 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab6 even"><code>For more options, press 9.</code></li>
<li class="tab4 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab6 odd"><code>For the operator, press 0.</code></li>
<li class="tab4 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab6 even"><code>To hear the options again, please stay on the line.</code></li>
<li class="tab4 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Gather<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Pause</span> <span style="font-weight: bold; color: black;">/&gt;</span></span></code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Redirect<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 odd"><code>http://example.com/voice/menu/</code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Redirect<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab0 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Response<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://blogs.blackacid.org/code/ivr-twilio/menu.xml">menu.xml</a></li>
</ol>
<p>When you want to build a search interface into your IVR, you need to make it simple, but also make sure you accept all input and handle all operations normally.  People really want to press 0 when it doesn't work.  Additionally, you need to keep track of the number of search failures and offer a solution.  In most cases, a dial out to a human will suffice.  In the case of no man power, I recommend a voicemail using TwiML's record tags.  Here's an example search interface:</p>
<ol class="codelist">
<li class="tab0 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="font-weight: bold; color: black;">?&gt;</span></span></code></li>
<li class="tab0 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Response<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Gather</span><br />
</span</code></li>
<li class="tab4 even"><code>method=&quot;GET&quot;</code></li>
<li class="tab4 odd"><code>numDigits=&quot;3&quot;</code></li>
<li class="tab4 even"><code>finishOnKey=&quot;&quot;</code></li>
<li class="tab4 odd"><code>timeout=&quot;5&quot;</code></li>
<li class="tab4 even"><code>action=&quot;http://example.com/voice/search/?failures=0&quot;&gt;</code></li>
<li class="tab4 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab6 even"><code>Please enter the first three letters of what you are looking for.</code></li>
<li class="tab4 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Gather<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Redirect<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 even"><code>http://search.earth911.com/voice/what/?failures=0</code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Redirect<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab0 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Response<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="odd">&nbsp;</li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://blogs.blackacid.org/code/ivr-twilio/search.xml">search.xml</a></li>
</ol>
<p>When you have too much data, too little structure, and need to tell the phone user a book, don't.  Give them options, a details menu is a good thing.  If you provide information such as phone numbers, add an option to redirect the call.  If you have related information or you are nested one level deep in a list, offer the option to go directly to the next item.  It's important to provide this level of navigation as it will save them time and you money on your minutes.</p>
<p>Voicemail systems are not complicated, but are difficult to maintain.  Fortunately, for us we don't have to worry about that, we just want to send the recorded message to the right dept.  Handle your voicemail successes &#038; failures accordingly.  Have the user try again if the voicemail fails and always provide a fail-safe redirect so that they can try something else if they can't leave a voicemail at that time.</p>
<ol class="codelist">
<li class="tab0 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="font-weight: bold; color: black;">?&gt;</span></span></code></li>
<li class="tab0 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Response<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 even"><code>Leave your name, company, and your phone number to best reach you.</code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 odd"><code>Press the star key when finished.</code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Record</span><br />
</span</code></li>
<li class="tab4 even"><code>action=&quot;http://example.com/voice/voicemail/&quot;</code></li>
<li class="tab4 odd"><code>method=&quot;GET&quot;</code></li>
<li class="tab4 even"><code>maxLength=&quot;20&quot;</code></li>
<li class="tab4 odd"><code>finishOnKey=&quot;*&quot;</code></li>
<li class="tab4 even"><code>/&gt;</code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 even"><code>Try again. &nbsp;Press the star key when finished.</code></li>
<li class="tab2 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Say<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Record</span><br />
</span</code></li>
<li class="tab4 odd"><code>action=&quot;http://example.com/voice/voicemail/&quot;</code></li>
<li class="tab4 even"><code>method=&quot;GET&quot;</code></li>
<li class="tab4 odd"><code>maxLength=&quot;20&quot;</code></li>
<li class="tab4 even"><code>finishOnKey=&quot;*&quot;</code></li>
<li class="tab2 odd"><code>/&gt;</code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Redirect<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab4 odd"><code>http://example.com/voice/</code></li>
<li class="tab2 even"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Redirect<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="tab0 odd"><code><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Response<span style="font-weight: bold; color: black;">&gt;</span></span></span></code></li>
<li class="even">&nbsp;</li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://blogs.blackacid.org/code/ivr-twilio/voicemail.xml">voicemail.xml</a></li>
</ol>
<p>Next up, I'll talk about Robo-Calling!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.blackacid.org/2008/12/10/building-an-ivr-with-twilio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
