Posts

Google Weather API is Dead

It looks like Google has killed its unofficial weather service API.  I caught wind of it when I saw a lot of inquiries about it on StackOverflow .  Now when you make a request to the API it returns "Unsupported API".  One of VoiceModels examples used the Google weather API to demonstrate how to get information from a service and voice it back.  When I found this out I searched for another free weather service and found MSN. The example WeatherVoice now uses the MSN service.  The example was written so that it is easy to insert new services or even use a mock-up service when testing.  If you need a replacement for using the Google weather API you may want to check out the example to see how you can use MSN for the same information.

VoiceModel Mayhem Add-On Wins Honorable Mention

An add-on for the open source project Mayhem that was developed using VoiceModel just won an honorable mention in the Make Mayhem Contest .  There were some pretty cool add-ons developed for Mayhem in this contest and you can view the winners on FaceBook . I recently posted about this add-on and the contest.  You can read about it here .  There was not enough time to submit everything intended for Mayhem in this contest. The way this solution was designed it would be easy to send commands to Mayhem via text messages (SMS) using a service like Tropo or SMSIified .  Work is currently being done to integrate VoiceModel with Tropo  which would allow VoiceModel applications to also communicate using SMS.  And it is intended to create an add-on that would control Z-Wave devices in a home for home automation. This would allow you to control lighting and other devices in your home by sending a text message.  Watch this blog for future development.

Tropo My VoiceModel

I recently became interested in Tropo to easily develop applications that support voice and SMS.  Tropo is another service provided by Voxeo .  Voxeo also has the Prophecy platform which allows you to develop voice applications using VoiceXML that can be deployed in the cloud or as an on-premise solution.  The VoiceModel framework lets you easily develop VoiceXML applications using ASP.NET MVC and C# and it has been extensively tested on Prophecy. So why the interest in Tropo? How does it differ from VoiceXML development? Tropo is interesting to me because of its pricing structure for putting applications into production in the cloud.  With many VoiceXML platforms, like Prophecy, there are some up front costs to deploy your app and the pricing structure depends on the amount of minutes you intend to use.  You often have to agree to some minimum minutes that you will use per month. With Tropo it is a simple pricing model. There are no up front costs for going ...

Who Killed ASP.NET MVC?

I recently gave a presentation at a .Net Developer Group meeting about the architecture of VoiceModel  and how it promoted reuse by using ASP.NET MVC as the underlying technology. After the presentation I was having a discussion with the attendees and one of them said, "I heard that MVC is a dying technology." I was kind of taken aback by this comment and wondered where he got this information from. Did I miss some news flash from Microsoft?  He could not remember the source and went on to say, "Yeah, I heard that it is being replaced by ASP.NET Web API".  I assured him that it did not seem possible that Microsoft would abandon a technology that is obviously popular with developers and has an upcoming release with MVC 4, and that Web API is just an extension of MVC that serves a very specific purpose. For those of you not familiar with Web API  it is part of the upcoming MVC 4 release  and allows developers to easily create RESTful web API's using the familia...

Making Mayhem with VoiceModel

Image
I recently used VoiceModel to create an add-on module for Mayhem , an open source project developed by Microsoft that allows non-programmers to use their computers to automate anything.  You can find out more about Mayhem here and about the contest that is running until the end of the month for contributing add-on modules.  I have submitted the add-on module called RemoteCommand which makes it easy to integrate Mayhem with an IVR application.  Watch this video to see how Mayhem, RemoteCommand, and VoiceModel can be used together to automate actions through commands given over the telephone. The voice application used in this demonstration can be found in the VoiceModel examples  found in the source code.  This example demonstrates how to dynamically build speech grammars with VoiceModel. I plan on using this for home automation by creating another Mayhem add-on module for Z-Wave devices.  This will allow for controlling Z-Wave devices i...

How to Build an Open Source Reusable Framework in ASP.NET MVC

I will be giving a presentation on how to create an open source reusable framework using ASP.NET MVC to the local .Net Developer Group in Sarasota, Florida on June 20, 2012.  In this presentation I will be covering the architecture behind VoiceModel , an open source project available on CodePlex that makes it easier to develop VoiceXML applications using ASP.NET MVC, Razor and C#.  If you are in the area be sure to drop by.  The exact time and directions are available here .  I think you will find the presentation very informative. And as always after the meeting there will be continued discussions and networking at the Cock & Bull . They have the greatest beer selection in Sarasota, if not all of Florida.  So come and join in on a fun and informative evening.

How To Create a Menu Using VoiceModel

VoiceModel does not contain a Menu object that will present users with options and branch in the call flow based on the users input.  So how do you add a menu to your voice application when using VoiceModel? Easy. Just add an Ask object and put conditions on the transitions for the state that renders the Ask object to the IVR browser.  Here is some sample code that you can find in the examples for VoiceModel . public class HomeController : VoiceController { public override CallFlow BuildCallFlow() { CallFlow flow = new CallFlow(); flow.AddState(ViewStateBuilder.Build("mainMenu", new Ask("mainMenu", "Press one for option one. Press two for option two.", new Grammar("digits?maxlength=1"))) .AddTransition("continue", "optionOne", new Condition("result == '1'")) .AddTransition("continue",...