使用UCMA 2.0在OCS2007 R2中发布自定义状态消息(在MOC中可见)
本文关键字:消息 状态 MOC 自定义 UCMA OCS2007 使用 R2 | 更新日期: 2023-09-27 18:00:00
我正在编写一个UCMA 2.0应用程序,该应用程序通过"UserEndpoint"连接到OCS。我希望能够设置一个自定义的状态信息和我的可用性!
一路上我遇到了一些问题,花了很多时间在谷歌上搜索并尝试了一些文章,大多数人似乎都在说同样的话(包括MS本身):
使用XML将"userState"活动设置为自定义并包含消息,然后通过端点的"LocalOwnerPresence"在自定义类别中发布该消息。BeginPublishPresence方法。
当我这样做时,我不会从OCS收到任何错误(请参阅下面的XML示例),但从Office Communicator(MOC)中的存在来看,有问题的用户仍然显示为脱机。我发现发布"machineState"意味着我们在MOC中看到了一些存在图标,但遗憾的是,我无法让自定义活动消息正常工作。
更多的阅读让我了解了一些疯狂的事情,比如OCS DB中需要运行的存储proc(听起来更像是添加全新的存在类别,而不仅仅是向现有状态添加自定义消息)。"上网"一天后,我有点力不从心了。
任何帮助或指出任何问题都将不胜感激!我已经包括了一些我在阅读时使用的网站:
Presence简介: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/
存在模式文档:http://msdn.microsoft.com/en-us/library/dd941536(v=office.13).aspx
这是我在代码中使用的XML(字符串),它是动态的字符串。使用自定义消息和可用性整数值格式化占位符("测试消息"和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);
希望我没有遗漏任何内容,如果你认为遗漏了什么,请评论!
干杯Pete
好吧,这有点尴尬,因为我已经设法解决了它——但我认为我可以把一些责任归咎于MS:
似乎您必须在自定义消息上指定LCID(区域性信息ID),以便MOC接收它,遗憾的是MSDN上的文档似乎认为这不是必需的(也许不是,但为了使事情正常运行,它是必需的)
http://msdn.microsoft.com/en-us/library/dd941468(v=office.13).aspx
LCID(int):表示位置ID的整数。可选
这意味着我必须多次添加自定义消息,尽管对于使用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>";
无论如何,我希望这能帮助到其他想要为所有文化提供通用信息的人,如果你想创建类似的东西,也许上面的链接也是有用的。