A few new code samples have been 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...
The Web Chat Functionality sample 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.
Web Chat
Think about visiting a web site, for example an ecommerce website, and the customer has a question about a product, while they could email and/or call, the customer would have to leave the computer and make the extra effort. This Web Chat samples tries and solves that problem by allows the customers to simply click on a link and have an IM conversation via thier browser with a representative and/or a bot from the ecommerce website.
This is one example of "Click to Chat".
The technology behind the solution is farily simple, combining the 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.
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.
WPF Presence Controls
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.
http://blogs.claritycon.com/blogs/george_durzi/archive/2008/09/08/wpf-presence-controls-for-microsoft-office-communicator.aspx
Integrating Web Chat Functionality - Microsoft Unified Communications AJAX API Sample
http://www.microsoft.com/downloads/details.aspx?FamilyId=C8C3F762-7BE4-4541-9B18-82499DB61293&displaylang=en
WPF Presence Controls for Microsoft Office Communicator 2007 - Microsoft Office Communicator 2007 SDK Sample
http://www.microsoft.com/downloads/details.aspx?FamilyId=5001D612-533A-4721-91EA-DA990D94FF0F&displaylang=en
Dynamics CRM Integration with Office Communications Server
http://www.microsoft.com/downloads/details.aspx?FamilyId=6E2EA762-A6C9-43BD-8C84-BF610073765C&displaylang=en
Customer Relationship Management (CRM) Activity - Microsoft Unified Communications Managed API 1.0 Sample
http://www.microsoft.com/downloads/details.aspx?FamilyId=16303459-DD75-451F-B7C0-FB2EB0D9A84A&displaylang=en
Communicator 2007 Custom Tabs - Microsoft Office Communicator 2007 Sample
http://www.microsoft.com/downloads/details.aspx?FamilyId=621C675C-46B7-4F68-ADDC-9F44E5594BFB&displaylang=en
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, aol.com.

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 that sends a transcript of the chat to the user’s SMS device. The possibilities are endless...
I was checking out the UC Developer Portal recently and It seems it is not up to date on the available Virtual Labs for UC Developers, as it only list 5.
For a more up to date list, you can visit this URL: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
It looks like these Vitual Labs cover the UC AJAX and Communicator Automation in depth. 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.
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!
http://unified-communications-development.blogspot.com/
The blog belongs to Joachim Farla and Marc Wetters of e-office. Make sure to check out some of the other post.
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 the article challenges you to add that your self. I'd also like to extend that challenge! Hint: I'd look into using the Communicator Automation API first.
Article: http://blogs.msdn.com/coding4fun/archive/2008/06/20/8626294.aspx
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.
There are two main scenarios which I am always asked about are:
1.) Communicator Calls to Speech Server
2.) Transferring Speech Server calls to Communicator
Calling Speech Server from Communicator
The first thing 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.

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 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 messages. You will also need to enable Mutual TLS.

Note: 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 on Speech Server.
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.

Now you can dial the Speech Server application from Communicator by dialing the static route, like 411@ivr.domain.com.
411 being the extension that you assigned to your application and ivr.domain.com being the sub domain you specified in the OCS routing tab.

Transferring Calls to OCS users
When trying to create a transfer type Speech Server application, you need to know one rule. You can only transfer via the SIP Peer in which the call orginated.
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.
Note: 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.
Back to the orginal scenario, a call comes in via the PSTN to probably a VoIP Gateway, 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.
Typically you do not want Speech Server to sit behind the Mediation Server but next it, as shown in the diagram below.

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. 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.
Tip: 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.
Bill Gates will be doing the Keynote and probably one of his last before he retires.
I'll be doing a couple of sessions at TechEd on Speech Server with Albert Kooiman. You can check out sessions, events, register, etc.. at www.msteched.com
If you are attending drop me a line and let's make some time for a drink at one of the after hours events!
May & June Upcoming Unified Communications Developer Events & Training!
Online:
Classroom:
Seminars
Conferences:

