虽然我们没有找到以前关于将机器人注册到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);
}
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] 删除。
我来说两句