<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Am I Done?</title><subtitle type="html">In the Cloud</subtitle><id>http://blogs.msdn.com/b/midunn/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/midunn/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2008-04-26T02:54:00Z</updated><entry><title>Running Mission Critical Solutions on Windows Azure</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2012/05/17/running-mission-critical-solutions-on-windows-azure.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2012/05/17/running-mission-critical-solutions-on-windows-azure.aspx</id><published>2012-05-18T04:06:00Z</published><updated>2012-05-18T04:06:00Z</updated><content type="html">&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;I wanted to follow up on my previous post for Common Tip and post something&amp;nbsp;that covers how Upgrades work, how to achieve maximum availability and scale along with deployment and monitoring recommendations.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;With Windows Azure there are a lot of options on how to manage and implement deployments, upgrades, scale and availability.&amp;nbsp; Mission Critical applications require more effort and planning on which Azure features to leverage based on its availability requirements.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="font-size: small;" size="3"&gt;Understanding Updates &amp;amp; Upgrades&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="font-size: small;" size="3"&gt;There are three types of Update events that can occur on the Windows Azure Platform.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&amp;middot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Application Upgrade&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&amp;middot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Guest OS Update&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&amp;middot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Host OS Update&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="font-size: small;" size="3"&gt;An Application Upgrade occurs when you do an in-place upgrade on your application, options for this is covered in the Deployment section.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="font-size: small;" size="3"&gt;The Guest OS Version is controlled via the Azure Service Configuration by setting &lt;strong&gt;osFamily&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt; and the &lt;strong&gt;osVersion&lt;/strong&gt; attributes.&amp;nbsp; The osFamily attribute currently can be a 1, Windows Server 2008, or a 2, Windows Server 2008 R2.&amp;nbsp; The osVersion controls a group of OS patches and updates for a given time, by setting the osVersion to &amp;ldquo;*&amp;rdquo; instead of an explicit version, this will install OS patches automatically.&amp;nbsp; For Mission Critical applications you will have to determine if having the latest patches, including security vulnerabilities installed automatically is more of risk to your solution, than manually performing the upgrade.&amp;nbsp; There are two ways to perform this update manually either through the Service Configuration or through &amp;ldquo;Configure OS&amp;rdquo; within the Management Portal.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;The Host OS Update occurs one the Host system.&amp;nbsp; Windows Azure tenants have no control as to when this update happens. To ensure the 99.95% SLA, Windows Azure will not update all hosts at once but perform host updates on host on different Fault domains, which is why you &lt;b&gt;must &lt;/b&gt;have at least 2 instances for each role for the guaranteed 99.95% SLA.&amp;nbsp; &lt;i&gt;The Scalability &amp;amp; Elasticity section goes into more detail on how you can ensure capacity during these updates.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Increasing Scalability &amp;amp; Elasticity&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;A lot of times it is easy to choose the largest instance possible, surely adding more memory or CPU will increase the performance of your application?&amp;nbsp; The problem is that most application are not written specifically to leverage multiple CPU cores and I have yet see an application that actually needed 14 GB of memory that the Extra Large VM provides. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Which is better:&amp;nbsp; 4 Mediums or 2 large instances?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;I would argue that 4 Mediums would be &amp;ldquo;better&amp;rdquo; as it would give you elasticity to increase OR decrease the number of instances based on my load at any given time, yet reducing cost by not over provisioning resources.&amp;nbsp; For example if you have 2 Large Instances &amp;ndash; You couldn&amp;rsquo;t scale down without sacrificing the 99.95% SLA provided for roles that have at least 2 instances and you couldn&amp;rsquo;t scale up without paying for an entire new Extra Large VM.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Also by choosing the medium instances over the large instances, it would allow you to increase the number update domains from 2 to 4, this allows you to have higher capacity availability during Host OS updates, Guest OS updates and Application updates.&amp;nbsp;&amp;nbsp; For example if a Host OS update occurs, which you cannot control when it happens, &amp;nbsp;and you were using 2 Large instances, during this time frame your solution could only handle 50% of your maximum capacity.&amp;nbsp; On the other hand if you had used 4 Medium instances you could choose to create 4 update domains, one for each instance, which means during any update your solution, would be able to handle 75% of your maximum capacity.&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;What is your solutions tolerance for reduced capacity?&amp;nbsp; Maybe 25%-50% reduced capacity for a short period is acceptable, if not what are your options?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;The simplest option is to create an additional update domain that runs the same number of instances as all your other domains.&amp;nbsp; In the example above of using 4 Mediums instances, this would mean running a 5&lt;sup&gt;th&lt;/sup&gt; update domain with 1 additional medium instance. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;Another option would be to consider auto scaling or reducing feature availability for features that are CPU and/or memory intensive. &amp;nbsp;The Enterprise Library Integration pack for Windows Azure includes WASABi , Windows Azure Autoscaling Application Block.&amp;nbsp; This application block allows you to create rules to scale up/down and to reduce resource intensive features on the fly. Developers can download this application block from: &lt;/span&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=28189"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=28189&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Increasing Availability with Geo-Redundancy&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;With two fault domains in a single datacenter and multiple upgrade domains, you are setup nicely in the event of an inner data center failure.&amp;nbsp; What about a complete datacenter failure? &amp;nbsp;As with an inner datacenter failure, you have to decide what is your tolerance for a complete datacenter failure?&amp;nbsp; If your tolerance is low, then you should consider deploying your application into two data center and if you are not using auto scaling type features &amp;ndash; this means running a complete duplicate of all of your instances in a secondary data center to run at 100% capacity you had prior to the failure.&amp;nbsp; Once you have your solution deployed into two data centers, you can leverage the Traffic Manager feature to create a new &amp;lsquo;Failover&amp;rsquo; policy for your secondary deployment.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;It sounds simple right? Well there are other considerations when planning to have a complete failover, such as are you leveraging any other Windows Azure features, such as storage, Service Bus, Cache or Access Control?&amp;nbsp; Since these services are datacenter dependent in the event of a failure, these services may not be available.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;This is not a simple task and will take additional development and planning.&amp;nbsp; While I&amp;rsquo;ve geared this section to be towards for a complete data center failure, this could be leveraged for a specific service failure.&amp;nbsp; For example, if your solution leverages Table Storage, if the storage service for the data center your application has a failure, your Windows Azure Compute instances will be running, but any features leveraging storage will not be available and depending on the feature this could be a critical feature of the application.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Deployment Process Recommendations&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;With Windows Azure there are multiple options for deploying applications. You can use Visual Studio, the management portal, or something custom using the Management Service API. There isn&amp;rsquo;t one way that is better than the other, but you should deploy your application in a consistent method across multiple environments: Development, Testing, Staging and Production.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;If it is possible within your team or organization, you should consider automated deployments.&amp;nbsp; This option takes additional time, but allows you to deploy consistently. &amp;nbsp;Automated deployments can be achieved in various ways, but currently require a custom development effort. The largest benefit to automated deployments is for operations teams to be able to rapidly re-deploy services in other data centers in of a catastrophic data center failure.&amp;nbsp;&amp;nbsp; For thoughts around how an automated deployment could be implemented, read the &amp;ldquo;Automating Deployment and using Windows Azure Storage&amp;rdquo; in the Moving Applications to the Cloud, written by Microsoft&amp;rsquo;s Patterns and Practices team. &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff803365"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;http://msdn.microsoft.com/en-us/library/ff803365&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;If automate deployment isn&amp;rsquo;t feasible, you should consider leveraging Windows Azure PowerShell Cmdlets, available for download here: &lt;/span&gt;&lt;a href="http://wappowershell.codeplex.com/"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;http://wappowershell.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;These PowerShell Cmdlets provides consistent management accessibility that conforms to other Microsoft products that are leveraging PowerShell as a management interface.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Another common question is &amp;ldquo;Should I use a VIP Swap or leverage the In Place Upgrade?&amp;rdquo;&amp;nbsp; With the 1.5 Windows Azure SDK &amp;ndash; In Place upgrades features are on-par with a VIP Swap.&amp;nbsp; So what is the advantage of using a VIP Swap?&amp;nbsp; The advantage is the ability to follow a process, to smoke test your application prior to it being published &amp;ldquo;live&amp;rdquo;.&amp;nbsp; &amp;nbsp;&amp;nbsp;IF you were to use an in-place upgrade, once complete the application is &amp;ldquo;live&amp;rdquo;.&amp;nbsp;&amp;nbsp; Mistakes happen in IT, what if someone published the wrong version?&amp;nbsp; If you used VIP swap, you could smoke test the application first and even after you perform the VIP swap, you could revert back to the previous version instantaneously! &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Solution Monitoring&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Even if you are using an auto scaling framework such as WASABi &amp;ndash; Monitoring is an important aspect.&amp;nbsp;&amp;nbsp; Monitoring will assist in diagnosing issues within your application and knowing important key metrics about your application performance, errors and load. While Windows Azure can log Windows Events, Performance Counters and Logs to your storage accounts there is no &amp;ldquo;Out of the Box&amp;rdquo; Solution to view this data in a user friendly, graphical format. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;System Center Operations Manager offers a Windows Azure management pack, which allows you to view alerts for Events and Performance metrics of your applications in a friendly manner.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;The Windows Azure Management pack is available for download:&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=11324"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=11324&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Disaster Recovery&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;While it is true that Windows Azure does backup your Storage and SQL Azure data in triplicate, however this isn&amp;rsquo;t for you to leverage to restore your data on-demand.&amp;nbsp; These backups are used by the Windows Azure teams in case of a catastrophic failure so they can restore an entire datacenter and not necessarily recover data for individual Windows Azure tenants. &amp;nbsp;While this provides some relief, it is best to have backups of your application, configurations and data so that you can restore onto another Azure datacenter manually.&amp;nbsp;&amp;nbsp; While creating backups of Storage data would be a custom development effort, relational data stored on SQL Azure can be backed up and restored to a file using the Import/Export feature in the Windows Azure.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10306574" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Windows Azure" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Windows+Azure/" /><category term="Mission Critical" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Mission+Critical/" /></entry><entry><title>Common Windows Azure Tips</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2011/12/02/common-windows-azure-tips.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2011/12/02/common-windows-azure-tips.aspx</id><published>2011-12-02T20:58:55Z</published><updated>2011-12-02T20:58:55Z</updated><content type="html">&lt;p&gt;Here are several&amp;nbsp;simple tips if you are planning to leverage Windows Azure for your applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Application Settings&lt;/b&gt; - Don't use the web.config to store application settings, specifically environmental application settings. &lt;b&gt;For example:&lt;/b&gt; SQL Connection strings, should be stored in the&lt;br /&gt;Service Configuration not the web.config. The problem is since the web.config is part of the deployment package, you will either have to redeploy a new package or Remote Desktop into all of the instances to make a change. &amp;nbsp;Think about how you move builds across environments: Development --&amp;gt; Test --&amp;gt; UAT --&amp;gt; Production&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Common Web Config Settings that should be moved to the Service Config&lt;/p&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;SQL Connection Strings&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Including Entity Framework&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;AppFabric Caching&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Yes &amp;ndash; Azure lets you copy the web.config settings for caching, but caching it typically going to be environment based so move it to the Service Configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;ASP.NET Membership Provider&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Deployment&lt;/b&gt; &amp;ndash; Leverage the VIP Switch functionality, don&amp;rsquo;t just deploy to the production node. Deploy to the staging node, smoke test, then&amp;nbsp;do a VIP Switch. If something isn&amp;rsquo;t right, this gives you a great way to rollback. Yes &amp;ndash; you have to pay for the staging compute instances. There are some cases where you can&amp;rsquo;t leverage this feature, such as a change to a WCF contract, where WCF client needs to be updated as well. Plan your deployment strategy for this scenario.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Scale Out, Not Up&lt;/b&gt; &amp;ndash; Too many times it&amp;rsquo;s easy to say I&amp;rsquo;ll just use the biggest VM size available. &amp;nbsp;Your memory and CPU footprint should account for load, but you can spread that load across multiple instances. &amp;nbsp;IE: 2 x Large Instances or 4 x Medium or 8x Small instance? In a lot of cases &amp;ndash; you&amp;rsquo;d be better off with 4x Medium or 8x Small than 2x Large and it&amp;rsquo;s the same cost.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Performance and Diagnostic Data &amp;ndash; &lt;/b&gt;Collect this data, it makes troubleshooting alot easier for you. At a minimum capture the crash dumps, so they will be stored Blob storage &amp;ndash; Ideally you have some kind of Monitoring solution deployed on Premise &amp;ndash; like SCOM with the Windows Azure management pack or another third party solution.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Don&amp;rsquo;t enable Profiling or Remote Desktop for production instances&lt;/b&gt; &amp;ndash; Profiling will be a performance hit in production, Remote Desktop exposes another potential attack surface. Leverage Diagnostic and Performance data to troubleshoot issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Don&amp;rsquo;t leverage CTP features&amp;nbsp;in Production &amp;ndash;&lt;/b&gt; CTP features are great, but don&amp;rsquo;t have SLAs. (Once in Beta features typically have SLAs). IE: Traffic Manager is a great feature, but while it is in CTP, it is extremely risky as a single point of failure with no guaranteed SLA.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Have some thoughts? Share them with me: &lt;a href="mailto:midunn@microsoft.com"&gt;midunn@microsoft.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10243823" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Windows Azure" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Windows+Azure/" /><category term="Best Practices" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Best+Practices/" /></entry><entry><title>Changes</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2011/11/19/changes.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2011/11/19/changes.aspx</id><published>2011-11-19T08:03:28Z</published><updated>2011-11-19T08:03:28Z</updated><content type="html">&lt;p&gt;I can't believe I've neglected this blog for 2 years, I'm blowing the dust off the keyboard and getting back to it. There&amp;rsquo;s been a lot of changes in my professional life - I've changed roles at Microsoft, &lt;b&gt;again.&lt;/b&gt; &amp;nbsp;I'm now with Premier Mission Critical support, generally supporting our PMC Azure customers.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;About my new team:&lt;/strong&gt; &lt;a href="http://www.microsoft.com/microsoftservices/en/us/support_premier_addons_pmc.aspx"&gt;http://www.microsoft.com/microsoftservices/en/us/support_premier_addons_pmc.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This means I'm pretty much done with Unified Communications, I still take questions around the APIs from time to time, but&amp;nbsp;I&amp;rsquo;ll be changing the theme of the content from UC to Azure. I have&amp;nbsp;lined up some posts&amp;nbsp;about best practices and tips on using Windows Azure for Mission Critical applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Common Mistakes&lt;/li&gt;
&lt;li&gt;Deployment Best Practices&lt;/li&gt;
&lt;li&gt;Geo Redundancy Possibilities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hopefully there are a few of you, that still check up on this blog and maybe some new readers.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238755" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="PMC" scheme="http://blogs.msdn.com/b/midunn/archive/tags/PMC/" /><category term="Windows Azure" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Windows+Azure/" /></entry><entry><title>Server Side Speech Recognition</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2009/11/05/server-side-speech-recognition.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2009/11/05/server-side-speech-recognition.aspx</id><published>2009-11-05T02:46:00Z</published><updated>2009-11-05T02:46:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Last week I learned something, well I learned many things but one that was particularly interesting. Lets say you wanted to do server side speech recognition&amp;nbsp;but you &lt;STRONG&gt;don't&lt;/STRONG&gt; want the transport to be SIP.&amp;nbsp; This obviously eliminates using UCMA 2.0 as by default it will rely on OCS and therefore SIP. Well I learned that this isn't entirely true, you can actually use the Microsoft.Speech assembly that comes with the UCMA 2.0 SDK outside a UCMA application.&amp;nbsp;&amp;nbsp; This&amp;nbsp;has been&amp;nbsp;staring me in the face and it didn't ever cross my mind to do it.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;What kind of scenario does this open? One example improved desktop experience.&amp;nbsp;Well SAPI is the obvious first choice when&amp;nbsp;creating a desktop application, but the&amp;nbsp;SAPI experience is really dependant on the OS. &lt;STRONG&gt;IE:&lt;/STRONG&gt; TTS voices are different from XP to Vista.&amp;nbsp;The benefit to having a server side solution you can control the experience of the end user has. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;While looking to build something&amp;nbsp;there are some problems to overcome, for me building&amp;nbsp;a simple sample solution, two main problems stick out.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;1.) Streaming Audio - I don't really want to pass around and process WAV files. You could but the experience wouldn't be as nice&amp;nbsp;as you couldn't do &lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;immediate&lt;/SPAN&gt; speech recognition.&lt;BR&gt;2.) As I won't be using System.Speech or SAPI, I am going to have to access hardware resources such as the microphone and speakers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;For streaming audio there are alot of different options, but being a big fan of WCF, this is first avenue I looked at and sure enough you can stream content to/from WCF. Is there anything WCF can't do!&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&amp;nbsp;&lt;A href="http://msdn.microsoft.com/en-us/library/ms731913.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms731913.aspx&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&amp;nbsp;Next access microphone and speakers via .NET, I don't want to write low level code I want something down and dirty. I found a very cool CodePlex project, NAudio. It abstracts a lot of the audio APIs into a single, easy to use API. This will work perfectly for my client side application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;A href="http://www.codeplex.com/naudio"&gt;http://www.codeplex.com/naudio&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Here is a simple diagram of what I am building, and actually very close to having something running.&lt;STRONG&gt;&lt;EM&gt; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;STRONG&gt;&lt;EM&gt;Note:&lt;/EM&gt;&lt;/STRONG&gt; &lt;EM&gt;If this was something which I was planning to actually put in a production environment, I'd separate the Synthesizer and Recognizer. These will be independent calls and would benefit from being on their own servers.&lt;/EM&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/9917449/original.aspx" mce_src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/9917449/original.aspx"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Code Sample&amp;nbsp;will be available soon, hoping to have it up on MSDN samples by November 16th.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917714" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Speech Recognition" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Speech+Recognition/" /></entry><entry><title>Custom Disclaimer</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2009/08/02/custom-disclaimer.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2009/08/02/custom-disclaimer.aspx</id><published>2009-08-02T10:56:00Z</published><updated>2009-08-02T10:56:00Z</updated><content type="html">&lt;P&gt;A lot of businesses want to add disclaimers to external communications. Using MSPL on the Edge servers we can create something to simply add this disclaimer to an IM Conversation.&lt;/P&gt;
&lt;P&gt;Since MSPL hasn't really changed from LCS to OCS,&amp;nbsp;we can use the sample provided for LCS to implement a custom disclaimer for OCS.&amp;nbsp; You can download the sample from: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=ee41345b-836c-4dcf-9810-32709ae9f5c4&amp;amp;displaylang=en&amp;amp;tm"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=ee41345b-836c-4dcf-9810-32709ae9f5c4&amp;amp;displaylang=en&amp;amp;tm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You'll have to make some project modifcations because it doesn't compile out of the box. These are easy like missing references etc.. &lt;/P&gt;
&lt;P&gt;If you want to first run the console application, for debugging and/or learning purposes, you'll notice that the application manifest,&amp;nbsp;".am", &amp;nbsp;is missing. Just copy the the DisclaimerService.am from the service proejct, open it in notepad and change the AppUri to &lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;A href="http://www.microsoft.com/LC/Disclaimer/Console"&gt;http://www.microsoft.com/LC/Disclaimer/Console&lt;/A&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;Finally when you are ready to install the service portion of the solution, you'll have to&amp;nbsp;change the ServicesDependsOn property on serviceInstaller1 in ProjectInstaller.cs as it is currently set to "LCSProxy.exe".&amp;nbsp; Just set this to be blank.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;After these minor changes, simply continue following the instructions included with the sample.&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9855567" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="MSPL" scheme="http://blogs.msdn.com/b/midunn/archive/tags/MSPL/" /></entry><entry><title>UCMA WF Application Host</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2009/05/11/ucma-wf-application-host.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2009/05/11/ucma-wf-application-host.aspx</id><published>2009-05-11T19:42:00Z</published><updated>2009-05-11T19:42:00Z</updated><content type="html">&lt;P&gt;As promised I've released some code that shows you how to create a reusable application host that will run your UCMA 2.0 Workflow Applications.&lt;/P&gt;
&lt;P&gt;You can find the code, binaries and an initial "How To":&lt;BR&gt;&lt;A href="http://code.msdn.microsoft.com/ucmahost"&gt;http://code.msdn.microsoft.com/ucmahost&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The home page of the project site gives a basic walk through. One item I sort of mentioned on the site was the ability to interface with the service via MSMQ. Instead of specifying a Inbound or Outbound workflow, you can just provide the name of a private queue. This will watch that queue and send an alert via a default Outbound WF or&amp;nbsp;the provided&amp;nbsp;Outbound WF.&lt;/P&gt;
&lt;P&gt;To use this simply write this string to MSMQ,&amp;nbsp;sipuri={0}&amp;amp;message={1}&amp;amp;type={2}, providing the details of who you want to send the message to, the actual message and type. The type can be 1, Audio, or 2, IM.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9603502" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="OCS R2" scheme="http://blogs.msdn.com/b/midunn/archive/tags/OCS+R2/" /><category term="UCMA v2.0" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UCMA+v2-0/" /><category term="WF" scheme="http://blogs.msdn.com/b/midunn/archive/tags/WF/" /></entry><entry><title>Unified Communications Managed API v2.0 Workflow Applications</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2009/04/30/ucma-v2-0-workflow-applications.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2009/04/30/ucma-v2-0-workflow-applications.aspx</id><published>2009-04-30T23:28:00Z</published><updated>2009-04-30T23:28:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;UCMA v2.0 includes a great abstraction layer, Communication Workflows, based on the&amp;nbsp;Windows Workflow Foundation (WF). &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;These workflows are great for those needing to great simple yet powerful UC enabled applications. The workflow activities themselves are pretty self explanatory. I'll cover the activities themselves in another post.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;The "difficult" portion of creating a UCMA workflow application isn't the actual workflow, but creating the host. Yes the default template wraps your&amp;nbsp;WF application is nice little console application, but this is really only for debugging purposes.&amp;nbsp;Are you really&amp;nbsp;going to deploy your console application in production?&amp;nbsp;Those familiar with Speech Server&amp;nbsp;are probably scratching their heads, while Speech Server had a nice service and administrator console that allow you to easily point it to your Speech WF application, UCMA does not. You need to build it yourself and build it for every UC application you build, and to truly do that we need to know at least a little bit about the UCMA Core API. Joe Calev has a great blog which walks you through the Signaling portion of the Core API. For the WF API&amp;nbsp;you really should have some understanding of the Collaboration portion of the Core API.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;First you will need to make sure that you have a certificate on for your application and you will need to provision an application on the OCS Front End. You can do this by using the Application Provisioner and following these instructions: &lt;A href="http://msdn.microsoft.com/en-us/library/dd253360(office.13).aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd253360(office.13).aspx"&gt;&lt;FONT color=#0000ff&gt;http://msdn.microsoft.com/en-us/library/dd253360(office.13).aspx&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;This is the key information that our application will need:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Application Name&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Application Port&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Application SIP URI&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Application Server FQDN&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;OCS Pool FQDN&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;OCS Pool Port&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;GRUU&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Certificate Information&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Note:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; You should never call the asynchronous methods, synchronously. IE object.End(object.Begin). You'll see some of this in sample code and blog posts, do not use this is a production application!&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Armed with the necessary information, we can start looking at some code:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;First we need to use create an instance of the CollaborationPlatform, for this post the importance of this object is that it is used to describe our application. It has two constructors, one that takes a ClientPlatformSettings parameter and the other that takes a ServerPlatformSettings.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The different here is the ClientPlatformSettings will use an AD account, while a ServerPlatformSettings will use a Contact Object. We reference the Contact Object via the GRUU provided by the Application Provisioning tool. There are some features lost if you use the ClientPlatformSettings, such as Impersonation. I typically draw the line, if the application is going to consume the Audio or Instant Message call and perform some logic based on the input I use the ServerPlatformSettings. &lt;B style="mso-bidi-font-weight: normal"&gt;IE:&lt;/B&gt; Response Bots. If my application is just providing an abstraction method for a user that already has credentials to sign in and message users, then I would use the ClientPlatformSettings. &lt;B style="mso-bidi-font-weight: normal"&gt;IE: &lt;/B&gt;Build your own &lt;I style="mso-bidi-font-style: normal"&gt;authenticated&lt;/I&gt; Web Messaging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;For this post, we will use the ServerPlatformSettings.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Arial','sans-serif'"&gt;ServerPlatformSettings &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;platformSettings = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ServerPlatformSettings&lt;/SPAN&gt;(appName, appServerFqdn, applicationPort, gruu, cert);&lt;BR&gt;&lt;SPAN style="COLOR: #2b91af"&gt;CollaborationPlatform &lt;/SPAN&gt;collabPlatform = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;CollaborationPlatform&lt;/SPAN&gt;(platformSettings);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;collabPlatform.EndStartup(collabPlatform.BeginStartup(&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Once the CollaborationPlatform object has completed starting up, we need to setup our EndPoint. There are two choices, ApplicationEndPoint and UserEndPoint, if you are using the ClientPlatformSettings then you need to use the UserEndPoint, since we are using the ServerPlatformSettings we need to use the ApplicationEndPoint.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Arial','sans-serif'"&gt;ApplicationEndpointSettings&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; settings = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ApplicationEndpointSettings&lt;/SPAN&gt;(applicationUri, ocsFqdn, ocsTlsPort);&lt;BR&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ApplicationEndpoint &lt;/SPAN&gt;endpoint = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ApplicationEndpoint&lt;/SPAN&gt;(collabPlatform, settings);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;If our WF application is an Inbound application, we need to register for the type of calls the WF will handle, but remember that the WF can only accept AV and IM calls and can't accept conferencing calls. That’s not to say you couldn’t register to receive a conference invite, and handle the conferencing features using the Core API itself, but that is another post.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;endpoint.RegisterForIncomingCall&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;AudioVideoCall&lt;/SPAN&gt;&amp;gt;(AudioVideoCallReceived);&lt;BR&gt;endpoint.RegisterForIncomingCall&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;InstantMessagingCall&lt;/SPAN&gt;&amp;gt;(InstantMessagingCallReceived);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Once we have done that, we can establish our endpoint.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;endpoint.EndEstablish(endpoint.BeginEstablish(&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, endpoint));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Next we need to start the Workflow Runtime and add the UCMA WF Services, this isn’t so much related to UCMA as it is to WF itself. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;WorkflowRuntime&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;workflowRuntime = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;WorkflowRuntime&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;workflowRuntime.AddService(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;CommunicationsWorkflowRuntimeService&lt;/SPAN&gt;());&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;workflowRuntime.AddService(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;TrackingDataWorkflowRuntimeService&lt;/SPAN&gt;());&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;workflowRuntime.StartRuntime();&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Finally we need to route the call to our workflow, via the handler methods we registered for earlier. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;AudioVideoCallReceived&lt;BR&gt;InstantMessagingCallReceived&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;When a call comes in, we need to pass the call to our workflow application and from there the Workflow handles the rest:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;WorkflowInstance&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; workflowInstance = workflowRuntime.CreateWorkflow(&lt;SPAN style="COLOR: #2b91af"&gt;WorkflowType&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;CommunicationsWorkflowRuntimeService&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; communicationsWorkflowRuntimeService = (&lt;SPAN style="COLOR: #2b91af"&gt;CommunicationsWorkflowRuntimeService&lt;/SPAN&gt;)workflowRuntime.GetService(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;CommunicationsWorkflowRuntimeService&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;communicationsWorkflowRuntimeService.EnqueueCall(workflowInstance.InstanceId, &lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;call&lt;/I&gt;&lt;/B&gt;); &lt;SPAN style="COLOR: green"&gt;//Call object is passed by the receiving handler&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;communicationsWorkflowRuntimeService.SetEndpoint(workflowInstance.InstanceId, &lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;endpoint&lt;/I&gt;&lt;/B&gt;);&lt;SPAN style="COLOR: green"&gt; //Endpoint object is a local variable&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;communicationsWorkflowRuntimeService.SetWorkflowCulture(workflowInstance.InstanceId, &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;CultureInfo&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"en-US"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;workflowInstance.Start();&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I was thinking about it and all of this is pretty repetitive code from one workflow to another workflow application, this all has to be done, everytime for every WF project. I’ve created a solution that I will release on CodePlex last this week. Basically the solution is a Windows Service that will take the parameters, GRUU, port, etc… log into OCS and route calls to the workflow you provide as a compiled assembly. Also part of this solution utilizes MSMQ, in much the same way Speech Server did. You can associate a MSMQ name to an application, if a message is in that queue if will fire off the workflow you specify or use the default built in WF application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The Jist of it is, instead of worrying about writing all the code above, you can concentrate on just the workflow portion. Compile the WF as an Assembly instead of a Console application, add the application parameters to the App.Config of this UCMA Application Host service and you are done! A picture is worth a thousand words, so here is a high level picture of the solution.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;/SPAN&gt;&lt;IMG style="WIDTH: 508px; HEIGHT: 309px" height=304 src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/9581194/original.aspx" width=476 mce_src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/9581194/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;STRONG&gt;I am also working on releasing the following solutions on CodePlex:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;/SPAN&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Updated Web Chat sample. The current released Web Chat uses UC AJAX, this updated one will use UCMA 2.0, WCF &amp;amp; SilverLight.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;EM&gt;&lt;STRONG&gt;Client Framework. An abstraction layer to both UC Client and Communicator Automation.&lt;/STRONG&gt;&lt;/EM&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9570468" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="UCMA v2.0" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UCMA+v2-0/" /><category term="WF" scheme="http://blogs.msdn.com/b/midunn/archive/tags/WF/" /></entry><entry><title>OCS 2007 R2 Virtual Launch</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2009/01/28/ocs-2007-r2-virtual-launch.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2009/01/28/ocs-2007-r2-virtual-launch.aspx</id><published>2009-01-28T19:02:00Z</published><updated>2009-01-28T19:02:00Z</updated><content type="html">&lt;DIV class=Section1&gt;
&lt;P class=MsoNormal&gt;Sign up for the OCS 2007 R2 Virtual Launch on Feburary 3rd.&lt;BR&gt;&lt;A class="" href="http://www.microsoft.com/communicationsserver/virtualevent/languageselect.aspx" mce_href="http://www.microsoft.com/communicationsserver/virtualevent/languageselect.aspx"&gt;http://www.microsoft.com/communicationsserver/virtualevent/languageselect.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;And just to keep entertain until Feburary 3rd, here are some R2 launch teaser videos:&lt;BR&gt;&lt;FONT color=#0000ff&gt;&lt;A class="" href="http://www.youtube.com/profile?user=OCSR2Launch&amp;amp;view=videos" mce_href="http://www.youtube.com/profile?user=OCSR2Launch&amp;amp;view=videos"&gt;http://www.youtube.com/profile?user=OCSR2Launch&amp;amp;view=videos&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9381271" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="OCS R2" scheme="http://blogs.msdn.com/b/midunn/archive/tags/OCS+R2/" /></entry><entry><title>Windows Speech Recognition Macros Tools have Shipped!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2009/01/28/windows-speech-recognition-macros-tools-have-shipped.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2009/01/28/windows-speech-recognition-macros-tools-have-shipped.aspx</id><published>2009-01-28T19:00:00Z</published><updated>2009-01-28T19:00:00Z</updated><content type="html">&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;I blogged about these earlier and they have finally shipped. You can download them here:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;FONT color=#0000ff&gt;&lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fad62198-220c-4717-b044-829ae4f7c125&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fad62198-220c-4717-b044-829ae4f7c125&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=fad62198-220c-4717-b044-829ae4f7c125&amp;amp;displaylang=en&lt;/A&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9381259" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Speech Recognition" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Speech+Recognition/" /></entry><entry><title>Status Update</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2009/01/12/status-update.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2009/01/12/status-update.aspx</id><published>2009-01-12T10:03:00Z</published><updated>2009-01-12T10:03:00Z</updated><content type="html">&lt;P&gt;I've been MIA for a couple months mainly for Office Communications Server 2007 R2 to RTM, but I've also been busy at work. &lt;/P&gt;
&lt;P&gt;I promise I will get the the UCMA 2.0 Workflow post I promised, but those of you wanting to get a taste of UCMA now, check out Joe Calev's blog, he currently has a full seris on UCMA 2.0 Core right now. &lt;A href="http://blogs.msdn.com/jcalev/default.aspx" mce_href="http://blogs.msdn.com/jcalev/default.aspx"&gt;http://blogs.msdn.com/jcalev/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Right now I am in Redmond for 3 weeks for the first rotation of Microsoft Certified Master program for Office Communications Server 2007 R2. All I can say it that it will be &lt;STRONG&gt;very very&lt;/STRONG&gt; long days, including doing training on the weekend. As much as I am looking forward to it, I am also dreading it. 3 weeks away from home, actually 4 weeks as I will also be attending TechReady, our internal conference, and probably 11-12 hours in a classroom...&amp;nbsp; This class probably is not for the faint of heart.&lt;/P&gt;
&lt;P&gt;If are not sure what it is MCM is, you can read more here: &lt;A href="http://www.microsoft.com/learning/mcp/master/OCS/default.mspx" mce_href="http://www.microsoft.com/learning/mcp/master/OCS/default.mspx"&gt;http://www.microsoft.com/learning/mcp/master/OCS/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The long time away from home will actually give me some time to finally blog.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9307134" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="UCMA v2.0" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UCMA+v2-0/" /><category term="MCM" scheme="http://blogs.msdn.com/b/midunn/archive/tags/MCM/" /></entry><entry><title>Speech Server 2007 vs UCMA v2.0 WF activites</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/10/15/speech-server-2007-vs-ucma-v2-0-wf-activites.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/10/15/speech-server-2007-vs-ucma-v2-0-wf-activites.aspx</id><published>2008-10-15T08:10:00Z</published><updated>2008-10-15T08:10:00Z</updated><content type="html">&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;I am planning a series of blog post&lt;/SPAN&gt;&lt;/I&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA"&gt;s&lt;/SPAN&gt;&lt;/I&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt; that will show you how to create UCMA WF applications that can answer the telephone with speech recognition and speech synthesis abilities. However before I do that I &lt;B style="mso-bidi-font-weight: normal"&gt;HAVE&lt;/B&gt; to explain the differences between UCMA and Speech Server so that there is no confusion.&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;/SPAN&gt;&lt;/I&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;STRONG&gt;&lt;U&gt;Speech Server vs UCMA&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-language: JA"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;With OCS 2007 R2 there has been an update to UCMA (Unified Communications Managed API), simply named UCMA 2.0. This new and approved API has a lot of new features, support for presence, telephony, speech recognition&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;, &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;speech synthesis&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;, etc… In R2 there is &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;NO&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt; update for Speech Server, that being said you can continue to run Speech Server as is in tandem with your R2 environment.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;On top of the &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;C&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;ore API is a new WF API,&amp;nbsp;which abstracts a lot of&amp;nbsp;common "activities" that a UCMA application might do.&amp;nbsp;At first glance it may appear that this WF API is a replacement for Speech Server, but there are a few &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;major &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;differences &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;that you need to consider when&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt; deciding if an application should be a Speech Server application or a UCMA application.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here are what I consider the 4 &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;major&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt; deciding factors when choosing between Speech Server or UCMA.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo1; tab-stops: list .5in"&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;Platform vs. API&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;The main difference between these two is that Speech Server is not only an API, but is also an enterprise grade IVR&amp;nbsp; to host these applications. With Speech Server you only have to worry about developing the front end, SALT, VoiceXML or Speech WF application. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;UCMA 2.0 WF is simply an API, you need to build the front end of the application as well as building the host application. You can host these applications in a Windows Form, Console application, Windows Service, etc.. Obviously a Windows Service makes the most sense.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; UCMA 2.0 does NOT have built-in activities for VXML nor SALT.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;OL type=1 start=2&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;Infrastructure&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;The big difference here is Speech Server typically sits off as its own branch from your PBX or Media Gateway, while UCMA 2.0 sits behind the mediation server. At first this seems trivial and maybe even a good idea, but there is a reason a typical IVR application sits outside of the voice network that you use for day to day communications. &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;IE:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;I style="mso-bidi-font-style: normal"&gt;Do you want your IVR to take up internal bandwidth and/or the lines that you use to for your telephone communications?&lt;/I&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;If you are only expecting a small amount calls, then deploying a UCMA 2.0 application shouldn’t be a big issue, but if you are building a UCMA 2.0 application that is going to continuously use 50+ ports, you need to do some planning and additional infrastructure work before deploying behind your existing OCS environment. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; 50 simultaneous ports is a relative number. The key takeaway here is don’t expect to simply throw a UCMA application behind your existing mediation server and not expect to consider the impact. You can add additional mediation servers and gateways to solve scaling problems. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL type=1 start=3&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l3 level1 lfo3; tab-stops: list .5in"&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;Developer Tools&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;Speech Server contains developer tools that abstract things like SRGS grammars with a nice visual grammar editor. UCMA does not yet have these tools, so be prepared to write some of your own SRGS by hand. Small feature, but it can save a lot of development effort. I’ve said it before and I’m saying it again, most of you development effort&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;with any speech enabled solution &lt;B&gt;will&lt;/B&gt; be spent on grammars. In a UCMA application, SRGS is not only used to recognized speech, but also text from instant messaging conversations.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;UCMA also does not have the SIP Debugging Phone as Speech Server does, this means that in order to debug a UCMA application you need to call the application via Communicator and/or an actual telephone. Also with the infrastructure requirements of having an actual OCS environment with mediation server, you won’t be able to debug application very easily “offline”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-weight: bold; mso-bidi-font-size: 11.0pt"&gt;Don’t expect to write and debug UCMA 2.0 applications sitting on a plane like you did with Speech Server. Yes you can create a virtualized OCS 2007 R2 environment but it is going to require HyperV and at least 8 GB of RAM. I’ve finally upgraded so I can do just that, but I realize that not everyone is going to be able to.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL type=1 start=4&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo4; tab-stops: list .5in"&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;Reporting &amp;amp; Tuning&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;B&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;Speech Server has the Tuning &amp;amp; Analysis tools, which comes in handy for simple reports like “How many calls did my application get?”, “How many times did a grammar fail?”. This reporting is absolutely necessary and for any enterprise class IVR solution. If you want some of this reporting for UCMA 2.0, you are going to have to build it yourself. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA; mso-fareast-font-family: 'Times New Roman'"&gt;Outside of the reporting side, are the tuning tools, which allow you to test grammar changes on actual callers recorded audio, before deploying.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-language: JA"&gt;I hope this post as helped you understand the differences between Speech Server and UCMA. UCMA 2.0 clearly is a step on the roadmap to include speech tightly into the UC platform and OCS. Expect that things like the speech tools will be available by the next release in the not too distant future.&lt;/P&gt;
&lt;DIV id=imcontent style="MARGIN-LEFT: 12px; POSITION: relative"&gt;&lt;SPAN&gt;&lt;FONT face="MS Shell Dlg 2" color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;Next post will talk about the features of UCMA…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9000408" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Speech Server" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Speech+Server/" /><category term="OCS R2" scheme="http://blogs.msdn.com/b/midunn/archive/tags/OCS+R2/" /><category term="UCMA v2.0" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UCMA+v2-0/" /></entry><entry><title>Office Communications Server 2007 R2 Unveiled at VoiceCon Amsterdam</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/10/14/office-communications-server-2007-r2-unveiled-at-voicecon-amsterdam.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/10/14/office-communications-server-2007-r2-unveiled-at-voicecon-amsterdam.aspx</id><published>2008-10-14T16:45:00Z</published><updated>2008-10-14T16:45:00Z</updated><content type="html">&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;News Article here:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="http://biz.yahoo.com/prnews/081014/aqtu055.html?.v=76"&gt;http://biz.yahoo.com/prnews/081014/aqtu055.html?.v=76&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;This announcement allows me to start blogging about R2 development features. Expect many UCMA v2.0 blog posts soon!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8999497" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="OCS R2" scheme="http://blogs.msdn.com/b/midunn/archive/tags/OCS+R2/" /></entry><entry><title>CTI (Computer Telephony Integration) w/ Office Communications Server</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/10/14/cti-computer-telephony-integration-illrevelvance.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/10/14/cti-computer-telephony-integration-illrevelvance.aspx</id><published>2008-10-14T04:26:00Z</published><updated>2008-10-14T04:26:00Z</updated><content type="html">&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;Side Note:&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; &lt;EM&gt;I know I haven’t blogged much recently, but I’ve changed roles within Microsoft, been on parental leave and busy working with customers. However I am planning a series of post about creating UC solutions&lt;/EM&gt;.. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I get this question a lot, &lt;I style="mso-bidi-font-style: normal"&gt;"Does Office Communications Server integrate with CTI?"&lt;/I&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; &lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;The Answer:&lt;/B&gt; It depends&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Why do I say that? Well when most people ask about CTI, they are typically asking about CSTA applications. &lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'"&gt;IE:&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;EM&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'"&gt;ACD, Predictive Dialing, Screen Pops, etc..&lt;/SPAN&gt;&lt;/EM&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;And it depends on your OCS implementation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;U&gt;Remote Call Control&lt;/U&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;You can run your current CSTA based CTI application in tandem with your OCS environment in a Remote Call Control scenario as your CTI server will sit as a branch off the PBX.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;However &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;the&amp;nbsp;Remote Call Control scenario has&amp;nbsp;no real interaction between OCS and the CTI server&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Th&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;erefore &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;you can't call that &lt;I style="mso-bidi-font-style: normal"&gt;real&lt;/I&gt; integration. Besides the Remote Call Control scenario doesn't utilize the full potential of &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;our&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; UC platform&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-no-proof: yes"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;IMG style="WIDTH: 400px; HEIGHT: 201px" height=201 src="http://i.technet.microsoft.com/cc194410.fig01(en-us).gif" width=400 mce_src="http://i.technet.microsoft.com/cc194410.fig01(en-us).gif"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;Enterprise Voice with PBX Integration&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;With a&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; OCS deployment with Enterprise Voice, can it support your CSTA based CTI&amp;nbsp;applications? No for the fact that &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;your internal telephones&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; are &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;no longer "&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;directly"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&amp;nbsp;linked&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; to the PBX, but instead all telephone calls are routed through your OCS infrastructure. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;IMG style="WIDTH: 400px; HEIGHT: 201px" height=201 src="http://i.technet.microsoft.com/cc194410.fig02(en-us).gif" width=400 mce_src="http://i.technet.microsoft.com/cc194410.fig02(en-us).gif"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;BR&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Does this mean OCS doesn't support CTI applications?&lt;/B&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;No, it just means that it doesn't support CSTA based CTI applications. CTI doesn't have to be based on CSTA. If you look at what CSTA is&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;,&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; it is&amp;nbsp;essentially a schema&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;A&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; schema that defines what a telephone call is&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; and from&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; a software developer perspective this is antiq&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;uated&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; approach to solving a common problem&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; Why don't we have predefined schemas for everything, such as customer data, financial transactions etc... ?&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; All business have customers and money changing hands, yet we don't commonly see standardize schemas. Yes having predefined schemas for everything would solve a lot of problems, but businesses are &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;unique&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;J&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;ust because you run a bakery doesn't mean all bakeries care about the same data. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;EM&gt;I know it seems like a Microsoft employee bashing "standards" but keep reading.&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Let's take "Screen Pops" for example, when a call is transferred from the IVR application to an agent, the agent should get the customer's &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;information from the data the IVR collected&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;. In a traditional CSTA environment the call information and relevant data is written to the CTI server. When the call gets transferred to the agent, the agent has a piece of software sitting on the desktop which either queries or gets notified with the appropriate data&amp;nbsp;from the CTI server.&amp;nbsp; If you remove the context of the telephone, it simply is a client application that gets notification from &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;a server application&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; that an event has occurred and passes the data to the client. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;.NET and/or Java developers create client/server applications every day!&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; As a .NET developer I'd create a WCF service which the IVR application could call and pass in the data it collected, along with the who it is transferring the call to. On the agent's desktop I would have a small application that would register it's endpoint with the service and listen for any events that pertain to it. The &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;client &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;application could even integrate directly with a CRM application, &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;provided that the CRM application has some sort of API.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I know you are probably reading this and wondering what does this have to do with OCS? Well nothing&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;and that's just the point…&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;In this Screen Pop solution, the actual Screen Pops have nothing to do with OCS. The OCS APIs could be used to create the front end IVR application and provide business logic presence information for agents, so that the IVR knows who to route the call t&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;o.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;NOT to display Screen Pops. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I know what I am saying goes against&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; what others have suggested such as the&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=84AC7DD7-99D3-48F7-99D7-A281BD616407&amp;amp;displaylang=en"&gt;UC Client API - Screen Pop Sample&lt;/A&gt;. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;It is however&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;just a sample &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;and is only &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;one way to solve a problem&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;In&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; my opinion &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;creating a custom OCS client to display “Screen Pops”&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;does&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; "lock" you down to OC&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;S, not to mention the increase investment of time to develop the application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;You shouldn't try and reinvent the wheel using the UC APIs, but use them for something that doesn't already &lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;exist&lt;/SPAN&gt;. My rule of thumb is that the UC APIs should be used to serve two purposes: &lt;STRONG&gt;1.)&lt;/STRONG&gt; Provide modalities to your applications. &lt;STRONG&gt;IE:&lt;/STRONG&gt; &lt;EM&gt;Telephony and IM&lt;/EM&gt;&amp;nbsp; &lt;STRONG&gt;2.)&lt;/STRONG&gt; Provide your application with presence data.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;Conclusion&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;CSTA defines a "standard" so that you aren't &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;“locked” down&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; to use prop&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;rietary&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; extensions&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;B&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;y applying &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;modern &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;SOA techniq&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;ues&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; to your solution you create a solution&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; that is loosely coupled and &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;could easily be adapted to any other OCS&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; ish &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;product&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt;s&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; out there&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; and therefore not forever committing you to a single product and/or platform&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA"&gt; Believe it or not as a Microsoft employee, I don’t want you to feel that you are “locked” into our products, I want you to buy our products because they are the best in the industry and will give you the greatest return on your investment.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8999133" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Unified Communications" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Unified+Communications/" /><category term="OCS" scheme="http://blogs.msdn.com/b/midunn/archive/tags/OCS/" /><category term="SOA" scheme="http://blogs.msdn.com/b/midunn/archive/tags/SOA/" /></entry><entry><title>New UC API Samples Released!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/09/11/new-uc-api-sample-released.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/09/11/new-uc-api-sample-released.aspx</id><published>2008-09-11T05:07:00Z</published><updated>2008-09-11T05:07:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;A few new code samples&amp;nbsp;have been&amp;nbsp;released on various UC APIs. I haven't checked them all our yet, but I can speak a little to the "Integrating Web Chat Functionality" as I know the guy who wrote it...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The Web Chat Functionality sample&amp;nbsp;shows you how you can have anonymous web users have an IM conversation with an OCS end user, without the web user providing any credentials. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;STRONG&gt;&lt;U&gt;&amp;nbsp;Web Chat&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Think about visiting a web&amp;nbsp;site,&amp;nbsp;for example an ecommerce website, and the customer has a question about a product, while they could email and/or&amp;nbsp;call, the customer would have to leave the computer and make the extra effort. This Web Chat samples tries and solves&amp;nbsp;that problem by allows the customers to simply click on a link and&amp;nbsp;have an IM conversation via thier browser with&amp;nbsp;a representative&amp;nbsp;and/or a bot&amp;nbsp;from the ecommerce website.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;This is one example of "Click to Chat".&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The&amp;nbsp;technology behind the solution is farily simple,&amp;nbsp;combining the &amp;nbsp;UC AJAX API into a service, in this case a WCF service which logs into CWA via a single UC Enabled account. The WCF service is the only application that is comunicates with CWA. The browser application uses .NET 3.5 WebHTTPBinding and JSON to communicate directly to the WCF service.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;The WCF controls which browser endpoints get which messages it has receieved, by assigning web users a GUID. The Browser application using a polling technique to get the messages from the service.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;STRONG&gt;&lt;U&gt;&amp;nbsp;WPF Presence&amp;nbsp;Controls&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Another exciting sample are the WPF Presence Controls. While we had the WinForms controls we didn't have WPF controls and it was something requested by everyone who looked at the WinForm controls. Download them and check out George Durzi's blog post about these controls.&lt;BR&gt;&lt;A href="http://blogs.claritycon.com/blogs/george_durzi/archive/2008/09/08/wpf-presence-controls-for-microsoft-office-communicator.aspx"&gt;http://blogs.claritycon.com/blogs/george_durzi/archive/2008/09/08/wpf-presence-controls-for-microsoft-office-communicator.aspx&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Integrating Web Chat Functionality - Microsoft Unified Communications AJAX API Sample&lt;BR&gt;&amp;nbsp;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C8C3F762-7BE4-4541-9B18-82499DB61293&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=C8C3F762-7BE4-4541-9B18-82499DB61293&amp;amp;displaylang=en&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;&lt;U&gt;WPF Presence Controls for Microsoft Office Communicator 2007 - Microsoft Office Communicator 2007 SDK Sample&lt;/U&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5001D612-533A-4721-91EA-DA990D94FF0F&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=5001D612-533A-4721-91EA-DA990D94FF0F&amp;amp;displaylang=en&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;&lt;U&gt;Dynamics CRM Integration with Office Communications Server&lt;/U&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6E2EA762-A6C9-43BD-8C84-BF610073765C&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=6E2EA762-A6C9-43BD-8C84-BF610073765C&amp;amp;displaylang=en&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;U&gt;&lt;STRONG&gt;Customer Relationship Management (CRM) Activity - Microsoft Unified Communications Managed API 1.0 Sample&lt;/STRONG&gt;&lt;/U&gt;&lt;BR&gt;&amp;nbsp;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=16303459-DD75-451F-B7C0-FB2EB0D9A84A&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=16303459-DD75-451F-B7C0-FB2EB0D9A84A&amp;amp;displaylang=en&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;&lt;U&gt;Communicator 2007 Custom Tabs - Microsoft Office Communicator 2007 Sample&lt;/U&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=621C675C-46B7-4F68-ADDC-9F44E5594BFB&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=621C675C-46B7-4F68-ADDC-9F44E5594BFB&amp;amp;displaylang=en&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8942746" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="UC AJAX" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UC+AJAX/" /><category term="UC API" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UC+API/" /></entry><entry><title>Sending SMS messages via Communicator</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/07/31/sending-sms-messages-via-communicator.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/07/31/sending-sms-messages-via-communicator.aspx</id><published>2008-07-31T14:51:00Z</published><updated>2008-07-31T14:51:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;If you are using PIC (Public IM Connectivity) in OCS, you can send SMS messages to any capable phone in North America, via AOL's SMS Gateway simply by sending a message to an E.164 normalized phone number. IE: +16128591899 and appending the AOL domain name, &lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;aol.com&lt;/I&gt;&lt;/B&gt;.&lt;BR&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 371px; HEIGHT: 373px" height=373 src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8793244/original.aspx" width=371 mce_src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8793244/original.aspx"&gt;&lt;A href="mailto:+6128591899@aol.com" mce_href="mailto:+6128591899@aol.com"&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;While this is fairly useful by itself, for it to be extremely useful you'd have to take advantage of this via one of the UC APIs. For example, you could use the UC AJAX API and Speech Server to send a SMS message to caller confirmation details of their call OR maybe you create an IM bot with UCMA v 1.0&amp;nbsp;that sends a transcript of the chat to the user’s SMS device. The possibilities are endless...&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8793235" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="UC API" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UC+API/" /><category term="SMS" scheme="http://blogs.msdn.com/b/midunn/archive/tags/SMS/" /></entry><entry><title>Unified Communications Developer Labs</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/07/21/unified-communications-developer-labs.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/07/21/unified-communications-developer-labs.aspx</id><published>2008-07-21T19:37:00Z</published><updated>2008-07-21T19:37:00Z</updated><content type="html">&lt;P&gt;I was checking out the &lt;A class="" href="http://msdn.microsoft.com/en-us/office/aa905374.aspx" mce_href="http://msdn.microsoft.com/en-us/office/aa905374.aspx"&gt;UC Developer Portal&lt;/A&gt; recently and It seems&amp;nbsp;it is&amp;nbsp;not up to date on the available Virtual Labs for UC Developers, as it only list 5.&lt;/P&gt;
&lt;P&gt;For a more up to date list, you can visit this URL:&lt;A class="" title=http://msevents.microsoft.com/CUI/AdvancedSearch.aspx?culture=en-US#culture=en-US;advanced=true;sortKey=;sortOrder=;pageEvent=false;startDate=7/21/2008;endDate=12/31/2008;kwdAny=;countryId=US;languageCode=en;audience=2;products=170;eventType=4;searchcontrol=yes;s=1 href="http://msevents.microsoft.com/CUI/AdvancedSearch.aspx?culture=en-US#culture=en-US;advanced=true;sortKey=;sortOrder=;pageEvent=false;startDate=7/21/2008;endDate=12/31/2008;kwdAny=;countryId=US;languageCode=en;audience=2;products=170;eventType=4;searchcontrol=yes;s=1" mce_href="http://msevents.microsoft.com/CUI/AdvancedSearch.aspx?culture=en-US#culture=en-US;advanced=true;sortKey=;sortOrder=;pageEvent=false;startDate=7/21/2008;endDate=12/31/2008;kwdAny=;countryId=US;languageCode=en;audience=2;products=170;eventType=4;searchcontrol=yes;s=1"&gt;http://msevents.microsoft.com/CUI/AdvancedSearch.aspx?culture=en-US#culture=en-US;advanced=true;sortKey=;sortOrder=;pageEvent=false;startDate=7/21/2008;endDate=12/31/2008;kwdAny=;countryId=US;languageCode=en;audience=2;products=170;eventType=4;searchcontrol=yes;s=1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It looks like these Vitual Labs cover the UC AJAX and Communicator Automation in depth.&amp;nbsp;I think there is one lab on UCMA, but there doesn't appear to be one on the UC Client API. Overall very good materal and if you are new to using any of these APIs, take the time and go through the labs, best of all they are free to use.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8762007" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Labs" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Labs/" /><category term="UC API" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UC+API/" /></entry><entry><title>Re: Presence in WPF </title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/06/27/re-presence-in-wpf.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/06/27/re-presence-in-wpf.aspx</id><published>2008-06-27T20:56:00Z</published><updated>2008-06-27T20:56:00Z</updated><content type="html">&lt;P&gt;Michiel van Oudheusden from e-office, has taken the challenge to actually hook up the the WPF Presence bubble screensaver to Communicator to show presence of your contacts! &lt;/P&gt;
&lt;P&gt;&lt;A href="http://unified-communications-development.blogspot.com/"&gt;http://unified-communications-development.blogspot.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The blog belongs to &lt;SPAN id=naamLabel&gt;Joachim Farla and Marc Wetters of e-office. Make sure to check out some of the other post.&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8662406" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Presence" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Presence/" /><category term="Communicator Automation API" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Communicator+Automation+API/" /><category term="WPF" scheme="http://blogs.msdn.com/b/midunn/archive/tags/WPF/" /></entry><entry><title>Presence in WPF</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/06/21/presence-in-wpf.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/06/21/presence-in-wpf.aspx</id><published>2008-06-21T11:53:00Z</published><updated>2008-06-21T11:53:00Z</updated><content type="html">&lt;P&gt;A very interesting article on using WPF to display presence by Erik Klimczak from Clarity Consulting. It goes more into the WPF side, than the actual presence, but you need to know how to make your presence bubbles look good too! I love the example of creating a screen saver out of it, It doesn't currently show actual users presence, but&amp;nbsp;the article challenges you to&amp;nbsp;add that your self. I'd&amp;nbsp;also like to extend that challenge!&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;Hint:&lt;/STRONG&gt; I'd look into using the Communicator Automation API first. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Article:&lt;/EM&gt;&lt;/STRONG&gt; &lt;A href="http://blogs.msdn.com/coding4fun/archive/2008/06/20/8626294.aspx"&gt;http://blogs.msdn.com/coding4fun/archive/2008/06/20/8626294.aspx&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8630321" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Presence" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Presence/" /><category term="WPF" scheme="http://blogs.msdn.com/b/midunn/archive/tags/WPF/" /></entry><entry><title>Integrating Speech Server with Office Communications Server</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/06/17/integrating-speech-server-with-office-communications-server.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/06/17/integrating-speech-server-with-office-communications-server.aspx</id><published>2008-06-17T23:11:00Z</published><updated>2008-06-17T23:11:00Z</updated><content type="html">&lt;P&gt;While Speech Server is apart of Office Communications Server, the two do not rely on each and actually do not integrate with each other out of the box. However that doesn't mean it can not be done.&lt;/P&gt;
&lt;P&gt;There are two main scenarios which I am always asked about are:&lt;/P&gt;
&lt;P&gt;1.) Communicator Calls to Speech Server&lt;BR&gt;2.) Transferring Speech Server calls to Communicator&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;U&gt;Calling&amp;nbsp;Speech Server from Communicator&lt;/U&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The first thing&amp;nbsp;you need to do is setup a static route in OCS to Speech Server. Here you will need to assign a sub domain, something like ivr.domain.com. This tells OCS to route all calls where the domain contains ivr.domain.com to Speech Server.&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612492/original.aspx" mce_href="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612492/original.aspx"&gt;&lt;IMG src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612492/640x264.aspx" border=0 mce_src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612492/640x264.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Next in the Speech Server administrator console you will need to add the OCS Front End Server as a Trusted SIP Peer on non default ports, such as 5068 for TCP and&amp;nbsp; 5069 for TLS. This is required as OCS doesn't handle the 302 Redirect Messages that Speech Server uses, by assigning non default ports we "turn off" these SIP&amp;nbsp;messages. You will&amp;nbsp;also need to enable Mutual TLS.&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612493/original.aspx" mce_href="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612493/original.aspx"&gt;&lt;IMG src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612493/640x449.aspx" border=0 mce_src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612493/640x449.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&amp;nbsp;&lt;EM&gt;This will be using TLS, OCS will already have a certificate installed, but Speech Server probably won't, now would be the time to install a certificate&amp;nbsp;on Speech Server.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Next you will need to deploy your application and again assign non defaults ports, these ports should be the same ports as the Trusted SIP Peer. You can assign a "telephone number" to the application as well.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A class="" href="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612494/original.aspx" mce_href="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612494/original.aspx"&gt;&lt;IMG style="WIDTH: 640px; HEIGHT: 468px" height=468 src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612494/640x468.aspx" width=640 border=0 mce_src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612494/640x468.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Now you&amp;nbsp;can dial the Speech Server application from Communicator by dialing the static route, like &lt;A href="mailto:411@ivr.domain.com" mce_href="mailto:411@ivr.domain.com"&gt;411@ivr.domain.com&lt;/A&gt;. &lt;BR&gt;411 being the extension that you assigned to your application and ivr.domain.com being the sub domain&amp;nbsp;you specified in the OCS routing tab.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 397px; HEIGHT: 422px" height=422 src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612526/original.aspx" width=397 border=0 mce_src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612526/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Transferring Calls to OCS users&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;When trying to create a transfer type Speech Server application, you need to know one rule. &lt;STRONG&gt;You can only transfer via the SIP Peer in which the call orginated.&lt;/STRONG&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Let's take the static route example we setup previously, if my Speech Server application does a transfer to another OCS user, it would transfer back to the OCS Front End Server and would transfer apporiately via a specified SIP URI. However you couldn't transfer the call to say a PSTN, as the call orginated via OCS.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; &lt;EM&gt;To do this type of "internal" transfer, make sure to add Speech Server to the Host Authorization tab in the Front End Properties of OCS.&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Back to the orginal scenario, a call comes in via the PSTN to probably a VoIP Gateway,&amp;nbsp;meaning when we do a transfer it will be routed back to that same gateway. Depending on your VoIP Gateway, you need to have rules, one or more numbers assigned to forward to Speech Server, and the rest of the numbers should get routed to the Mediation Server. &lt;/P&gt;
&lt;P mce_keep="true"&gt;Typically you do not want Speech Server to sit behind the Mediation Server but next it, as shown in the diagram below.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 489px; HEIGHT: 480px" height=480 src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612643/489x480.aspx" width=489 border=0 mce_src="http://blogs.msdn.com/photos/midunnmicrosoftcom/images/8612643/489x480.aspx"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;In your Speech Server application when we do a transfer, instead of transferring to a SIP URI like: sip:midunn@microsoft.com;transport=tcp, you need to transfer to a TEL URI, like tel:+16128591899@microsoft.com;transport=tcp.&amp;nbsp; Using the TEL URI, the gateway will correctly route it to the mediation server and the mediation server will in turn route it to the correct user. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Tip:&lt;/STRONG&gt; &lt;EM&gt;Depending on your VoIP Gateway, SIP Proxy, PBX, whatever, specificing the transport parameter is a good idea. I've run into issues where the some 3rd party SIP applications revert back to UDP if this isn't specified.&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8612431" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Speech Server" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Speech+Server/" /><category term="OCS" scheme="http://blogs.msdn.com/b/midunn/archive/tags/OCS/" /></entry><entry><title>Microsoft TechEd 2008 Developers June 3-6 - Orlando, FL</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/05/28/microsoft-teched-2008-developers-june-3-6-orlando-fl.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/05/28/microsoft-teched-2008-developers-june-3-6-orlando-fl.aspx</id><published>2008-05-28T10:38:00Z</published><updated>2008-05-28T10:38:00Z</updated><content type="html">&lt;P&gt;Bill Gates will be doing the Keynote and probably one of his last before he retires. &lt;/P&gt;
&lt;P&gt;I'll be doing a couple of sessions at TechEd on Speech Server with Albert Kooiman.&amp;nbsp; You can check out sessions, events, register,&amp;nbsp;etc.. at &lt;A href="http://www.msteched.com/"&gt;www.msteched.com&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;If you are attending drop me a line and let's make some time for a drink at one of the after hours events!&lt;/EM&gt; &lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8556234" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Events" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Events/" /></entry><entry><title>Upcoming UC Developer Events</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/05/05/upcoming-uc-developer-events.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/05/05/upcoming-uc-developer-events.aspx</id><published>2008-05-05T22:30:00Z</published><updated>2008-05-05T22:30:00Z</updated><content type="html">&lt;P&gt;May &amp;amp; June Upcoming Unified Communications Developer Events &amp;amp; Training!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Online:&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;May 21 - &lt;A class="" href="https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032376785&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US" mce_href="https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032376785&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;MSDN Webcast: geekSpeak: Contextual Collaboration Using Unified Communications with George Durzi (Level 200)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Classroom:&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;May&amp;nbsp;15-16 -&amp;nbsp;Sydney, Australia - &amp;nbsp;&lt;A class="" href="https://training.partner.microsoft.com/plc/register.aspx?publisher=12&amp;amp;delivery=246259" mce_href="https://training.partner.microsoft.com/plc/register.aspx?publisher=12&amp;amp;delivery=246259"&gt;Microsoft Office - Unified Communications (UC) Platform Developer Metro Training&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;May&amp;nbsp;22 - &lt;SPAN id=lblAddress4&gt;Bellvue&lt;/SPAN&gt;, WA - &lt;SPAN id=lblEventTitle&gt;&lt;A class="" href="https://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032377089" mce_href="https://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032377089"&gt;Extending the collaborative benefits of Microsoft UC and Sharepoint&lt;/A&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;May 19-20 - Redmond, WA - &lt;A class="" href="https://training.partner.microsoft.com/plc/details.aspx?systemid=1800213&amp;amp;page=/plc/search_adv.aspx" mce_href="https://training.partner.microsoft.com/plc/details.aspx?systemid=1800213&amp;amp;page=/plc/search_adv.aspx"&gt;Microsoft Office UC (Unified Communications) Platform Developer Training&lt;/A&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Seminars&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;June 11 - Dowers Grove, IL - &lt;A class="" href="https://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032377666" mce_href="https://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032377666"&gt;Peters and Associates presents Unified Communications&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Conferences:&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;June 3-6 - Orlando, FL - &lt;A class="" href="http://www.microsoft.com/events/teched2008/developer/default.mspx" mce_href="http://www.microsoft.com/events/teched2008/developer/default.mspx"&gt;Microsoft TechEd&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8458955" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="UC Training Schedule" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UC+Training+Schedule/" /></entry><entry><title>VSLive! Orlando  May 12-16</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/05/02/vslive-orlando-may-12-16.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/05/02/vslive-orlando-may-12-16.aspx</id><published>2008-05-02T19:19:00Z</published><updated>2008-05-02T19:19:00Z</updated><content type="html">&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;IMG style="WIDTH: 292px; HEIGHT: 78px" border=0 src="http://vslive.com/2008/orlando/images/mh_logo.gif" width=292 height=78 mce_src="http://vslive.com/2008/orlando/images/mh_logo.gif"&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I will be presenting at VSLive! Orlando on May 15th.&amp;nbsp; My session is "Embedding Presence in Your Applications".&amp;nbsp;&amp;nbsp;I'll cover why .NET developers should even bother with presence, the difference between the UC APIs, and your options for embedding presence in your applications.&amp;nbsp; The focus is going to be around the client APIs, Communicator Automation API, UC Client API, UC AJAX and&amp;nbsp;ActiveX Name Controls. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Microsoft has a .NET day with a lot of great presentations on Visual Studio 2008, TFS, ASP.NET and all almost anything else about .NET direct from Product &amp;amp; Program Managers at Microsoft. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Conference Information:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt; &lt;A href="http://vslive.com/2008/orlando/"&gt;http://vslive.com/2008/orlando/&lt;/A&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'"&gt;Microsoft .NET Day Sessions:&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;A href="http://vslive.com/2008/orlando/netday.aspx"&gt;http://vslive.com/2008/orlando/netday.aspx&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;As always there will be some of the big names there, like my favorite speakers: Rocky Lhotka, Brian Randell, Richard Hale Shaw, Deborah Kurata, and more: &lt;A href="http://vslive.com/2008/orlando/speakers.aspx"&gt;http://vslive.com/2008/orlando/speakers.aspx&lt;/A&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I spoke at a couple of VSLive! conferences last year and they were a blast. The Orlando conference has a great location at the Royal Pacific Resort. However this time I won't have much time for more than a drink or two afterwards as&amp;nbsp;I'm flying in the night before, speaking in the morning and flying out that evening. Is it me or do the margaritas just taste better in Florida?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I know it is late, but if you are planning to attend and haven't registered you still have time to do so. You can register &lt;B&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;A class="" href="http://vslive.com/2008/orlando/rates.aspx" mce_href="http://vslive.com/2008/orlando/rates.aspx"&gt;online&lt;/A&gt;&lt;/SPAN&gt; &lt;/B&gt;or call 800-280-6218 using Priority Code &lt;SPAN style="COLOR: red"&gt;SODUN&lt;/SPAN&gt; and receive the Gold Passport for just $1,895.&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8451133" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Speaking" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Speaking/" /><category term="VSLive" scheme="http://blogs.msdn.com/b/midunn/archive/tags/VSLive/" /></entry><entry><title>Fix for Speech Server (2007) "Red X" Issue</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/05/01/fix-for-speech-server-2007-red-x-issue.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/05/01/fix-for-speech-server-2007-red-x-issue.aspx</id><published>2008-05-01T22:24:00Z</published><updated>2008-05-01T22:24:00Z</updated><content type="html">&lt;P&gt;The update for the "Red X" issue you may see in your workflow after loading VS 2008 on the same box is now available. This made my day!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4D8B068B-3C45-4EEA-BBC8-C4A4C4201F60&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=4D8B068B-3C45-4EEA-BBC8-C4A4C4201F60&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8447464" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="Speech Server" scheme="http://blogs.msdn.com/b/midunn/archive/tags/Speech+Server/" /></entry><entry><title>Microsoft Messenger for Mac 7 has been released!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/04/29/microsoft-messenger-for-mac-7-has-been-released.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/04/29/microsoft-messenger-for-mac-7-has-been-released.aspx</id><published>2008-04-29T22:33:00Z</published><updated>2008-04-29T22:33:00Z</updated><content type="html">&lt;P&gt;Attention Macintosh users put down your one button mouse for a minute, for now you can enjoy some the UC experience your Windows counterparts already do. &lt;/P&gt;
&lt;P&gt;Microsoft Messenger for Mac 7 is now available, besides just being able to &amp;nbsp;connect to Windows Live service, Microsoft Messenger allows you to connect Office Communications Server!&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;More Information:&lt;/STRONG&gt; &lt;A href="http://www.microsoft.com/mac/products/messenger/default.mspx"&gt;http://www.microsoft.com/mac/products/messenger/default.mspx&lt;/A&gt;&amp;nbsp;&lt;STRONG&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;STRONG&gt;Download:&lt;/STRONG&gt; &lt;A href="http://www.microsoft.com/mac/downloads.mspx?pid=Mactopia_Messenger"&gt;http://www.microsoft.com/mac/downloads.mspx?pid=Mactopia_Messenger&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8438949" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="UC Macintosh?" scheme="http://blogs.msdn.com/b/midunn/archive/tags/UC+Macintosh_3F00_/" /></entry><entry><title>Windows Speech Recognition Macros</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/midunn/archive/2008/04/26/windows-speech-recognition-macros.aspx" /><id>http://blogs.msdn.com/b/midunn/archive/2008/04/26/windows-speech-recognition-macros.aspx</id><published>2008-04-26T04:54:00Z</published><updated>2008-04-26T04:54:00Z</updated><content type="html">&lt;P&gt;&lt;STRONG&gt;A Technical Preview of Windows Speech Recognition Macros, WSRMacros, has just been released! &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Like the name suggest it allows you to create Macros for Vista's Speech Recogntion. You don't need to know anything about SAPI to work create a simple application.&amp;nbsp; I'm still installing and playing with it, but something you could create is a macro that would allow you to say "Play &amp;lt;Song&amp;gt;" and it would play that selection.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Download:&lt;/STRONG&gt; &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fad62198-220c-4717-b044-829ae4f7c125&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fad62198-220c-4717-b044-829ae4f7c125&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=fad62198-220c-4717-b044-829ae4f7c125&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Blog:&lt;/STRONG&gt; &lt;A href="http://blogs.msdn.com/speech/archive/2008/04/25/windows-speech-recognition-macros-is-now-available.aspx" mce_href="http://blogs.msdn.com/speech/archive/2008/04/25/windows-speech-recognition-macros-is-now-available.aspx"&gt;http://blogs.msdn.com/speech/archive/2008/04/25/windows-speech-recognition-macros-is-now-available.aspx&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8425345" width="1" height="1"&gt;</content><author><name>Michael D. Dunn</name><uri>http://blogs.msdn.com/midunn_4000_microsoft.com/ProfileUrlRedirect.ashx</uri></author><category term="SAPI 5.3" scheme="http://blogs.msdn.com/b/midunn/archive/tags/SAPI+5-3/" /></entry></feed>