50% off on Dialogic Media Gateways

ScanSource  is offering Dialogic Media Gateway Starter Kits at 50% off.

The discount comes with free training and support. You can read all of the details at the link above and there is an 800 number to call near the bottom of the page.

I’ve been very happy with my Dialogic gateway and I can recommend both the gateway and ScanSource

You had better hurry though as the offer is only available until March 31, 2008.

On the Road Again Part II

I like that old Willie Nelson song (actually I’m a big fan of Willie and Waylon) but I seem to be singing it more and more lately.

I’m headed up to Columbia SC on business again this week so if you are in that area then shoot me an email (or call the number on my about page) and maybe we can hook up.

I won’t be as active in the forums while I’m gone but there are still a lot of smart people around to keep things going. Things will go on without me and I’ll be back next weekend.

Strategies for Optimizing Alphanumeric Recognition Accuracy

In a recent thread here GotSpeech.Net ahofle asked about the availability of common grammars that could be used with Speech Server. He mentioned writing some grammars and that he was interested in creating one for license plate numbers.

Well, this got me thinking about an old article that I read a long time ago about accuracy in alphanumeric grammars (since most license plates are alphanumeric). I rummaged around through my notes and found a hard copy of the article and got the link off of it.

The article was written by Heiko Rahmel and can be found at this link http://www.microsoft.com/speech/community/newsletter/articles/124004art/index.htm. Heiko is one of the most knowledgeable people I know and I recommend you reading anything he writes.

Awesome offer from ScanSource

Apparently ScanSource’s VP of sales saw my blog post on the Dialogic gateway and has offered ScanSource’s support if I have any trouble at all working with the Dialogic (or AudioCodes) gateways.


I think this is awesome. You write a blog post and you never kno who is reading it.


The AudioCodes gateway was purchased through them but I’m not at liberty to say where I got the Dialogic gateway. I’ve blogged about the problems I had with the AudioCodes gateway and the fact that their tech support was a no-show. So far the Dialogic gateway has been easy to setup and I’m very happy with it. I love it.


I was really impressed that ScanSource offered their help. It says a lot when a company steps up to the plate like this. kudos to them.

Creating subflows

Recently I was working on setting up an application where I wanted different pieces of the call flow to be placed in separate work flows or at least segmented out so that multiple developers can work on the different pieces. The desire was to do this in a way that I could easily add the different pieces into the main work flow. Think of this as having the main menu in the main work flow then having components and sub menus setting off in a separate work flows that I could drag and drop into the main workflow as needed. In order for this to work I had two requirements:


  1. Each subflow needs to be able to see and set values in the main work flow
  2. The main work flow needs to be able to see and set values in the subflows

This post is going to show you how I accomplished this. First though I want to note that there are probably other ways of doing this and you may have hit on a better way of accomplishing this task. Also note that the term “subflow” is not terminology you will find in Microsoft documentation.


The first thing I did was create a new speech workflow application and dragged a few  activities into the designer. There is nothing special here and it is something that you have done before.


Next you right click the project and chose Add/New Item fro the popup menu. This opens the new item window and presents a list of templates. Highlight “Voice Response Sequence Activity” and set the name for your subflow then click Add. Visual studio will create a new partial class and add it to your project. 


After building  your project you should see an new item in the toolbox that has a purple sprocket or cog for an icon that is named the same as the new class you created. This can be added to your workflow by dragging and dropping it into the designer like you drop any other component.



By default the component shows in your workflow as just a container – in other words in the main workflow you want be able to see any of the activities in your subflow –



