Welcome to GotSpeech.NET Sign in | Help

New book: Programming for Unified Communications with Microsoft Office Commu...

Sweet an official MS Press book on Speech Server? No way.


Sent to you by Brandon Tyler via Google Reader:


via Search results for '"Speech Server"' by devonm on 5/27/09

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.




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
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

Hardware and Software Requirements

You need the following hardware and software to work with the companion content that is
included with this book:


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

  • CPU Dual-core 2.0-gigahertz (GHz) 4-way processor
  • RAM 2 gigabytes (GB) of memory
  • Hard drive 100-GB hard drive
  • Network adapter 100 megabit-per-second (Mbps) network adapter

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:

  • CPU A minimum 1.6-GHz Pentium III+ processor
  • RAM 1 GB of memory
  • Hard drive 50-GB hard drive
  • Network adapter 100-Mbps network adapter
  • Video A video monitor with 800 × 600 or higher resolution and at least 256 colors
  • A CD-ROM or DVD-ROM drive
  • A Microsoft mouse or compatible pointing device

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:

  • Microsoft Visual Studio 2008 SP1
  • Microsoft .NET Framework 3.5 SP1
  • Microsoft Visual C++ 2008 Redistributable Package
  • Office Communicator Automation API SDK
  • Unified Communications Managed API (UCMA) Core 2.0 SDK

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:

  • A Windows Server 2008 domain controller, including the Domain Name System (DNS)
    and Certificate Authority (CA) roles
  • Office Communications Server 2007 R2 Standard Edition deployment
  • A Windows Server 2008 member server serving as the application server to run the
    sample applications
  • Two Windows Vista clients running Office Communicator


Chapter 2
Microsoft Unified Communications APIs Foundation

This chapter will help you to:

  • Understand the scenarios that you can build using the API.
  • Understand the considerations to help you determine whether this API meets your
  • Understand the API’s architecture.
  • Understand the API’s design model.

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.


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:

  • Highly scalable notification and alert systems that perform the following actions:
    o Send outbound alert messages.
    o Use the Enhanced Presence feature of the Office Communications Server 2007 R2
    platform to determine the appropriate channel and media to deliver alerts, such
    as instant messages, e-mail, or voice calls.
  • Interactive automated agents (query/response bots) that perform the following actions:
    o Respond to user requests for information by means of IM or voice sessions.
    o Create custom call routing and interactive voice response systems.

More advanced applications include the following:

  • Contact center or help desk applications that do the following:
    o Route incoming communications sessions to available agents.
    o Use the Enhanced Presence capabilities of the Office Communications Server
    2007 R2 platform to route to agents based on specific skill sets.
    o Provide “music on hold” functionality for voice sessions.
    o Create back-to-back user agents (B2BUAs) for help desk scenarios; for example,
    so that the specific identity of the help desk agent is not exposed to the
  • Conferencing portal applications that do the following:
    o Create custom conference bridging.
    o Record the contents of conference calls.
    o Schedule and manage instances of conferences.


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

  • Scalability  UCMA 2.0 is able to support thousands of endpoints and concurrent
    communications and collaboration sessions. It is designed for building server
    (the recommended operating system is Microsoft Windows Server 2008
    on 64-bit hardware). UCMA 2.0 is multithreaded, and operations are performed asynchronously
    to maximize throughput.
  • Availability  The deployment model supports running multiple instances of the
    UCMA 2.0 application for load balancing and failover across multiple computers with
    the use of hardware load balancers.
  • Extensibility  New modalities can be added in the conversation framework. Extension
    headers and Uniform Resource Identifier (URI) parameters can be supplied and
    consumed through the APIs to support the creation of custom sessions.

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)

API Architecture

UCMA is composed of the following two interfaces:

  • UCMA 2.0 Core API
  • UCMA 2.0 Speech API

This architecture can be represented as shown in Figure 2-1.



Things you can do from here:

Posted by brandontyler | 0 Comments

Exchange 2010 Beta—The future of UC is here!


Sent to you by Brandon Tyler via Google Reader:


