我正在将Skype for Business Web SDK集成到我的Web应用程序中。
我的问题是关于状态更改(状态)。 根据 https://ucwa.skype.com/websdk 上的样本,我正在通过以下方式收听(我的)状态变化:
client.personsAndGroupsManager.mePerson.status.changed(function (status) {
console.log("My new status: " + status);
// etc...
});
这有效,我可以根据状态更改更新 UI。
有一个例外 ->状态"马上回来"。 当状态在 Skype 客户端或应用程序的 UI 中外部更改为"立即返回"(BeRightBack) 时,我返回的状态为"离开"。
在检查 Edge 的开发工具时,我看到以下内容:
POST
{"availability":"BeRightBack"}
和
GET
{"availability":"BeRightBack","_links":{"self": {"href":"/ucwa/oauth/v1/applications.... etc }},"rel":"presence"}
此外,当我在登录 Skype 时以"立即返回"状态登录时,SDK 会返回状态"离开"。
在 https://ucwa.skype.com/websdk 上运行样本时,我得到相同的结果。 我将状态更改为"马上回来",警报显示我"离开"。
我在这里错过了什么吗?这是预期行为吗?
遇到同样的问题:如果我登录到Skype for Business(桌面客户端)并将用户设置为be right back
我从Web SDK获得的值away
。
稍微调查一下,我注意到该方法存在于 sdk.js:44553(版本 1.2.36)
/**
* Transform status values from UCWA to values known to jCafe.
* @param {string} s - status value from UCWA
*/
function fixStatus(s) {
return Person.Status[s] || {
BeRightBack: Person.Status.Away,
Idle: Person.Status.Away,
IdleOnline: Person.Status.Away,
IdleBusy: Person.Status.Away,
Unknown: Person.Status.Offline
}[s] || Person.Status.Offline;
}
在上面,您可以看到状态枚举的声明缺少 BRB 值,我不明白为什么,特别是因为 SDK 根据文档支持 BRB 值
var Status;
(function (Status) {
Status.Away = 'Away';
Status.Busy = 'Busy';
Status.DoNotDisturb = 'DoNotDisturb';
Status.Offline = 'Offline';
Status.Online = 'Online';
})(Status = Person.Status || (Person.Status = {}));
对我来说,这似乎是他们在创建SDK后添加的状态,出于逆向兼容性的原因,他们正在做奇怪的事情,但是无法访问存储库很难确认。
顺便说一句,伙计们,我意识到了这一点; mePerson 对象有两个属性。其中一个是status
属性,另一个属性是activity
。
让我解释一下其中两个之间的区别。BeRightBack
不是一种状态,而是一种活动。BeRightBack
的状态是Away
,activity
是be-right-back
。与OffWork
相同。如果将状态设置为OffWork
,您将看到status = Away
和activity = off-work
。我没有找到如何设置activity
.如果您发现任何内容,请告诉我。
这是代码;
var stasus = 'BeRightBack' ;
window.skypeWebApp.personsAndGroupsManager.mePerson.activity.changed(function (status) {
// alert('Activity Changed to: ' + status);
console.log('Activity Changed to: ' + window.skypeWebApp.personsAndGroupsManager.mePerson.activity);
});