![](/img/trans.png)
[英]How to Access User & Conversation Data in Test Functions for Bot Framework
[英]How to test Conversation bot localhost
我目前正在关注Teams Conversation Bot示例。 据我所知,我已经按照这封信进行了操作。
当我通过 web 视图与机器人交谈时
我可以看到它击中了我的本地主机上的代码。
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;
}
}
它似乎将响应发回,但响应 window 中没有出现任何内容。 如果它没有显示响应,我该如何测试?
经过更多的挖掘后,我可以看到 ngrok 得到了一个错误,它的 web 页面我设法从中挑选出以下错误。
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 上创建的机器人列表。
检查botframework.com我的机器人已列出。
用户有权在 AD 中创建应用程序,我目前是唯一的用户。
我可以在机器人中看到它与 web 聊天记录错误
问题是机器人正在响应。
运行模拟器确实有效。 问题是托管时。
第1974期
我意识到这是一个旧线程,但我今天才被它击中。 在经历了很多痛苦之后,我们的情况是这样的:
回想起来:当试图通过Microsoft.Bot.Builder.Teams.TeamsInfo.GetMemberAsync()
获取机器人正在与之聊天的人的详细信息时,会引发 AADSTS700016 错误。 由于我们在应用注册中的“支持的帐户类型”受到限制,因此当机器人在与我们的 Azure AD 租户不同的 Teams Office365 租户中运行时,Z3A580F142203673F1F0BC30898 会说“不,ADA580F142203673F1F0BC30898” 翻转后, GetMemberAsync()
能够对 Teams Office365 租户进行身份验证,以获取请求的用户信息。 耶!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.