The beta for Exchange Server 2010, the cornerstone of our UC technology, is here and available for download today at www.microsoft.com/exchange/2010 .  This release is, without question, the best Exchange yet.  And, it all centers around our customers.  With Exchange 2010, we demonstrate our relentless pursuit of addressing customers’ needs – both IT professionals and end users.  If I could sum up Exchange 2010 in one phrase it would be: Accomplish More.  At the end of the day, that’s what it’s all about – getting more done while lowering costs.  Exchange 2010 delivers on this promise in so many ways – let’s dig into just a few.

With Exchange 2010, customers can:

·         Get the rich inbox experience across the PC, phone and browser.  Exchange, with Outlook, Outlook Mobile and Outlook Web Access, offers consistent and full featured universal inbox (that means email, voicemail with text previews, SMS, IM all in one place) experience regardless of where you’re accessing your email.  Based on the new inbox productivity tools and anywhere access, my team is literally getting 30-60 minutes back a day in productivity time saved.

·         Never send that mistaken email again.  With MailTips, you are warned before you hit send about sending to a very large distribution group, sending to recipients outside of the company and the annoyance of sending email to someone out of the office only to get their OOF message and having to send it again to someone else.  It’s like having x-ray vision into your email system. 

·         End the .PST forever.   IT admins will soon be able to say “what’s a .PST?” because the new archive feature provides the option to eliminate .PST files (personal, locally stored e-mail repositories) while not disrupting the end user experience or having to learn new IT management tools.  The Exchange 2010 integrated archive lowers e-discovery costs and brings this business critical functionality within reach for all customers.

·         Lower support costs through reduced help desk calls. Non-deliverable e-mails and message delivery tracking are top drivers of email support costs. With Exchange 2010’s new end user self-service capabilities and inbox features, these calls are dramatically reduced.

·         Replace legacy voice mail systems. That’s right. Customers can eliminate costly maintenance fees, get more from IT resources, and boost productivity with Exchange 2010 voice mail with unified messaging  - especially with the enhancements we’ve made to this version, such as the new voice mail text preview, so you can quickly triage voice mails without ever listening to the message).

·         Dramatically lower storage costs and deliver larger mailbox quotas.  The incredible advances around Exchange 2010 storage management and IOPs reduction enable organizations to choose low-cost storage options while still ensuring high availability.  This means offering end users larger mailboxes while not increasing costs is possible -- this is truly where you can deliver more for less. 


And that is just the tip of the iceberg. For more on the benefits Exchange 2010 can bring to you and your organization, check out the video Q&A with Rajesh Jha, corporate vice president of Exchange, and visit the Office 2010 and related products virtual press room for more.

With that, go download the beta, take it for a spin and let us know what you think!



Things you can do from here:

Posted by brandontyler | 0 Comments

Microsoft Debuts Microsoft Office Communications Server 2007 Release 2

Here is a listing of the features:

Microsoft Office Communications Server 2007 Release 2 (R2) was today unveiled at the VoiceCon event in Amsterdam. 

Office Communications Server 2007 R2 delivers important new functionality that extends software-powered voice communications, particularly for remote and mobile workers; provides on-premise audio conferencing to help reduce operational costs; and introduces new developer advances, including the ability to build communications-enabled business processes. These enhancements will improve business communications through a unified infrastructure and user experience.

eircom is using Office Communications Server 2007 to help drive its New World of Work initiative which aims to improve working lives and productivity.  Staff quickly identified the connectivity benefits of features such as presence and IM while working away from the office and the advantages of simple videoconferencing offered by Office Communicator 2007, the client application for Office Communications Server 2007.  eircom estimates that a conservative time saving of 30 minutes per week for just 1,500 eircom employees would amount to approximately €950,000 in productivity gains.

“Office Communicator 2007 will be a ubiquitous tool at eircom,” said Stephen Mulligan, Web and Mobility Technology manager at eircom. “Microsoft technologies are agile and intuitive enough to automate business processes without forcing us to change; that’s the New World of Work.”

Office Communications Server 2007


