我正在编写一个 UCMA 2.0 应用程序,它通过“UserEndpoint”连接到 OCS。我希望能够设置自定义状态消息以及我的可用性!
我在此过程中遇到了一些问题,并花了很多时间谷歌搜索并尝试了几篇文章,大多数似乎都在说同样的事情(包括 MS 自己):
使用 XML 将“userState”活动设置为自定义并包含消息,然后通过端点的“LocalOwnerPresence.BeginPublishPresence”方法将其发布到自定义类别中。
执行此操作时,我没有从 OCS 收到任何错误(请参阅下面的 XML 示例),但是查看 Office Communicator (MOC) 中的存在问题的用户继续显示为脱机。我发现同时发布“machineState”意味着我们在 MOC 中看到了一些存在图标,但是唉,我无法让自定义活动消息正常工作。
更多的阅读让我大吃一惊,例如需要运行 OCS DB 中的存储过程以允许这样做(听起来更像是添加全新的存在类别,而不仅仅是向现有状态添加自定义消息)。经过一天的“在线”后,我有点受不了了。
任何帮助或指出任何陷阱将不胜感激!我在阅读此内容时包含了一些我使用的网站:
存在介绍: 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: //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);
希望我没有遗漏任何内容,如果您认为缺少某些内容,请发表评论!
干杯皮特