In the Unified Communications (UC) world 2 types of clients access Exchange 2007 Web Services (EWS) running in Client Access server role (CAS). These two clients are Office Communicator 2007 (OC) and Office Communicator 2007 Phone Edition (OCPE). The Office Live Meeting client, Communicator Web Access and Office Communicator Mobile do not access EWS.
OC uses EWS only if the user is running Outlook 2007 on the desktop with mailbox running on Exchange 2007. OC uses EWS only to access Out Of Facility (OOF) Note and Calendar data. More information about OC can be found here.
OCPE uses AutoDiscover and EWS on the CAS servers. It uses AutoDiscover to locate EWS. OCPE refreshes AutoDiscover information every 24 hours. EWS is used to fetch Outlook Contacts, Voice Mails and Call Logs for the signed in user. OCPE uses EWS only if the signed-in user is enabled for Enterprise Voice and Exchange 2007 UM. If the user is not enabled for Exchange 2007 UM OCPE will not show the tabs for Voice Mails and Call logs.
When information about users and callers is displayed on the device OCPE does a Reverse Number Lookup (RNL) against a combination of OC Contacts, Outlook Contacts and the Global Address List (GAL). For the rest of the document, we will only talk about the latter two since they are related to Exchange. OC Contacts are obtained from the OC Server directly.
OCPE downloads the GAL through the OCS Web Component Server similar to how OC does it. The downloading happens every 24 hours and uses a normal HTTP GET method.
OCPE polls EWS for new Outlook Contacts. It will only download Outlook Contacts from your main Contacts folder in the Inbox. After OCPE downloads the updated GAL, it reindexes the combined GAL and Outlook Contacts downloaded to the device. After the indexing completes, the combined set of information is made available to the user. This means that there is a 24-hour interval to get new user information available on the device. All Outlook Contacts use the “File As” field as the primary display name on the device.
OCPE polls EWS every 3 min (not configurable) for any new items in the “Voice Mail” and “Conversation History” folders. The poll interval is sent to OCPE via in-band provisioning in the parameter ucExchangeMWIPoll. It uses the GetEvents EWS call twice in each poll interval, one for each of the folders mentioned above. OCPE will also call GetEvents outside the poll interval in response to certain activities on the device, i.e. unlocking the device, user accessing the Call logs or Voice Mail tab etc. The information downloaded for an item includes the date, the type of call (missed, incoming, outgoing), if this is a conference call and the caller-id. The caller-id field is used to do Reverse Number Lookup (RNL) against the indexed Gal and Outlook Contacts. If the contacts index is updated, OCPE only use it after the user has signed out and signed back in.
If a new item is found in any of the folders, OCPE uses the EWS call FindItem to get information about the item including From, Subject, Date and Caller-Id. From the call logs the user can directly call the caller back. If it is a voice mail you can directly listen to the voice mail on OCPE. Voicemail is accessed as takes place via SIP, not via EWS.
OCPE writes to the “Conversation History” folder using the EWS call CreateItem. The device creates an item of type IPM.Note.Microsoft.Conversation.Voice and generates an HTML formatted body similar to call logs generated by OC. OCPE is uses the EWS call UpdateItem to mark a call log read by the user.
The above sections summarize the interactions between OCPE and EWS during normal operation. The interactions in abnormal situations, such as EWS not being accessible, are complicated. OCPE has a complex error case handling based on the type of error that occurs. For example,OCPE will retry AutoDiscover each 5 * ucExchangeMWIPoll intervals. If a call to EWS fails after AutoDiscover has succeeded it will retry with ucExchangeMWIPoll intervals. Detailed discussion about how specific errors are handled will be a topic for a future blog posting.
Authors: Jens Trier Rasmussen, Sachin Sheth, Ranjith Narayanan