“Microsoft’s Unified Communications software is providing Irish companies with new choices in how they communicate, bringing a unified approach to voice, video conferencing, instant messaging and presence, which delivers improved productivity and a proven reduction in cost,” said Richard Moore, Business Manager, Information Worker, Microsoft Ireland.  “With Microsoft Office Communications Server 2007 R2 we have taken a significant step towards a fully software-based PBX, which improves customer communications and delivers an even greater level of flexibility and control.”


Key new features of Office Communications Server 2007 R2 include the following:

Next-Generation Collaboration

  • Dial-in audio conferencing. Office Communications Server 2007 R2 enables businesses to eliminate costly audio conferencing services with an on-premise audio conferencing bridge that is managed by IT as part of the overall communications infrastructure.
  • Desktop sharing. This feature enables users to seamlessly share their desktop, initiate audio communications and collaborate with others outside the organization on PC, Macintosh or Linux platforms through a Web-based interface.
  • Persistent group chat. This enables geographically dispersed teams to collaborate with each other by participating in topic-based discussions that persist over time. This application provides users with a list of all available chat rooms and topics, periodically archives discussions in an XML file format that meets compliance regulations, provides tools to search the entire history of discussion on a given topic, and offers filters and alerts to notify someone of new posts or topics on a particular topic.

Enhanced Voice and Mobility

  • Attendant console and delegation. This allows receptionists, team secretaries and others to manage calls and conferences on behalf of other users, set up workflows to route calls, and manage higher volumes of incoming communications through a software-based interface.
  • Session Initiation Protocol trunking. This feature enables businesses to reduce costs by setting up a direct VoIP connection between an Internet telephony service provider and Office Communicator 2007 without requiring on-premise gateways.
  • Response group. A workflow design application manages incoming calls based on user-configured rules (e.g., round-robin, longest idle, simultaneous), providing a simple-to-use basic engine for call treatment, routing and queuing.
  • Mobility and single-number reach. This extends Microsoft Office Communicator Mobile functionality to Nokia S40, Motorola RAZR, Blackberry and Windows Mobile platforms, allowing users to communicate using presence, IM and voice as an extension of their PBX from a unified client.*

New Developer Tools for Business Applications

  • APIs and Visual Studio integration. This improves the efficiency of everyday business processes by enabling businesses to build communications-enabled applications and embed communications into business applications.

More information about Microsoft Office Communications Server 2007 R2 is available at http://www.microsoft.com/uc/products/ocs2007.mspx

Posted by brandontyler | 0 Comments

Sample Source Code for Speech Developers

This should help with the Speech API (SAPI) Developers.


Sent to you by Brandon Tyler via Google Reader:


via Search results for '"Speech SDK"' by ChuckOp on 7/27/08

If you are a software developer wanting to incorporate speech recognition and voice output into your application, we have sample source code that can get you started.  We have samples for the native Speech API (SAPI) and the managed System.Speech namespace (Recognition and Synthesis).

The samples are part of the Windows SDK and the most recent versions were included in the Windows SDK for Windows Server 2008 and Vista SP1.

The Windows SDK completely replaces the older SAPI 5.1 SDK and supports development on Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008.

To get the samples, customers can download this SDK as a DVD image (1,330MB ISO file), or go through a guided setup process where only the components they need are downloaded.  Speech is part of the base install.

More Information:


Things you can do from here:

Posted by brandontyler | 0 Comments

Microsoft Office Communications Server 2007 Speech Server Development - Intr...

Great intro to Speech Server!


Sent to you by Brandon Tyler via Google Reader:


via Search results for '"Speech Server"' by dszabo on 7/3/08

Office Communications Server 2007 is Microsoft's IP communication solution and it allows companies to leverage their network infrastructure for voice, video communication, instant messaging, audio/video calls and for much more. You may ask what's the benefit of using the computer network as opposed to the internal telephony network - you don't pay after the minute at neither of them. However, if it's the computer network, it's only the matter of software to integrate the telephony, video and IM with desktop applications. By routing the IP packages through a server in the DMZ, users can call each other at not cost wherever they are. The presence is also very important to mention - users can see each other's status (whether they are online, busy, away, on a meeting with their laptop, out of the office, etc). The presence icon is integrated into every Office applications and it tells the caller in advance whether the other party will be answering the call or not, or if it's not the right time for the call. This is integrated to every piece of the Office System (SharePoint and the Office client products). Online users will stop using mobiles, there's a whole change in the communication culture. This article outlines OCS 2007 Speech Server, which is an additional server role for Office Communications Server.

