Показывать изображение пользователя в Lync 2013

Я работаю над небольшим приложением, используя Lync 2013 SDK. Есть ли какой-либо способ, предоставленный в SDK, где я могу реализовать функциональность, позволяющую пользователю загружать свое изображение, используя любой API, предоставленный в SDK.

Если это возможно, то что и где лучше всего хранить, если пользователи настроены в активном каталоге?

Жду положительного ответа с вашей стороны.

С уважением

Amit

2 ответа

Дополнение от 12.11.2013

Последнее обновление Lync (Lync Client CU3 (ноябрьское обновление)) имеет возможность установить фотографию, добавленную обратно в графический интерфейс.

Статью с пояснениями и скриншотами можно найти здесь: Lync Client CU3 (ноябрьское обновление) - показать картинку с сайта!,


Оригинальный ответ

Хотя это и другая проблема, мой ответ на этот вопрос ( отображение фотографии для конечной точки приложения) также действителен здесь:

В основном, есть возможность установить фотографию пользователя в URL, но она больше не отображается в клиентском интерфейсе Lync 2013 (она была в клиенте Lync 2010). Если вы можете получить свой код для публикации изображения в веб-доступном месте, вы можете опубликовать URL-адрес и таким образом изменить свое изображение пользователя.

Для справки ответ на другой вопрос:


Публикация информации о присутствии (которая включает в себя настройки фото) осуществляется на LocalEndpoint.LocalOwnerPresence, И то и другое UserEndpoint а также ApplicationEndpoint вытекают из LocalEndpointтак что это должно быть выполнимо на самом деле.

Фактическая публикация становится немного сложной, потому что существует множество различных комбинаций "уровней" для публикации:

Во-первых, есть куча InstanceID значения, о которых вам нужно знать, ознакомьтесь с ними здесь: источник данных о присутствии и идентификатор экземпляра категории

Во-вторых, есть значение того, к кому относится это присутствие, см. Microsoft.Rtc.Collaboration.Presence.PresenceRelationshipLevel, Не публиковать на UnknownВы получите исключение.

public enum PresenceRelationshipLevel  
{  
    Unknown = -1,  
    Everyone = 0,  
    External = 100,  
    Colleagues = 200,  
    Workgroup = 300,  
    Personal = 400,  
    Blocked = 32000,  
}

Вам необходимо опубликовать PresenceCategoryWithMetaData для пользовательских свойств фотографии, которая является частью контейнера 0x5"Информация о присутствии".

var photoPresence = new PresenceCategoryWithMetaData(
    0x5, // The container id
    (int)PresenceRelationshipLevel.Everyone,
    new ContactCard(0x5) // Same container ID again
    {
        IsAllowedToShowPhoto = true,
        PhotoUri = "<uri to your photo here"
    });

Вы можете установить ExpiryPolicy на этом объекте тоже должен быть самоочевидным на самом деле. Затем опубликуйте этот объект присутствия на вашей конечной точке:

Endpoint.LocalOwnerPresence.BeginPublishPresence(new[] { photoPresence  }, cb => { 
    Endpoint.LocalOwnerPresence.EndPublishPresence(cb);
}, null);

И это должно сделать это, действительно. В итоге я явно опубликовал все уровни отношений, потому что они не каскадировали данные, как логически ожидалось.

Вы можете получить поток к фотографии через SDK, используя

var photoStream = Client.Self.Contact.GetContactInformation(ContactInformationType.Photo) as System.IO.Stream

И хотя вы можете читать поток, вы не можете писать в него, поскольку вы сейчас просматриваете контактную информацию из AD.

В некотором смысле вы хотите написать что-то, чтобы изменить фотографию в атрибуте photoThumbnails AD, а не в Lync.

Другие вопросы по тегам