Today, we will get started with coding UCMA applications.  First though, I would like to cover again the Signaling namespace exposed by UCMA.  While much of this is not necessary when using the new Collaboration namespace, I feel that it is still important in terms of understanding how the API and SIP work.

In a change from my previous series of blogs on UCMA signaling, I have decided to no longer run the code through client and server executables.  Instead, I will create Powershell cmdlets (pronounced ‘commandlets’) that will accomplish specific actions for us.  The following are the reasons for this.

1)      The client and server executables had a large amount of code that was not necessary for understanding UCMA.  Powershell cmdlets contain much less non-necessary code.

2)      The Powershell cmdlets may actually be useful for some people.  The client and server were only useful for educational purposes.

3)      Due to the size and breadth of UCMA, a UI to cover all of the areas we will cover would be quite complex.

To run the code, therefore, you will need to download Powershell 2.0 if it is not already contained on your machine.   To learn more about Powershell, there are a vast number of good books and resources on the Internet about it.  One of the better books at the time of this writing is this one (though it only covers Powershell 1.0).

In my last blog series on UCMA, I showed step by step how to build the project and included the downloadable project in each blog.  The main problem with that approach was maintaining it.  If I found a problem that required fixing, I needed to make the fix in all subsequent projects and upload a new version to each blog.  This was rather counterproductive so I will now include the full solution from the beginning.

On the down side, this means that there will be a good deal of code you may not understand.  However on the positive side those who wish to look ahead now have the opportunity to do so.  Therefore, I will include the code in ‘blocks’.  Each blog will include code from future blogs.

This also means the format of the blog will be different.  While in the past I would give step by step instructions on how to build up the code, now I will focus solely on the parts that are important to the API.  Therefore there will be some boiler plate and ‘glue’ code that I will not mention in the blog but will exist in the project.  This allows each blog to be more on target – I can discuss only the code that is relevant for learning UCMA.