But if you look closely at the first code example shown below you will see a line that starts with “[Designer (typeof(System.Workflow........]“. All you have to do is comment out that line and your subflow will now show it’s activities (you must rebuild your app first). You should also notice either a “+” or a “-” next to the name of the sublfow. You can click on this to show or hide the activities in the subflow.



Now that we have the necessary pieces we need to establish a way that they can communicate with each other. This is not as simple as you may think because if you simply create public variables with setter/getter logic you will find that variables are not getting set property. You will encounter problems with scope of the objects and the timing of when they are created as the work flow engine creates/clones your subflows. To make this work you will need to create the public variables and a static InstanceDependencyProperty so that they can accessed when your subflow isn’t running. It’s really very simple as this code example shows.



Note that in the code above we also declared a private variable called parentWorkflow. Once the subflow starts you need to set it so that it points to the main workflow like I show below.


 


If you don’t so this then you won’t be able to reference variables (including the call related stuff) in the main workflow. Once you have done this you have full use of IntelliSense for variables residing in the main work flow. Note – I realize there is a syntax error in the code shown below but I didn’t want to upload another image and it doesn’t affect what I’m trying to demonstrate.



To access subflow variables from the main workflow you simply reference the public variable you declared in the subflow. The magic behind the InstanceDependencyProperty that you created above makes this all work.



That’s all there is to it and as I said earlier there may be other ways of doing this but this is what I settled on and it works for me.


I would love to hear how you approach this process and if you have any improevements then let me know.

Be Careful what you post

You’ve probably seen those TV commercials that warn people that what they post on the web becomes public property. I’ve also seen news stories where stuff has come back to haunt people in job interviews and such.

It wasn’t as bad as that but Richard Sprague recently posted “Call Me” where he showed all of the different phones on his desktop ( he has more phones than I do but I’ve got more monitors). The last paragraph lists Richard’s Response Point phone number and an invitation to call it.

I guess you have figured out by now that I took him up on the invitation. I haven’t seen or talked with Richard since May of 2006 so I thought what the heck – let’s give this thing a try. I haven’t seen one (other than in pictures) and I hadn’t used one so I was anxious it hear it in action and I called it one day last week,

The call was answered by the Response Point and I’ll have to say that it sounded great and the speech reco was excellent. It asked me who I wanted to speak to. When I said “Richard Sprague” it understood me on the first attempt and made the connection. I was a little surprised when Richard answered his phone as I figured he would be too busy to talk. We talked for two or three minutes and while we were both using VOIP phones the quality of the call was excellent.

I sure wish I had a Response Point system to try out here at GotSpeech Central as I would love to really put it through the paces. But since I don’t have access to one then I’ll have to say that on the basis of the call to Richard I think Microsoft has a winner with Response Point.

If you want more info you can check out the Response Point Team blog here or for a more humorous look try this.

Dialogic Media Gateway Part III

After work today I decided to play around wiht the gateway some more and I ended up in the logging menu. I found this on the Network Capture tab and decided to do a trace.



After the trace finished it gave me the option of downloading the trace as a .pcap file. I cliked to download it and after downloading it automatically openned WireShark and presented the trace. All I had to do was filter for SIP. Man that is the way that tracing should work. 



 

Dialogic Media Gateway Part II

I spent about 20 minutes today during my lunch configuring the Dialogic Gateway. As a result I can now dial out from a soft phone and from OCS 2007 Speech Server. I can also make inbound calls and if no one picks up the phone after x number of rings the call gets directed to my Speech Server application. The only thing I have left to figure out is why the app seems to play most of the greeting message before I can answer the phone when dialing out. It’s not much of an application as it is just something I threw together to test my setup.


I covered my initial experience with the Dialogic gateway here. If you remember my previous attempts with the AudioCodes gateway you will remember that I never got it working the way that I wanted it to work. My requirements are:


  1. Make outbound calls from a soft phone
  2. Make outbound calls from Speech Server
  3. Direct inbound calls to Speech Server only if no one answers an incoming call within say 4 rings.

Well I’m really impressed that it only took about 20 minutes of browsing the setup menus then configuring and testing things to achieve all of my requirements using the Dialogic gateway. I was also surprised to discover that I didn’t have to configure anything for outbound calls. I just address calls as ‘sip:3426205@192.168.1.90:5060;user=phone’ and they worked. I suppose I may have to do some configuring in the future but the initial stuff was there right out of the box.


To get inbound calls directed to Speech Server all you need to do is configure the Inbound TDM dial plan like this


 


To get it to only answer after 4 rings you just need to configure the Analog settings as shown below. Note that I’ve configured the number of rings to be a little high so that calls will get picked up my the family’s answering machine rather that Speech Server for the time being.



 Next steps will involve configuring Office Communicator to use it for outbound dialing and selling the AudioCodes gateway.


 


 

Dialogic Media Gateway

Yesterday DHL dropped a Dialogic Media Gateway off on my doorstep.

So far all I’ve had time to do is plug it in and get it up on my network. Unfortunately these type of devices all seem to come with a factory set IP address of something like 10.12.13.74 so in order to use them I have to reset the IP address. This requires you to hook the LAN connection on the gateway up to a PC (I use my spare laptop) and change the IP on the laptop so that it is on the same network and subnet. Then you can change the IP via the web interface to something that corresponds with your network. There is also a serial interface but I haven’t seen a serial cable in years and none of my machines have a serial interface so I have to use the web interface.

So, I reset my IP address and attached the gateway to my network then I hooked an analog phone line to it and that is as far as I’ve gotten. I haven’t had time to mess with it beyond that and most of that was done after 11:00 PM last night as I was at the local user group meeting (JAXDUG) all evening. Gold Systems has work it wants me to do for them (employers are funny about that) plus my wife has things she wants me to do around the house and to spend time with her and the kids. So I’m not sure when I’ll get the time to configure the gateway and get it working with Speech Server and OCS. I’m hoping to have time this weekend but I’ll have to wait and see.

One thing I have noticed – it is noisy as hell. You can hear the whine form the fan all over the house and I’m not sure if that is normal or there is something wrong with mine.

If you have any experience with configuring and setting up dial plans on one of these I would love to hear about your experiences.

As for the AudioCodes gateway – it is unplugged and setting on the floor. I never did get it working the way I wanted to and their tech support never responded to my inquiries. I’ll probably end up selling it or maybe giving it away as a prize or something.

I’ll blog more on this subject later.