Windows Workflow

By now it should be common knowledge that MSS 2007 (SPS) uses Windows Workflow and managed code. This really changes the way that we build speech applications. Personally I’m getting very comfortable with the Workflow paradigm and I am enjoying using WF.

However it does change the way we think and to get a real handle on it you need to understand the Workflow model. I’ve been compiling a list of Workflow blogs and resources as I encounter them.  I thought I would share them with you and hopefully you have some that I don’t know about.


The Windows Workflow Foundation should be top on everybody’s resource list. Lot’s of good stuff there including forums, screencasts, samples and user contributed activities.

Commonality is Tomas Restrepo’s blog and he posts some great stuff concerning WF. He has a set of MSMQ Activities that I’m anxious to try out since my Outbound Dialing application uses MSMQ to report the call status back to the traffic cop.

Matt W’s Windows Workflow Place has a lot of good stuff along with some excellent links to other WF bloggers.

Brian Noye blogs about .NET things but has some great posts on WF and even has the source code for a class that he did on WCF and WF. His Understanding Windows Workflow Foundation (WF) and its complexities is well worth reading.

Here are some other blogs that I gleamed form Matt’s site that I haven’t had time to thoroughly read yet

  • Paul Andrew’s Blog
  • Jon Flanders
  • Dennis Pilarinos
  • Dharma Shukla
  • Moustafa Ahmed
  • Nate Talbert’s Advanced Workflow
  • Tom Lake

  • Dharma and Bob Schmidt both work from Microsoft and have a book coming out soon entitled Essential Windows Workflow Foundfation.

    Since WF will play such a fundamental role in how we develop our speech apps in the future taking the time to really understand it now will pay off later. If you have some Workflow links of your own to share then I would love to hear from you.

    Thom Robbins moving to Redmond and taking on a new position

    Thom Robbins the Developer Evangelist for the New England area is moving to Redmond and taking a new position with the Platform Marketing group. You can read all about it here.

    You are probably wondering why am I posting this. Well, Thom was the original owner of the GotSpeech.Net domain name. He wasn’t actively using the domain and was gracious enough to transfer the domain name to me. If he hadn’t done that there is no telling what this site would be called. Brandon and I kicked around a lot of names before deciding that we liked GotSpeech.NET but a search showed that it was already taken. For some reason Brandon decided to email Thom and ask for the domain name. The rest is history.

    Thom, from all of us at GotSpeech – congratulations! We hope you enjoy your new job and the move to Redmond.

    2nd Annual Jacksonville .NET Code Camp

    The 2nd annual Jacksonville .NET Code Camp is coming up this Saturday so if you are inthe Florida, Georgia area then you should consider registering and attending this event.

    We have 7 Microsoft MVPs and 3 Microsoft employees speaking and over 200 people have registered so far. We have several GotSpeech members that live in the area so this should prove interesting to them.

    Why? Because I’m speaking that’s why.

    No, seriously my session is an introduction to Speech Server and you would probably find it boring. But Bayer White will be doing two sessions on Windows Workflow (Getting to Know Windows Workflow and Building Custom Workflow Activities). While these aren’t speech specific they will be dealing with Workflow which is at the core of MSS 2007.

    You can see the agenda and the speakers list with biographies by visiting There will be  a lot of good sessions (all free) on a variety of topics. These code camps are great fun and if you have never attended one (this is the last one in Florida for the year) then now is a good time to start.


    If you do attend then be sure to look me up as I love to meet our members every chance I get.

    See you there.

    Notes and Code Samples…

    Yesterday I was cleaning up the notes I have accumulated in Outlook and I thought that they might make for an interesting blog post.

    Every time I come across an interesting piece of code or an explanation of how to do something I cut and paste it to an Outlook note. I may not need the information in the note now but down the road when I need to know how to do “X” I just have to look in my notes for “X” rather than searching the Internet or blogs. I just hate it when I encounter an issue and remember that I have read about it somewhere but can’t find it. This way I have one place to look.

    I’ve got a lot of these notes (and emails) saved for MSS 2007 and I can’t wait until I can start blogging about it.

    Here are some of the notes in no particular order, some with no explanation and all with no guarantee. I’ve credited the original author in some cases but in other cases I either don’t remember who the author is or never knew the author. My hope is that if a note doesn’t fit your need that it will at least get you thinking in the right direction.

    For Dialog Speech Controls,

    SALT events are the trigger that lead to adding

    elements to the History array.    Here’s a list of SALT events and what they

    add to the History.



        – if the recognized SML matches a Command, the command type is added to


        – if the recognized SML matches an answer, an empty string is added.

        – if no command or answer is matched, or if the confidence does not meet

    the confidence thresholds, “NoReco” is added.



        – “NoReco” is added.


        – adds “Silence”


        – if “FirstInitialTimeout” is defined – in other words, if this is a

    ShortTimeoutConfirmation – “ShortTimeoutConfirmation” is added.

        – otherwise, “Silence” is added.


        – if the prompt is part of a QA, “PromptError” is added

        – for other prompts, including Validator and Command prompts, nothing is



        – adds “RecoError”


        – adds “DtmfError”

    Application Controls use History slightly differently, but I will have to

    get back to you on those details.

    — Tom Faber [MS]


    Lobby.asmx unaccessible

    Hi Mike,

    I can’t see the error message you posted, but my guess would be “The request

    failed with HTTP status 401: Unauthorized. (System.Net.WebException)”, is

    that the case?

    If so, please try this:

    1.) Open IIS Manager

    2.) Right click on Default Web Site -> Properties

    3.) Click on Directory Security tab

    4.) Click on the Edit button for the Authentication and access control,

    uncheck “Enable anonymous access” and click okay, then Apply

    5.) Click on the Edit button for the Authentication and access control,

    recheck “Enable anonymous access” and click okay, then Apply, then ok

    6.) Try access to Lobby.asmx page again


    Ricky Lam [MS]


    Get the spoken text

    Does anyone know if there is a way to get the full spoken response (the text

    attribute) from the <SML> tag on the client side? For example if I have the

    following SML, I want to get at  “send it.” I need to do this client side in

    JScript. SMLNode only gets at the attributes from (in this case) <WhatToDo>.

    <SML confidence=”1.000″ text=”send it” utteranceConfidence=”1.000″>

     <WhatToDo confidence=”1.000″>send</WhatToDo>



    var smlResult = event.srcElement.recoresult;

    var txtResult = smlResult.attributes.getNamedItem(“text”).value;


    Do you have any hints or code examples like these laying around? If so, I would like to hear from you – maybe we can start a forum thread for tips and tricks.

    As always I would like to hear your comments.

    Windows Live Writer

    This is my first attempt at posting a blog entry using the new Windows Live Writer.


    I’m not sure how well this will work but supposedly it works for Community Server which is the forum and blog engine used to host

    Richard Sprague is using it to blog about speech and likes how it works. While typing this up offline I made several typing errors and purposely left them for the built in Live Writer spelling checker to catch. Before you go applauding me for my thorough testing abilities, spelling errors come easy for me.

    You may be asking why I am blogging about this a it isn’t really speech related. Well, there are two reasons.

    1. As I said before I’m excited about the announcement concerning Office Communications Server and the way Speech Server 2007 (now called Speech Platform Services I think) will interact with other MS products. So, I am going to be spending some time investigating other emerging Microsoft products. Wouldn’t it be fun to call a phone number from anywhere in the world and dictate you blog entry? Maybe it can be done and maybe it can’t but it will be fun to dream and prototype.
    2. If this works well then it will allow me to post more often and provide more dynamic content. If you have used the blog editor in CS then you know that it works great but it doesn’t have too many frills.

    For more information you can also MSTechToday

    Well, it did a great job on my spelling mistakes.

    If this works then you will be able to read this. If it doesn’t then I may be in for some long hours fixing my blog. 🙂

    Speech Server to ship as part of Office Communications Server 2007

    Rich Bray (Microsoft General Manager in Unified Communications) announced this morning in his keynote address at SpeechTek that Microsoft Speech Server 2007 will ship as part of Office Communications Server 2007 (OCS).

    I can hear some of you groaning that this means that the Speech Server 2007 release date will slip but that is just a “glass is half empty” view. True this means another Beta release and a new shipping date of summer 2007.

    But, I think this is really big and I am ecstatic over the possibilities that this opens up for speech developers. This means that we will be able to play in the Office arena and that our speech applications will become more mainstream. This opens up endless opportunities to seamlessly blend office communications into one large package.

    OCS will provide us a bigger audience. It will give us the ability to do IM, have presence awareness; speech enable audio and video conferencing and better voice and call management.  I’m really stoked about the communications possibilities that this will open up.

    Imagine, you are on the phone and your wife calls you. Instead of getting a busy signal or plain old voice mail the call gets directed to your Instant Messenger. Now she can IM you by speaking over the phone. IM says that you are busy then the call could seamlessly get directed to your Outlook where she could dictate her message to you. Never again would you have to miss an important call but instead you have options now. How about speech enabling Live Meeting and Exchange? Possible?  I think it will be. Ah, the power of SIP.

    Since MSS 2007 will ship in the box with OCS 2007 as a separate install, some of you are wondering what this will do for licensing and the cost of implementing speech. While the licensing details haven’t been fully worked I’ve been told that the overall costs should go down. This is exciting too as it will open up possibilities for smaller businesses that may have limited funds to invest in speech automation.

    I have a good friend named Andrew Connell who is a Microsoft MVP for CMS. He has been extolling the virtues of SharePoint Services 2007 to me. He so wrapped up in that and such an evangelist for SPS that he is dragging me into it and I’m starting to believe in what he is doing. He has got me wondering how I could make speech apps work with SPS and now it looks like it may become a possibility. The telephone is the most widely used interface in the world and we have all been communicating verbally since we were mere babies. I can’t emphasize enough how exciting I find this.

    This is the information that I’ve garnered from my talks with the Speech Server team and I hope I haven’t given you any false impressions or misrepresented anything here. The Speech Server Team is all excited about this and so am I. In fact, I’m almost drooling over the possibilities that this opens up for us.

    I’m just trying to give you guys and gals a taste for what is to come. As for how this affects the current Beta or TAP programs, more specific information will be forthcoming from the Speech Server Team concerning that. Please don’t email me for details as I am not at liberty to discuss it.

    Message from Marshall

    It seems that some people who work around me are under the impression that I’m “running” GotSpeech out of my cubicle at work while I am supposed to be working. I’ve also heard that I’m running this as a business and making money off of it.


    None of that is true.


    I have checked postings in the GotSpeech forums and have even answered them from work. However the forums are a source of information for me and are where I turn when I need help. I treat GotSpeech.Net forums no differently than I do the Microsoft newsgroups.  I think of both as a resource that I can turn to when I need something. In return for getting help I feel obligated to give help in return when I can.


    However, I realize that perception is important and right or wrong it can be detrimental. In an effort to change that perception I am making the following changes in how I interact with GotSpeech.


    From now on I will not be viewing or posting to GotSpeech during business hours. I will also not be replying to any emails relating to GotSpeech. If you need to get hold of me please direct the emails to I will answer emails and posts after hours. Please do not direct emails to my work address or expect responses from me until after business hours on the east coast.


    I’m sorry that it had to come to this and I hope everyone will bear with me on this issue.