在可信應用程序端點中,我必須基於外部狀態提供程序發佈用戶狀態,我可以這樣做(稍後在外部源「空閒」是一個不同的問題)發佈在用戶lync客戶端上沒有顯示的Lync 2010用戶狀態
但是,有什麼問題是,如果我爲用戶A發佈新狀態,並不反映在該用戶自己的Lync客戶端上,但其他人都會得到更新。
此時此刻我正在使用此代碼段做出版:
user.Endpoint.LocalOwnerPresence.BeginPublishPresence(
user.categories,
arBeginPublishPresence =>
{
try
{
user.Endpoint.PresenceServices.EndUpdatePresenceState(arBeginPublishPresence);
logger.log("Published presence for {0} with state {1}.", user.SipUserUri, newState.Availability);
}
catch (RealTimeException ex)
{
logger.log("Failed publishing presence for {0}. {1}", user.SipUserUri, ex);
}
},
null);
其中user.categories是:
PresenceCategoryWithMetaData stateWithMetaDataForPersonal = new PresenceCategoryWithMetaData(++instanceId, 400, newState);
PresenceCategoryWithMetaData stateWithMetaDataForWorkgroup = new PresenceCategoryWithMetaData(instanceId, 300, newState);
PresenceCategoryWithMetaData stateWithMetaDataForColleagues = new PresenceCategoryWithMetaData(instanceId, 200, newState);
PresenceCategoryWithMetaData stateWithMetaDataForExternal = new PresenceCategoryWithMetaData(instanceId, 100, newState);
PresenceCategoryWithMetaData stateWithMetaDataForAll = new PresenceCategoryWithMetaData(instanceId, 0, newState);
if (instanceId >= Int64.MaxValue)
{
instanceId = 1;
}
stateWithMetaDataForPersonal.ExpiryPolicy = expirypolicy;
stateWithMetaDataForWorkgroup.ExpiryPolicy = expirypolicy;
stateWithMetaDataForColleagues.ExpiryPolicy = expirypolicy;
stateWithMetaDataForExternal.ExpiryPolicy = expirypolicy;
stateWithMetaDataForAll.ExpiryPolicy = expirypolicy;
stateWithMetaDataForPersonal.Expires = timeout;
stateWithMetaDataForWorkgroup.Expires = timeout;
stateWithMetaDataForColleagues.Expires = timeout;
stateWithMetaDataForExternal.Expires = timeout;
stateWithMetaDataForAll.Expires = timeout;
user.categories =
new List<PresenceCategoryWithMetaData>()
{
stateWithMetaDataForPersonal,
stateWithMetaDataForWorkgroup,
stateWithMetaDataForColleagues,
stateWithMetaDataForExternal,
stateWithMetaDataForAll
};
類別是地毯式轟炸的存在狀態,我只是知道我做錯了。這不可能是這個......混亂。
請耐心等待,我是C#,.NET和UCMA的新手,直到一個月前從未碰過它。
事實證明,添加ContainerId 2實際上似乎是這樣做的。 – 2012-04-20 22:23:02
這是有道理的,我猜 - 你只需要確保容器ID確實映射回你想要的端點 - 例如如果用戶在移動設備和PC上登錄,是否要更改兩者,或者只是定位到PC,然後您需要了解要更新哪個容器。另外,請記住,如果您這樣做,並將Lync中的用戶狀態設置爲忙,沒有什麼可以阻止他們改變它回覆覆蓋你的變化 – 2012-04-20 22:28:19
我知道。我試圖訂閱在線更新,當它發佈了一個接收事件,導致了一個新的帖子時,我有幾次發現了這一點......即時日誌填充:)有一個我關心的問題是狀態更新,其中xml消息本身返回一個狀態,但aggregatesState對象是-1和「無」 – 2012-04-20 22:44:58