Показывать изображение пользователя в 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.