繁体   English   中英

如何测试对话机器人本地主机

[英]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 错误

经过更多的挖掘后,我可以看到 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 上创建的机器人列表。

我已经尝试过。

  • Visual Studio 以管理员身份运行。
  • 检查botframework.com我的机器人已列出。

  • 用户有权在 AD 中创建应用程序,我目前是唯一的用户。

在此处输入图像描述

  • 开发工具日志显示其身份验证。
  • 边缘和镀铬

在此处输入图像描述

web 聊天错误

我可以在机器人中看到它与 web 聊天记录错误

在此处输入图像描述

问题是机器人正在响应。

模拟器

运行模拟器确实有效。 问题是托管时。

交叉张贴

1974

我意识到这是一个旧线程,但我今天才被它击中。 在经历了很多痛苦之后,我们的情况是这样的:

  1. Go 到 Azure 门户 > Azure 活动目录
  2. 点击“应用注册”
  3. 找到有问题的机器人应用程序的注册并单击它。
  4. 在管理下,选择身份验证。
  5. 将“支持的帐户类型”更改为“任何组织目录中的帐户”。

回想起来:当试图通过Microsoft.Bot.Builder.Teams.TeamsInfo.GetMemberAsync()获取机器人正在与之聊天的人的详细信息时,会引发 AADSTS700016 错误。 由于我们在应用注册中的“支持的帐户类型”受到限制,因此当机器人在与我们的 Azure AD 租户不同的 Teams Office365 租户中运行时,Z3A580F142203673F1F0BC30898 会说“不,ADA580F142203673F1F0BC30898” 翻转后, GetMemberAsync()能够对 Teams Office365 租户进行身份验证,以获取请求的用户信息。 耶!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM