Публикация пользовательского сообщения о присутствии в OCS2007 R2 с использованием UCMA 2.0 (отображается в MOC) - PullRequest
1 голос
/ 20 июня 2011

Я пишу приложение 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);

Надеюсь, я ничего не пропустил, пожалуйста, прокомментируйте, если вы думаете, что чего-то не хватает!

Приветствие Пит

1 Ответ

1 голос
/ 21 июня 2011

ОК, это немного смущает, так как мне удалось решить это, но я думаю, что могу обвинить MS:

Похоже, что вы ДОЛЖНЫ указать LCID (идентификатор информации о культуре) в настраиваемом сообщении, чтобы MOC мог его забрать, к сожалению, документы в MSDN, похоже, считают, что это не требуется (возможно, это не так, но для работать правильно это)

http://msdn.microsoft.com/en-us/library/dd941468(v=office.13).aspx

LCID (int): целое число, представляющее идентификатор местоположения. Дополнительно

Это означает, что мне нужно добавлять пользовательское сообщение несколько раз, хотя для каждой потенциальной локали, в которой могут находиться получатели, использующие MOC, не кажется лучшим способом сделать это (см., Например, ниже).

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 LCID=\"1033\" xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\">{1}</custom>\n"
    + "<custom LCID=\"2057\" xmlns=\"http://schemas.microsoft.com/2006/09/sip/state\">{1}</custom>\n" 
  + "</activity>\n"
+ "</state>";

В любом случае, я надеюсь, что это поможет кому-то еще, кто хочет общее сообщение для всех культур, может быть, ссылки выше также полезны для чтения, если вы хотите создать что-то подобное.

...