I will be presenting at VSLive! Orlando on May 15th. My session is "Embedding Presence in Your Applications". 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. The focus is going to be around the client APIs, Communicator Automation API, UC Client API, UC AJAX and ActiveX Name Controls.
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 & Program Managers at Microsoft.
Conference Information: http://vslive.com/2008/orlando/
Microsoft .NET Day Sessions: http://vslive.com/2008/orlando/netday.aspx
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: http://vslive.com/2008/orlando/speakers.aspx
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 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?
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 online or call 800-280-6218 using Priority Code SODUN and receive the Gold Passport for just $1,895.
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!
http://www.microsoft.com/downloads/details.aspx?FamilyId=4D8B068B-3C45-4EEA-BBC8-C4A4C4201F60&displaylang=en
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.
Microsoft Messenger for Mac 7 is now available, besides just being able to connect to Windows Live service, Microsoft Messenger allows you to connect Office Communications Server!
More Information: http://www.microsoft.com/mac/products/messenger/default.mspx
Download: http://www.microsoft.com/mac/downloads.mspx?pid=Mactopia_Messenger
A Technical Preview of Windows Speech Recognition Macros, WSRMacros, has just been released!
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. I'm still installing and playing with it, but something you could create is a macro that would allow you to say "Play <Song>" and it would play that selection.
Download: http://www.microsoft.com/downloads/details.aspx?FamilyID=fad62198-220c-4717-b044-829ae4f7c125&displaylang=en
Blog: http://blogs.msdn.com/speech/archive/2008/04/25/windows-speech-recognition-macros-is-now-available.aspx
The term "Click to Call" is thrown around a bit to mean slightly different things. In this post I'm going to show you how to create a web based interface, in which end users can type their name and phone number and have your Speech Server (2007) application call them.
This sounds more diffcult than it actually is. Speech Server (2007) uses MSMQ to place outbound calls, meaning that my website only has to write messages to MSMQ to trigger an Outbound Call in Speech Server. When I write items to MSMQ I just need to pass it parameters such as phone number to call, the person's name, etc..
Step 1
Create a Private Transactional Queue in MSMQ and give it a name.

Step 2
Create an ASP.NET Website with input fields for both Name and Phone Number, along with a Submit Button.

Step 3
Add the MSMQ to the Code Behind for the Submit button, using the name of the Queue you created in Step 1. Add a reference to System.Messaging
protected void btnCallNow_Click(object sender, EventArgs e)
{
string outboundInfo = string.Format("OutboundPhoneNumber={0}&Name={1}", this.tbNumber.Text, this.tbName.Text);
MessageQueue queue = new MessageQueue(@".\private$\OutboundCallMe");
Message message = new Message(outboundInfo);
MessageQueueTransaction transaction = new MessageQueueTransaction();
transaction.Begin();
queue.Send(message, transaction);
transaction.Commit();
}
Step 4
Create a Speech Server application which will read the values from the query string, and use them to place an outbound call.
You could have a Code Activity prior to the Make Call Activity which will set the value based on the Queue object, as well as set the statement prompt which will speak the person's name.
private void setOutbound_ExecuteCode(object sender, EventArgs e)
{
this.makeCall.CalledParty = QueryString["OutboundPhoneNumber"];
this.makeCall.CallingParty = "5554861";
this.sayWelcome.MainPrompt.SetText("Hello {0}", QueryString["Name"]);
}
Step 5
In the Speech Server Administrator Console, Set the Outbound Queue property to the name of Queue created in Step 1.

Very little Code to create a simple "Click to Call" web based application...
I was asked today how easy it would be to create a web control that would display a user's presence on their blog. My answer is it is pretty easy, which it is, but it isn't as intuitive as one might think. If you are familair with UC APIs at all your first instinct would be UC AJAX API and you'd be 50% correct.
As Oscar Newkerk pointed out to me, the UC AJAX API is a registered endpoint, meaning that OCS might just decide that your Instant Messages should go to that endpoint.... Which isn't what we want to have happen.
Q. How should we tackle this? A. We need to expose the UC AJAX API via a WCF Service.
First we will need to create a UC enabled AD account in which our service can log into CWA via the UC AJAX API with. We can give it a name like "WebServiceUser".
Next we need to create a WCF Service using a Publisher\Subscriber design pattern & it needs to be ASP.NET familiar WCF Service.
Finally we can create a AJAX Server Side control, which will be a client to our service and display a nice little presence bubble icon for the current status of the queried user.
The BIG benefit by exposing the UC AJAX as a service is we can use it for other purposes..but that is for another post some other time.
MSDN References:
http://msdn2.microsoft.com/en-us/library/ms752254.aspx
http://msdn2.microsoft.com/en-us/library/bb924552.aspx
Concept Design:

As soon as I have completed the code I will post it here for everyone to download and use. I just need to find the time between my other projects.