Я пишу приложение UCMA 2.0, которое соединяется с UserEndpoint с OCS. Я хочу иметь возможность установить собственное сообщение о присутствии вместе с моей доступностью!
Я столкнулся с некоторыми проблемами на этом пути и потратил много времени на поиски в Google и пробовал несколько статей, большинство, кажется, говорят то же самое (включая самих MS):
Используйте XML для задания действия userState как пользовательского и содержащего сообщение, а затем опубликуйте его в пользовательской категории с помощью метода конечной точки LocalOwnerPresence.BeginPublishPresence.
Я не получаю никаких ошибок от OCS, когда я делаю это (см. Пример XML ниже), но, глядя на присутствие в Office Communicator (MOC), рассматриваемый пользователь продолжает появляться в автономном режиме. Я обнаружил, что публикация «machineState» означает, что мы видим какой-то значок присутствия в MOC, но, увы, я не могу заставить работать сообщение с пользовательской активностью.
Больше чтения отправило меня на дикие гусиные преследования, такие как сохраненные процессы в БД OCS, которые необходимо запустить, чтобы позволить это (звучало больше похоже на добавление совершенно новых категорий присутствия, а не просто пользовательское сообщение в существующее состояние). Я нахожусь в конце моей привязи после дня "онлайн".
Буду признателен за любую помощь или указание на любые ошибки! Я включил несколько сайтов, которые я использовал, когда читал об этом:
Presence Intro: http://msdn.microsoft.com/en-us/library/dd253506(v=office.13).aspx
Публикация Присутствие: http://msdn.microsoft.com/en-us/library/dd253494(v=office.13).aspx
Присутствие + Пользовательские сообщения: http://blogs.claritycon.com/blog/2009/03/04/how-to-publish-presence-using-ucma-v2-0-and-have-a-clever-communicator-status/
Идеи состояния машины: http://social.msdn.microsoft.com/Forums/en-US/ucmanagedsdk/thread/d3bd3569-66c0-4b52-86f0-900d2fb6d22e/
Схема присутствия doc: http://msdn.microsoft.com/en-us/library/dd941536(v=office.13).aspx
Вот XML (строка), которую я использую в своем коде, на лету I string. Отформатируйте заполнители с помощью специального сообщения и целочисленного значения доступности («тестовое сообщение» и 3500 для аргумента).
string userStateXmlFormat = "<state xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" manual=\"true\" xsi:type=\"userState\">\n"
+ "<availability>{0}</availability>\n"
+ "<activity>\n"
+ "<custom xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\">{1}</custom>\n"
+ "</activity>\n"
+ "</state>";
Вот C #, который выполняет форматирование и пытается опубликовать информацию о присутствии:
var machineStateXml = string.Format(machineStateXmlFormat, 3500);
var userStateXml = string.Format(userStateXmlFormat, 3500, "Test Message");
var machineState = new CustomPresenceCategory("state", machineStateXml);
var userState = new CustomPresenceCategory("state", userStateXml);
PresenceCategory[] categoriesToPublish = new PresenceCategory[] { machineState, userState };
this.Endpoint.LocalOwnerPresence.BeginPublishPresence(categoriesToPublish, this.PublishPresenceCompleted, null);
Надеюсь, я ничего не пропустил, пожалуйста, прокомментируйте, если вы думаете, что чего-то не хватает!
Приветствие
Пит