OCS 2007 Speech Server

Every software client/device is a UC endpoint in OCS - whether it's an IP phone, Office Communicator (the client of OCS, like Messenger), a video camera in an A/V meeting room, etc. Imagine that you have not only these endpoints, but that you also have non-human endpoints connected to your OCS/telephony infrastructure. These endpoints are software-driven and can communicate with callers on the phone. An example of such an endpoint is Exchange Server Voice Access, where you can get Exchange to read up your emails and you can do other clever things (say "Clear my calendar for today" - which sends a cancellation to every attendees of your meetings for today). You can write these applications using managed code and these application can be deployed and enabled in your OCS infrastructure. These numbers can be even enabled for callers outside of your organization (this is how Exchange Server Voice Access works at Microsoft).

How to write programs for Speech Server?

There are 3 important areas in a voice enabled system:

  1. Speech: the quality of the speech engine
  2. Voice recognition: the quality of the voice recognition engine and
  3. Programmability - how easy to develop voice-enabled applications on this platform.

I'll start with the programmability one and I let you to judge on the other two. There are two programming models that you can use: the web-programming model where the voice application is hosted in IIS as a web page and the dialog is represented by a set of post backs. The other programming model is using Windows Workflow Foundation to design the conversation's flow. I'll focus on the latter today and will skip the web-based one. For the workflow programming model, you need Visual Studio 2005 SP1, IIS, MSMQ and Speech Server installed on your PC (see the pre-requisites section).

Fire up your Visual Studio, there's a project template called "Voice Response Workflow Application" after you have install the development components. You can already start dragging and dropping workflow activities into your workflow designer to describe the conversation's flow. There are many workflow activities that you can use: Statement activity, QuestionAnswer activity, GetAndConfirm activity - this one won't step to the next activity unless the caller is confirmed his/her answer, Menu, etc. When your workflow asks something, you define the question for the activity, like "Can I have your employee ID please?", then you need to define what format you expect the answer in - this definition is called "Grammar". The grammar is a pre-defined pattern that defines the different ways the answer can be said. For example, "yes, it's 1234", or "my employee id is 1234", or "1234", or "it is 1234" and so on. We define a placeholder in this pattern for the number because that's the only thing that we are interested in, and we define the different options how the answer can be said. There's a designer that helps you creating the grammar.

The grammar will have an output variable which you can get when the caller is answered your question. Here, you need to write code - when the caller answered the question, you will get the employee ID into a variable that you can convert to a numeric value and you can do your actions based on this number - for example, you can look up this employee ID in Active Directory, etc.

I've prepared with a small application just to show how this thing works. What it does, it calls you up and it asks you about the number of computers and persons in your household and it submits the answers to a database. I could have written a more intelligent application as well, but this will be enough to understand how it works.


To be able to play with the product, you need to install all components of it on your development environment.

In order to install the Speech Recognition Server component, you need to enable a few features if you don't have them already enabled. You need to re-start the installer every time you have enabled a feature - it won't refresh automatically. To save some time, copy my features list (Vista):

Enable for OCS VR

You also need Visual Studio 2005 with SP1 (VS 2005 RTM is no go), and the Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation) package in order to be able to install the Development Tools component of the product. Installing Visual Studio 2005 Service Pack 1 Update for Windows Vista is also recommended if you run Visual Studio 2005 on Vista.

