Skype for Business Web SDK - 状态/状态'马上回来'

时间:2017-03-16 09:04:31

标签: skype skype-for-business skypedeveloper

我正在将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”,警报显示我'离开'。

我在这里遗漏了什么吗?这是预期的行为吗?

2 个答案:

答案 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的状态为Awayactivitybe-right-back。与OffWork相同。如果您将状态设置为OffWork,则会看到status = Awayactivity = 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);
});