【问题标题】:Unable to get presence for people outside user's organisation in Skype for Business Web SDK无法在 Skype for Business Web SDK 中获取用户组织外部人员的状态
【发布时间】:2016-11-04 11:13:24
【问题描述】:

我们在应用程序中使用 Skype for Business Web SDK 来显示联系人的存在。

当联系人是用户组织内的某个人(因此与用户是同一个 AD 实例)时,我们在联系人的状态 onChange 事件上注册一个回调函数,这很有效。

但是,当联系人在用户的组织之外(因此与用户不同的 AD 实例)时,我们发现联系人的状态 onChange 事件永远不会触发,因此无法知道他们的状态。

我们使用的代码如下:

skypeContactService.subscribeToStatusChange = function (contact) {
  contact.status.changed(function (status) {
    ...
  });
  contact.status.subscribe();
};

我不会认为这是一种蓄意的安全措施,因为在 Outlook Online 的 Skype for Business 功能中,您可以看到外部联系人的存在。

所以这可能是 Skype for Business Web SDK 中的一个错误?或者可能是尚未实现的功能?

是否有来自 Microsoft 的人员能够澄清是否有计划让用户组织之外的联系人能够在场?

任何帮助将不胜感激!

【问题讨论】:

  • 您是否与外部联系人的域联合?是否有任何外部联系人能够接收状态更新?如果您尝试执行 contact.status.get() 并链接结果,您可以看到联系人的任何状态 (contact.status.get().then(function (status) { console.log(status); } );
  • 嗨 Shelby - 回答您的问题: 1) 不,我们不与外部联系人的域联合。 2) 外部联系人通过 Outlook 可以看到我们通过 SDK 进行的状态更改 3) 执行上面的代码会为我们提供值“未知”因为他们可以看到我们的状态,但我们看不到他们的状态,我不认为需要联合。还有什么想法吗?

标签: skype-for-business skypedeveloper


【解决方案1】:

应该要求联盟来查看状态并进行与对话相关的活动,例如 IM、音频、视频。我不是 Skype/Lync 方面的专家,但我建议您查看 Federation Documentation,因为我认为您没有与外部用户的链接,因此您将无法看到该信息。

要解决您的确切问题,您需要与任何您希望能够看到存在或开始对话的组织建立联盟。

它们可能与您的组织联合,以便他们可以查看您的状态信息,或者如果它们是在线托管的 (O365),则可能存在替代 API 可以在未联合的情况下公开状态信息。他们是否能够与您的任何用户开始 IM 或 A/V 对话(它应该会失败,因为您的一方不是联合的)?

【讨论】:

  • 嗨谢尔比。回答您的问题 - 我们能够使用 Web SDK 在不同租户的用户之间发送/接收即时消息,因此我认为这不是联合问题。此外,当我们通过 Outlook Online 使用 Skype for Business 时,我们能够看到这些用户在我们的租户之外的存在。也许,正如您所建议的,这是因为 Outlook Online 使用了不同的 API。这表明这是 Skype for Business Web SDK 中的一个错误,而不是有意采取的安全措施......让 Skype for Business 团队的某个人提供建议会很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
相关资源
最近更新 更多