我目前正在跟踪Teams Conversation Bot示例。据我所知,我一直遵循这封信。
当我通过网络视图与漫游器对话
我可以看到它击中了本地主机上的代码。
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
turnContext.Activity.RemoveRecipientMention();
switch (turnContext.Activity.Text.Trim())
{
case "MentionMe":
await MentionActivityAsync(turnContext, cancellationToken);
break;
case "UpdateCardAction":
await UpdateCardActivityAsync(turnContext, cancellationToken);
break;
case "Delete":
await DeleteCardActivityAsync(turnContext, cancellationToken);
break;
case "MessageAllMembers":
await MessageAllMembersAsync(turnContext, cancellationToken);
break;
default:
var value = new JObject { { "count", 0 } };
var card = new HeroCard
{
Title = "Welcome Card",
Text = "Click the buttons below to update this card",
Buttons = new List<CardAction>
{
new CardAction
{
Type= ActionTypes.MessageBack,
Title = "Update Card",
Text = "UpdateCardAction",
Value = value
},
new CardAction
{
Type = ActionTypes.MessageBack,
Title = "Message all members",
Text = "MessageAllMembers"
}
}
};
await turnContext.SendActivityAsync(MessageFactory.Attachment(card.ToAttachment()));
break;
}
}
它似乎将响应发送回去,但响应窗口中没有任何内容。如果没有显示响应,我该如何测试?
经过更多的挖掘后,我看到ngrok正在将错误归类为网页,我设法从中选出了以下错误。
AggregateException:无法获取客户端凭证的令牌。 (AADSTS700016:在目录“ botframework.com”中找不到标识为“ 9e0d71-7665-4f24-8898-f82f9bebba56”的应用程序。如果该应用程序未由租户管理员安装或未得到任何管理员的同意,则可能会发生这种情况。租户中的用户。您可能已将身份验证请求发送给错误的租户。
跟踪ID:4bf53bae-84dc-4b16-98e8-e99b322dc200
相关ID:3c249469-d177-49dd-989f-80044a3b9faa
时间戳记:2019-11-12 08:41:56Z)(AADSTS700016:在目录'botframework.com'中找不到标识符为'e0d71-7665-4f24-8898-f82f9bebba56'的应用程序。已由租户的管理员安装或得到租户中任何用户的同意。您可能已将身份验证请求发送给错误的租户。
我已经检查了漫游器和应用程序本身的设置。它们具有相同的密码和应用程序客户端ID。
botframework.com似乎包含在azure上创建的机器人列表。
Ch住botframework.com我的机器人已列出。
用户具有在AD中创建应用程序的权限,无论如何我目前还是唯一的用户。
我可以在漫游器中看到其网络聊天记录错误
问题是机器人正在响应。
运行模拟器确实可以。问题是在托管时。
问题#1974
答案 0 :(得分:0)
我意识到这是一个旧线程,但我今天刚被它击中。在经历了很多痛苦之后,我们的情况得到了解决:
回想起来:当尝试通过 Microsoft.Bot.Builder.Teams.TeamsInfo.GetMemberAsync()
获取机器人与之聊天的人的详细信息时,抛出了 AADSTS700016 错误。由于我们在应用注册中的“支持的帐户类型”受到限制,当机器人在不同于我们的 Azure AD 租户的 Teams Office365 租户中运行时,Azure AD 会说“不”。翻转后,GetMemberAsync()
能够对 Teams Office365 租户进行身份验证以获取请求的用户信息。耶!