如何从Skype for Business的MS Bot Framework中获取“ conversationUpdate”和“ endOfConversation”以外的内容

rudolf_franek

虽然我们没有找到以前关于将机器人注册到Skype for Business渠道(以下称SfB)的问题的解决方案,但我们尝试创建全新的bot并为新用户执行到SfB渠道的新注册。在创建和注册过程中没有错误。

目前,我们可以读出传入Activity时Visutal工作室2017年附着在调试模式(云浏览器>连接调试器),以BOT部署在Azure的,但我们只观察类型的活动:“ conversationUpdate ”或“ endOfConversation我们将消息发送到”每一次我们的机器人通过SfB。

更新

该漫游器是使用链接到Azure和MSDN订阅的帐户创建和注册的,但是该帐户不属于我们的Azure Active Directory。SfB使用的发件人和漫游器帐户是我们的Azure Active Directory的一部分。

如果我从也拥有该漫游器本身的帐户所拥有的Azure门户中创建专用的Azure Active Directory,则通过SfB进行的通信适用于在该专用Azure Active Directory中创建的帐户。

结束更新

我们现在可以检查Azure或SfB上的哪些日志或设置,以使通信最终正常运行?用户是否有代表机器人的任何特殊要求,可能需要仔细检查?如果漫游器的所有者没有对定义了漫游器用户的Azure Active Directory的权限,该漫游器是否还有其他安全设置?

请参阅序列化json活动的示例:

{
  "type": "conversationUpdate",
  "id": "6d5f79c9-9a89-4606-92cb-9ead49405865",
  "timestamp": "2017-12-01T14:13:53.3958935Z",
  "serviceUrl": "https://webpooldb40r04.infra.lync.com/platformservice/.../botframework",
  "channelId": "skypeforbusiness",
  "from": { "id": "sip:[email protected]", "name": "LastName, Me" },
  "conversation": { "isGroup": true, "id": "YzkxZDQ2MmQjc2lwOmFmZmJib3RAYmx1ZWxpbmtz..." },
  "recipient": { "id": "sip:[email protected]", "name": "sip:[email protected]" },
  "membersAdded": [],
  "membersRemoved": [ { "id": "sip:[email protected]", "name": "LastName, Me" } ],
  "attachments": [],
  "entities": []
}

{
  "type": "endOfConversation",
  "id": "4b485bcf-59c8-446f-9d56-74dda973db25",
  "timestamp": "2017-12-01T14:13:53.4115031Z",
  "serviceUrl": "https://webpooldb40r04.infra.lync.com/platformservice/.../botframework",
  "channelId": "skypeforbusiness",
  "from": { "id": "sip:[email protected]" },
  "conversation": { "isGroup": true, "id": "YzkxZDQ2MmQjc2lwOmFmZmJib3RAYmx1ZWxpbmtz..." },
  "recipient": { "id": "sip:[email protected]", "name": "sip:[email protected]" },
  "membersAdded": [],
  "membersRemoved": [],
  "attachments": [],
  "entities": []
}

备注:

1)Bot注册了一个多星期。

2)我们的控制器包含尽可能少的代码,以避免可能影响我们测试的任何问题:

    public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
    {
        if (activity != null)
        {
            if (activity.Type == ActivityTypes.Message)
            {
                var reply = activity.CreateReply("Reply");
                using (var client = new ConnectorClient(new Uri(reply.ServiceUrl)))
                {
                    await connectorClient.Conversations.ReplyToActivityAsync(reply);
                }
            }
        }

        return Request.CreateResponse(HttpStatusCode.OK);
    }

3)为WebChat通道正确生成了响应: WebChat示例文本和响应

4)在bot Analytics中,我们看到WebChat和SfB的传入消息和用户在此处输入图片说明

5)如果我们仍然尝试响应“ conversationUpdate”或“ endOfConversation”类型的活动,则我们会观察到:

{"Conversation does not exist"} Microsoft.Rest.HttpOperationException

6)如果我们尝试执行创建新对话的代码,则会得到:

{"BVD operation failed with 404"} Microsoft.Rest.HttpOperationException

第5)和第6)点是相当可取的,只是为了说明而附在后面

阿尔比吉

目前,S4B机器人只能与同一域中的用户通信。原因是安全性,因为漫游器可以识别与之交互的用户的身份(用户身份不进行散列),并且需要最终用户可以在最终用户中使用漫游器的租户管理员步骤。

因此,当前不支持联合/跨租户方案。

在大多数情况下,建议在每个AAD“域”中创建一个bot“实例”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章