我正在将Skype for Business Web SDK集成到我的网络应用程序中。
我的问题是状态变化(存在)。 根据{{3}}上的示例,我通过以下方式收听(我)状态更改:
client.personsAndGroupsManager.mePerson.status.changed(function (status) {
console.log("My new status: " + status);
// etc...
});
这可行,我可以根据状态更改更新UI。
有一个例外 - >状态'回来'。 当状态在Skype客户端或我的应用程序的UI中外部更改为“Be right back”(BeRightBack)时,我将返回“离开”状态。
在检查Edge的Dev Tools时,我看到以下内容:
POST
{"availability":"BeRightBack"}
和
GET
{"availability":"BeRightBack","_links":{"self": {"href":"/ucwa/oauth/v1/applications.... etc }},"rel":"presence"}
当我在登录Skype时以“Be right back”状态登录时,SDK会返回“Away”状态。
在https://ucwa.skype.com/websdk上运行样本时,我得到相同的结果。 我将状态更改为“Be right back”,警报显示我'离开'。
我在这里遗漏了什么吗?这是预期的行为吗?
答案 0 :(得分:1)
遇到同样的问题:如果我登录Skype for business(桌面客户端)并将用户设置为be right back
,我从网站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根据documentation支持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后添加的状态,并且由于复古兼容性的原因,他们正在做一些奇怪的事情,但很难确认而无法访问存储库。
答案 1 :(得分:0)
顺便说一下,伙计们,我意识到了这一点; 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);
});