Hi, all. Today we’re happy to share some excerpts from the recently published Programming for Unified Communications with Microsoft Office Communications Server 2007 R2 (Microsoft Press, 2009; ISBN: 9780735626232; 416 pages), which comes directly from the Microsoft Office Communications Server product team. This post includes the book’s About the Authors, Contents at a Glance, Introduction, as well as a stretch of text from Chapter 2, “Microsoft Unified Communications APIs Foundation.” I’ll keep this intro text short because much follows.
About the Authors
Rui Maximo is a senior technical writer in the Office Communications Group. He has worked on different aspects of the Microsoft Office Communications Server product suite (management, migration, topology, VoIP, Communicator Web Access) and shipped Microsoft Live Communications Server 2003, Live Communications Server 2005 (the original version and the SP1), and Office Communications Server 2007 as a lead program manager and program manager. With 13 years of experience at Microsoft, Rui has been fortunate to work in diverse roles (program management, software engineering, and technical writer) and various products (including Microsoft Windows, Windows Mobile, and Microsoft Office), primarily focusing on security. Prior to Microsoft, Rui worked at IBM as a software tester and at Brigham Young University as a UNIX administrator. Rui holds a master’s degree in mathematics, specializing in abstract algebra and cryptography. You can reach him at ruim@ruimaximo.com. Please send your comments!
Kurt De Ding is a senior programming writer in the Office Communications Group. As the pioneering member of the SDK documentation team, he was instrumental in the initial design, authoring, and delivery of the SDK documentation for the Microsoft Unified Communications APIs, including Microsoft Office Communicator Automation API, Unified Communications Client API, Unified Communications Managed API v 1.0, and Unified Communications AJAX API, as well as Live Meeting Service API. Before joining the Office Communications Group, Kurt had worked on various Microsoft technologies, including Windows CE SDK, Windows Platform SDK, and Microsoft SQL Server SDK.
Vishwa Ranjan is a program manager in the Unified Communications Group. Most recently, Vishwa has worked on the Unified Communications Platform API Workflow Activities, which is available as part of Office Communications Server 2007 R2. Previously, he worked on Microsoft Speech Server 2004 and Office Communications Server 2007 Speech Server. He has more than 7 years of experience as a software design engineer in test, a technical lead, and a program manager.
Chris Mayo is a technical evangelist in the Developer and Platform Evangelism group. Chris focuses on the Unified Communications products (Office Communications Server 2007 R2, Office Communicator 2007 R2, and Microsoft Exchange Server 2007) and platform software development kits (SDKs), working with the Office Communications Group since the early betas of Office Communications Server 2007. Chris has been with Microsoft for 8 years as an evangelist working with the developer and independent software vendor communities. Chris has experience as both a writer for developer publications and a public speaker at professional events, such as the Professional Developers Conference and TechEd. Prior to joining Microsoft, Chris served as a developer and architect in the IT departments of Fortune 500 companies in the retail and finance industries. Keep up with Chris at his Unified Communications Development blog at http://blogs.msdn.com/cmayo/.
Oscar Newkerk is a Unified Communications Architect at Unify Square Inc. working in the area of Unified Communications, with an emphasis on integrating and enhancing business processes with collaboration technologies. With 14 years of experience at Microsoft, Oscar worked in various roles and groups within the company. Most recently, he was a technical evangelist in the Unified Communications Group, helping the developer community to plan, design, develop, and deploy solutions that integrate with Office Communications Server. Prior to Microsoft, Oscar worked for Digital Equipment Corporation as a software specialist and in software engineering in the areas of systems and network management. Oscar holds a bachelor of science degree in physics from Guilford College and holds patents in the areas of systems management and speech recognition.
Albert Kooiman is a member of the Unified Communications Marketing team and has been responsible for product management of the Unified Communications Developer Platform since the group was created in 2006. He works on both Exchange Server and Office Communications Server. With 14 years of experience in the telecommunications and speech technology industry, Albert has been involved in a wide range of projects encompassing the broad spectrum of Unified Communications solutions currently in the market. Albert holds a master’s degree of the Medical Faculty of the University of Amsterdam, specializing in medical informatics.
Mark Parker is a programming writer in the Office Communications Group. Most recently, Mark was responsible for the Unified Communications Managed API 2.0 Core SDK documentation and part of the Unified Communications Managed API 1.0 SDK documentation. Before joining the Office Communications Group, Mark worked as a writer on the Speech Server 2007 documentation team and was a lead programming writer on the Windows Device Driver Kit documentation team. Prior to Microsoft, Mark taught mathematics and a number of programming languages at Shoreline Community College. Mark holds a master of science degree in mathematics.
Introduction
Why We Wrote This Book
Microsoft Office Communications Server is a relatively new product. Although it has its origins in the Enterprise Instant Messaging products, such as Exchange Instant Messaging, Live Communications Server 2003, and Live Communications Server 2005, it has evolved to become a comprehensive platform for all real-time communications. The current release, Office Communications Server 2007 R2, not only supports enterprise instant messaging (IM) and rich presence, but also offers a powerful Voice over Internet Protocol (VOIP)–based telephony system, multiparty audio conferencing, Web conferencing, and application sharing.
This server offers tangible benefits in direct cost savings (for example, by eliminating costly audio conferencing services provided by telecom carriers) and improves productivity by providing more efficient ways for people to contact each other. Office Communications Server is one of the fastest-growing server products in Microsoft history, with tens of millions of licenses sold.
Office Communications Server is a software-based solution that runs on standard computing and networking hardware. This server offers a rich, open API platform, making it an open and extensible part of the Microsoft Unified Communications (UC) platform. There are many opportunities for developers to build new applications on this platform. We know that developers are looking for resources to help them develop applications using the UC APIs, and this book is the only one on the market today that addresses this need. Written by experts from the product group, Programming for Unified Communications with Microsoft Office Communications Server 2007 R2 offers an easy-to-read exploration of the APIs. We hope it serves you well.
What This Book Is About
This book is organized into five parts.
Part I, “Understanding Unified Communications,” introduces the UC platform and provides an overview of the APIs.
Part II, “Office Communicator Automation API,” explains the Office Communicator Automation API in depth and provides a detailed walkthrough of an example.
Part III, “Unified Communications Managed API Workflow,” explains the UCMA Workflow API in detail and walks through an example of a business process communication.
Part IV, “Unified Communications Managed API,” covers the Unified Communications Managed API architecture and shows how to extend the Office Communications Server Enhanced Presence model by using this API.
Part V, “Debugging, Tuning, and Deploying Unified Communications Applications,” explains how to debug, tune, and deploy UC applications.
Who This Book Is For
This book is intended for developers who want to create enterprise applications that include communications functionality built on the UC platform. Familiarity and experience with Microsoft Windows COM, Microsoft .NET Framework, and Windows Workflow Foundation development is recommended. This book is written on the assumption that the reader has this knowledge. Code examples in this book are written in C# unless otherwise noted. For clarity and to better illustrate how to use the APIs, the code samples are not written with defensive coding practices in mind. Please apply defensive code practices when reusing the samples in your own production applications.
For an in-depth resource on the internals of Office Communications Server 2007 R2, see the Microsoft Office Communications Server 2007 R2 Resource Kit (Microsoft Press, 2009), which you can purchase in a bookstore or order from http://www.microsoft.com/learning/en/us/ Books/13113.aspx. That book also covers the Office Communications Server Software Development Kit (SDK), which is intended for administering and controlling compliance of the conversations (for example, ethical walls and custom disclaimers) with Office Communications Server, and therefore is outside the scope of this book.
We sincerely hope that you find the technical information within this book useful and lucrative to your work.
Companion Content
This book features a companion Web site that makes available to you all of the code used in the book. This code is organized by chapter, and you can download it from the companion site at http://code.msdn.microsoft.com/programmingocs.
Hardware and Software Requirements
You need the following hardware and software to work with the companion content that is included with this book:
Servers
Hardware Use only a 64-bit computer that is running a 64-bit edition of Windows Server (see more about the operating system below). Other technical specifications include the following:
Operating System Use only the 64-bit edition of Windows Server 2003 SP2, Windows Server 2003 R2 SP2, or Windows Server 2008. Supported editions include Standard, Enterprise, and Data Center versions of Windows Server 2003 and Windows Server 2008.
Client Computers
Hardware Use any 32-bit or 64-bit computer that is running Windows Vista SP1. Other technical specifications include the following:
Operating System The 32-bit or 64-bit edition of Windows Vista SP1 or later. Windows Vista Home Premium Edition, Windows Vista Business Edition, or Windows Vista Ultimate Edition.
Database Requirements
Use the 32-bit version of Microsoft SQL Server 2005 Express Edition SP2, which is included with Office Communications Server 2007 R2.
Office Communications Server 2007 R2
Deploy Office Communications Server 2007 R2 Standard Edition on a private network.
More Info For more information about deployment for the UC test environment, see the “Deploying Office Communications Server Standard Edition” section in Chapter 9, “Preparing the UC Development Environment.”
Administrative Tools
Install the Office Communications Server Administrative Tools. The administrative tools can be installed independent of the Office Communications Server deployment on a computer that is running the 32-bit or 64-bit edition of Windows Server 2003 SP2, Windows Server 2003 R2 SP2, Windows Server 2008, Windows Vista Business, or Windows Vista Enterprise with SP1.
Development Tools
The software development environment and tools required to build UC applications include the following:
Visual Studio 2008 SP1–supported software includes Visual Studio 2008 Standard Edition, Visual Studio 2008 Enterprise Edition, Visual C# 2008 Express Edition, and Microsoft Visual Web Developer 2008 Express Edition.
More Info For more information about configuring the UC software development environment, see the “Configuring Application Development Components” section in Chapter 9.
Sample Test Topology
To build and test the samples included in this book, a typical test topology includes the following clients and servers:
Chapter 2 Microsoft Unified Communications APIs Foundation
This chapter will help you to:
This chapter provides a technical overview of the Microsoft Unified Communications (UC) APIs so that you can understand them, how they relate to each other, and what purpose they serve.
The intent of this chapter is to provide you with sufficient information to help you decide which UC APIs best fulfill your needs. If you already know which APIs meet your needs, you can look only at the sections that cover the APIs of interest to you, or skip this chapter altogether if you wish.
Unified Communications Managed API 2.0
The Unified Communications Managed API (UCMA) is a code platform managed by Microsoft .NET Framework, which provides access to presence, instant messaging (IM), telephony, and audio/video (A/V). UCMA is a Session Initiation Protocol (SIP)–based platform. SIP is a signaling protocol that is used for setting up and tearing down multimedia communication sessions. This API abstracts the details of the communication protocols used by Microsoft Office Communications Server.
Scenarios
UCMA is used to build scalable middle-tier applications that work with Office Communications Server 2007 R2, provide large-scale message throughput, and represent multiple endpoints. You can use this API to build the following types of applications:
More advanced applications include the following:
Considerations
UCMA 2.0 is considered a middle-tier API written completely in C#. Therefore, it runs only in environments where the .NET Framework is supported. It provides the following characteristics:
UCMA 2.0 supports two types of SIP endpoints that are designed for distinct application scenarios: the ApplicationEndpoint class and the UserEndpoint class. You use the ApplicationEndpoint class in applications that represent automated applications, such as bots that interact with users. You use the UserEndpoint class in applications that connect to Office Communications Server on behalf of users and perform operations on behalf of those users.
To configure Office Communications Server to trust connections from UCMA applications that use the ApplicationEndpoint and UserEndpoint classes, the application provisioning process must define a Globally Routable User Agent URI (GRUU). For more information about GRUUs, see Chapter 9, “Preparing the UC Development Environment.” This is all that is necessary if the application creates only UserEndpoints. After the application has authenticated the user, it does not need to supply those credentials to Office Communications Server for authentication. For applications that create ApplicationEndpoints, the provisioning process also must create a Contact object that defines the application’s SIP URI. You also have the option to create a display name and a TEL URI. The ApplicationEndpoint uses this Contact object to register with Office Communications Server.
Examples of applications that use the ApplicationEndpoint class are Automatic Call Distributor (ACD), interactive IM or voice bots, and conference bridges. For more information about these applications, see the “UCMA 2.0 Workflow API” section later in this chapter. These applications use a Contact object to identify the application in Active Directory Domain Services. The Contact object specifies the application’s SIP URI and phone number. Examples of applications that use the UserEndpoint class are those that publish additional presence information. Examples of additional presence information include showing a Global Positioning System (GPS) location on behalf of a user or acting as a proxy when the user is not available and routing incoming IM messages through a Short Message Service (SMS) gateway.
API Architecture
UCMA is composed of the following two interfaces:
This architecture can be represented as shown in Figure 2-1.