After the product is set up, at least one language pack needs to be installed (you can find them on the installation DVD or your can download them from the Internet) for the Windows services to start. I've installed the English/UK pack. There's also a US and Australian English available on the DVD and 11 additional languages. The full list is:

  • Chinese (People's Republic of China)
  • Chinese (Taiwan)
  • English (Australia)
  • English (United Kingdom)
  • English (United States)
  • French (Canada)
  • French (France)
  • German (Germany)
  • Italian (Italy)
  • Japanese (Japan)
  • Korean (Korea)
  • Portuguese (Brazil)
  • Spanish (Spain)
  • Spanish (United States)

What is a Grammar? What is a Rule?

The "grammar" is a collection of "rules". A rule is a mini workflow where you can describe the expected sentence's structure. In my case, I expect the answer "I have X computer at home" or something similar from the end user. I designed my rule to accept a more sophisticated answer as well, like "I have only 2 computers at my household" or "I have got no computers". It's up to you how you make your rules finer and more resilient. The result of the rule is a value which is the number of computers in my case. The following is a screen shot of my rule from the Visual Studio Rule Editor:


The green shapes are called Lists, the white ones are Phrases. Only one of the Phrases apply inside a List shape. The pink shapes are Rule references (RuleRefs), they are used to reference to other rules. The two RuleRefs in my case are references to numeric rules, they are used to recognize the number 0 and the numbers 1 to 999 and convert the recognized words to a numeric value. Looking into those rules, they have several lines where they combine the recognized words and calculate the numeric result. The result is written to the $$._value member variable which is then copied to the $._value member variable by a Script Tag (blue). The value in $._value then can be referenced in the Voice workflow and can be used for further tasks (in my case, confirming the number of computers to the end user). After compiling the grammar, the outcome is an XML file, with a .grxml extension.

What is the Voice Workflow?

After designed the rule, let's work on the workflow part, which is the one that controls the main flow. The Rule that I've described above is evaluated in the HowManyComputers QuestionAnswer activity.


How can I start?

I recommend to install the developer samples. After installed, I suggest opening the HelloWorld project from the C:\Program Files\Microsoft Office Communications Server 2007 Speech Server\Samples\Workflow\HelloWorld folder and playing with it.

You can test your application by pressing F5 key - you'll get the Voice Response Debugging window where you need to click on the Call button:


When the workflow starts and the server asks you a question, you are redirected to the second tab and need to click on the Start Recording button. Say your answer and Speech Server will recognize it.


When your answer is recognized, click on the Submit button to post back your input to your workflow.


Don't hesitate to ask!


Things you can do from here:

Posted by brandontyler | 1 Comments

Integrating Speech Server with Office Communications Server

A great post from Michael Dunn on Integrating Speech Server with Office Communications Server...


Sent to you by Brandon Tyler via Google Reader:


via Search results for '"Speech Server"' by midunn@microsoft.com on 6/16/08

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.



Things you can do from here:

Posted by brandontyler | 4 Comments

IVR failures that trigger in callers a feeling of outrage

Don't do this in your applications please...


Sent to you by Brandon Tyler via Google Reader:


via IVR Blog by Ahmed Bouzid on 5/22/08

Here is a short list of IVR failures that trigger in callers a feeling of outrage — or at least loathing and contempt!


1. You are forced to start all over after giving the IVR several pieces of information. That’s right: nothing can make a person’s day like having them emulate Sisyphus while trying to reach customer support. Nice!

2. You are made to listen to several minutes of declamations, instructions, warnings, and general statements before you are offered anything that you care about. That’s because we all love to hear other people thump their chest about how they are the best and the brightest and the loveliest, and how maybe we should check their web site next time, and that our call is so important to them that they can’t stand it, and so forth. We all love to hear that stuff, especially when we are calling because we are pissed off and need help with their crappy product.

3. You are made to wait a long time only to be routed to voice mail. This is my favorite by far. OK — we thought about it and… we don’t think you are worth speaking with. So sorry. After the tone, start speak or whatever…. Beeeep.

4. You are made to wait a long time, finally get to an agent, but you never get your problem resolved. This is worse than #3, because you force yourself to waste 10 minutes talking to someone who wouldn’t know how to help you if your hair got caught on fire before you start feeling ashamed of yourself for indulging in such bottomless self-delusion.

5. You are asked by the agent to repeat information that you already provided to the IVR. This is of course the all time classic. (Once, an agent pretended that she needed me to repeat the information “just to make sure”. I smiled and repeated it. At least she cared enough to make the effort…)

6. You are transferred from one IVR system to another IVR system. This always makes me smile: if people are able to launch businesses and make a healthy living with this kind of utter thoughtlessness, I too will become rich and famous one day….

7. The IVR system asks you to call at a later time and then hangs up on you. You gotta respect a machine that can detect a meat head, decides that it has no tolerance for density, and then cuts its loses and moves on. When you get your act together, buddy, give me a call and we can talk.


Things you can do from here:

Posted by brandontyler | 1 Comments

Speech Server (2007) Resources Overview

A little Speech Server Resources Overview...


Sent to you by Brandon Tyler via Google Reader:


via Search results for '"Speech Server"' by akooiman on 5/18/08



To start developing on Speech Server (2007), use the Speech Server (2007) Developer Edition – the free, yet still fully functional version (in the good MS tradition) – it are literally the same bits that the official product has: http://www.microsoft.com/downloads/details.aspx?FamilyId=BB183640-4B8F-4828-80C9-E83C3B2E7A2C&displaylang=en

Yet of course licensed only to develop, and you will need to buy/report the licenses once you deploy.

Please make sure to follow the steps in the Installation Notes scrupulously. Else the installation will typically fail.

Works only with Visual Studio 2005 not Visual Studio 2008.

If you installed installed .NET 3.0 SP1 or Vista SP1, make sure to install the following patch to avoid getting the ‘red crosses bug’:


Community Support is given here: http://forums.microsoft.com/unifiedcommunications/default.aspx?siteid=57

Microsoft Support gives Speech Server (2007) support if you file the bug in the DSC Media queue, or under OCS 2007.

Documentation is found here: http://go.microsoft.com/fwlink/?LinkId=103827

Whitepapers can be found on the Office Communications Developer Portal: http://msdn.microsoft.com/ocdev under the ‘technical articles’ section.

The Speech Server (2007) MOM pack can be found here: http://www.microsoft.com/downloads/details.aspx?FamilyID=55d30337-8e50-4d63-9410-870be4839183&DisplayLang=en

The server is licensed as Office Communications Server 2007.

To understand the pricing best go here: http://gotspeech.net/blogs/michaeldunn/archive/2007/08/20/speech-server-2007-pricing-revealed.aspx

That whole website is useful.

The official training can be found there as well: http://gotspeech.net/elearning.

If you develop your 2007 application: I strongly recommend to develop in managed code and the Windows Workflow Foundation.

SALT and VoiceXML will work, but .NET is the path we are innovating on.

You can embed your existing SALT application inside Windows Workflow, and replace the pieces little by little if need be.

Microsoft Consulting Services has several Speech Server consultants.


Things you can do from here:

Posted by brandontyler | 1 Comments

TechEd Developers 2008 is Packed with UC Development Content

Lot's of UC at TechEd this year!


Sent to you by Brandon Tyler via Google Reader:


Everyone that touches the UC products and SDK is heads down getting ready for TechEd 2008.  It's going to be awesome. 

First, we've great breakout sessions to show you how to build communications features into your apps, like IM, voice and video.  We've also got Interactive Theatre sessions where we'll show and discuss deeper demos of what the SDKs can do (and it's pretty cool).  Along with that, we've got HOLs built on top of a full OCS 2007 and Exchange 2007 environment where you can fire up Visual Studio and kick the tires. 

