2012-05-19 13 views
5

Estoy codificando información de presencia de mensajería instantánea en una de mis empresas de aplicaciones Silverlight. Hasta ahora, la única solución que he encontrado es una en CodePlex (Silverlight.OCS). Está "bien", pero está extremadamente anticuado.¿Puedo usar la API de Microsoft Lync para comunicarme con Communicator 2007/2007 R2?

El SDK de Lync hace que sea desagradablemente fácil obtener información de presencia dentro de Silverlight. Desafortunadamente, el 99% de los usuarios de nuestra red todavía están en OFfice Communicator (R2), por lo que no es posible utilizar el método de Lync listo para usar (controles: PresenceIndicator ... en xaml).

Tengo curiosidad por saber si Lync SDK contiene una forma de comunicarse con Office Communicator.

En caso afirmativo, ¿cómo podría a) comprobar qué cliente se está ejecutando y luego b) conectar con ese cliente, ya sea Lync o Communicator. ¡Cualquier ayuda es muy apreciada! Por último, pero no menos importante, estoy buscando el código C# si es posible. ¡Gracias!

+0

Eche un vistazo a ['NameCtrl'] (http://msdn.microsoft.com/en-us/library/ms455335) control ActiveX. Puedes obtener presencia de eso. –

Respuesta

2

No se puede utilizar el SDK de Lync 2010 en contra de Office Communicator, solamente Lync 2010.

La encarnación anterior del SDK es la API de Office Communicator Automation (Ocaña). Es una API basada en COM, y funcionará contra Communication 2007 y 2007 R2. Todavía es compatible ... ¡por ahora!

Puede descargar la API here. La página de inicio de MSDN es here.

En cuanto a conseguir información de presencia ... bueno, espero que esto podría ayudar a que (con una advertencia de que soy demasiado joven para haber hecho ningún trabajo API OCS;)

Getting a contact record:

private IMessengerContact FindContact(string userID) 
{ 
    IMessengerContact contact = null; 
    // Try the local contact list first 
    try 
    { 
     contact = (IMessengerContact)communicator.GetContact(userID, ""); 
    } 
    catch 
    { 
     contact = null; 
    } 

    // For a nonlocal contact, try the SIP Provider of Communicator 
    if (contact == null || contact.Status == MISTATUS.MISTATUS_UNKNOWN) 
    { 
     try 
     { 
      contact = 
       (IMessengerContact)communicator.GetContact(userID, 
       communicator.MyServiceId); 
      return contact; 
     } 
     catch 
     { 
      contact = null; 
      return contact; 
     } 
    } 
    else 
    { 
     return contact; 
    } 
} 

Volviendo el estado de un contacto:

la interfaz IMessengerContact define una propiedad Status, que contiene uno de una serie de MISTATUS valores.

Cuestiones relacionadas