Here's and example:

1. It takes about 10 lines of code to launch a voice call.  We'll show you that code in the breakouts.

2. Adding communications like voice calls makes for some really compelling apps.  We'll show you those apps and how we built them in the Interactive Theatre.

3. You'll be able to write that code in the HOLs to see the code in action.

Here are the sessions we'll have at TechEd:



Session Type



Building Software on the Microsoft Unified Communications Platform


Albert Kooiman; Kirt Debique


Building Asynchronous Contextual Collaboration with Microsoft Exchange Web Services


Jason Henderson; Paul Robichaux


Unified Communications: Behind the Scenes with Microsoft Office Communications Server 2007, Office Communicator 2007 and Microsoft Exchange Server 2007


Kyle Marsh; Uma Raghavan


Driving Contextual Collaboration with Microsoft Office Communicator 2007


Chris Mayo


Business Process Communications with the Microsoft Unified Communications Managed API


Michael Dunn


Building Contextual Collaboration Using the Microsoft Unified Communications Client API


Oscar Newkerk; Stefano Mapelli


Anywhere Information Access with Microsoft Office Communications Server 2007 Speech Server


Albert Kooiman; Michael Dunn


Programming Conferencing Solutions with the Microsoft Office Live Meeting Service XML API


John Shriver-Blake


Building Contextual Collaboration Clients for the Web Using the Microsoft Unified Communications AJAX SDK


Rui Maximo


I Want Unifed Communications in My Application: Tell Me How


Chris Mayo; Jon Rauschenberger


Communicator Plus: A Microsoft Office Communicator Add-on by Eventure


Vivek Garg


Building Mash-ups with Microsoft Exchange Server 2007 Web Services


David Claux


Migrating Microsoft Exchange Applications to Exchange Web Services


David Claux; Jason Henderson


How to Integrate Microsoft Unified Communications with the Microsoft Office System


Chris Mayo


Using the Microsoft Office Communicator APIs


Avronil Bhattacharjee; Manisha Sahasrabudhe


Building Alerts and Notifications Using the Microsoft Unified Communications Managed API


Stephane Taine


Building an Outbound Microsoft Office Communications Server 2007 Speech Server Application Interacting with Microsoft Exchange Server 2007 Web Services


Albert Kooiman; Jon Rauschenberger


The Microsoft Unified Communications Client API: Building Your Own Unified Communications Client


Srivatsa Srinivasan; Stefano Mapelli


Building Bots on the Microsoft Unified Communications Managed API


Stephane Taine


Integrating Presence in Your Web Application Using the Microsoft Unified Communications AJAX API


Rui Maximo

To get more details on our sessions, got to https://www.msteched.com/dev/public/sessions.aspx, and select "Show Track", select "Unified Communications" and then click the "Filter" button.

To get registred for TechEd Developers 2008, you can get details here: http://www.microsoft.com/events/teched2008/developer/default.mspx.

See you there!  I'll be in the UC Booth all week (when I'm not speaking at Breakouts, Interactive Theatres or helping in the HOLs!)!




Things you can do from here:

Posted by brandontyler | 1 Comments

VoiceXML Certification

I have been studying the past couple of weeks for the VoiceXML Application Developer Exam.  I took it this morning and passed!  Study the spec and give it a shot you might be surprised!  For more information check out the VXML Certification info page.
Posted by brandontyler | 3 Comments
Filed under: ,

Fix for Speech Server (2007) "Red X" Issue

Yea! News from Michael Dunn...


Sent to you by Brandon Tyler via Google Reader:


via Search results for '"Speech Server"' by midunn@microsoft.com on 4/30/08

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!




Things you can do from here:

Posted by brandontyler | 0 Comments

Building Voice Response Workflows

From the MSDN Magazine blog....


Sent to you by Brandon Tyler via Google Reader:


via Search results for '"Speech Server"' by MSDNMagazine on 4/22/08

Need an interactive voice response application for your organization's phone system? Office Communications Server (OCS) 2007 Speech Server introduces a .NET Framework API for creating IVR applications, plus a visual IVR application designer based on Windows Workflow Foundation.

In the April 2008 issue of MSDN Magazine, Michael Dunn demonstrates how to develop an IVR application with Voice Response Workflow Designer by laying out the call flow, building prompts, keywords and conversational grammars, and handling responses.

Don't forget to browse the sample code in our online code library.


Things you can do from here:

Posted by brandontyler | 0 Comments

Creating a Click to Call Application w/Speech Server (2007)

Cool application from Mr. Dunn!


Sent to you by Brandon Tyler via Google Reader:


via Search results for '"Speech Server"' by midunn@microsoft.com on 4/8/08

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 thier 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();

queue.Send(message, transaction);


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...


Things you can do from here:

Posted by brandontyler | 1 Comments

Speech Server 2007 Front Page Article in April 2008 MSDN Magazine

I was pretty excited when I opened my mail yesterday to find the front page article for the MSDN Magazine for April 2008 talking about Speech Server.  Michael Dunn has a great article on creating Voice Response Workflows with Speech Server 2007.  Congratulations Michael.


Posted by brandontyler | 0 Comments
More Posts Next page »