![](/img/trans.png)
[英]How to automatically test a QnA Maker Bot (Bot Framework V4, C#)?
[英]Problem with Azure Bot with QnA Maker using Bot Framework SDK V4
我试着按照这个做同样的事情,对我来说有 2 个问题 Nr.1 我仍然在 Bot Frame Emulator 中得到一个 Echo 和 Nr.2 我不会从 azure 的 Webchat 收到消息。 这是我的 EchoBot.cs 代码
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.15.2
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Linq;
using Microsoft.Bot.Builder.AI.QnA;
namespace EchoBot1test.Bots
{
public class EchoBot : ActivityHandler
{
public QnAMaker EchoBotQnA { get; private set; }
public EchoBot(QnAMakerEndpoint endpoint)
{
EchoBotQnA = new QnAMaker(endpoint);
}
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var replyText = $"Echo: {turnContext.Activity.Text}";
await AccessQnAMaker(turnContext, cancellationToken);
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
}
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
var welcomeText = "are you a member of ...?";
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
await turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText), cancellationToken);
}
}
}
private async Task AccessQnAMaker(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var results = await EchoBotQnA.GetAnswersAsync(turnContext);
if (results.Any())
{
await turnContext.SendActivityAsync(MessageFactory.Text(results.First().Answer), cancellationToken);
}
else
{
await turnContext.SendActivityAsync(MessageFactory.Text("Sorry, could not find an answer in the Q and A system."), cancellationToken);
}
}
}
}
我想我尝试了所有想法...我不知道我还能尝试什么。
如果有人有想法,我会很高兴,如果问题表述不当,我可以更改它。 我真的很难解释这个。
首先,我添加了一个简单的 QNA 对,并在 QNA Portal 上进行了如下测试:
如果您认为您在 QNA Portal 上获得了预期的响应,则可以跳过此部分:
注意:一旦您按预期完成了这一点,您就可以在 Azure 上部署您的机器人了。
注意:复制已标记为红色的URL
。 它应该像https://YourBotServiceName.azurewebsites.net
注意:您之前创建的应用服务应该在“应用服务实例”菜单项上获得该服务,如下所示。 选择您的应用程序服务,然后单击“完成”。
如果您有现有的应用程序,只需复制overview
中的“应用程序(客户端)”和证书和机密中的app secrets
,如下图所示。
如果您没有现有的应用程序,请创建新的应用程序,如下面的屏幕截图所示。
现在您需要在 Azure 机器人注册面板下注册您的 Azure 机器人。 像下面这样:
步骤: 1转到 Azure 门户创建资源刀片
步骤: 2键入 Azure Bot。 点击 Create 然后填写如下表格: 然后点击 Review + Create 然后点击 Create。 等待部署完成。
注意:此appId
和app secret
将来自 Azure Active Directory 应用程序注册,如上所示
注意:您可以通过在 Azure Active Directory 中创建 App Registration 来获取appId
和App Secret
,如下所示:
步骤: 3部署完成后,单击“go to resource”,它将带您进入以下页面。
注意:请记住,您遵循的文档似乎没有遵循此步骤。 因为最近 Azure bot 有一个更新“Azure Web App Bot is deprecated”但是你关注的文档有点旧。 所以你可能错过了这个非常重要的步骤。 可以在这里找到更新
这是您在 bot 上错过的步骤,这对于与您的 Web 应用程序服务交互非常重要,除 bot 之外的 Azure Bot 无法识别 Web 应用程序服务与 Bot 之间的交互。
因此,现在单击“设置”菜单下的“配置”,您之前从 Bot Web 应用服务复制的 URL,如下所示
粘贴到这里应该是这样的格式: https://YourAppService.azurewebsites.net/api/messages
://YourAppService.azurewebsites.net/api/messages。 应该像下面这样:
注意:如果您仍然遇到问题,请转到您的 Bot 上的频道并检查您是否收到任何此类错误。 在这种情况下,请检查您的 Azure Active Directory app Id
,并且app secret
是正确的。
此外,如果您需要官方 QNA 示例,您可以从此处下载。
为了让你开始,你也可以尝试这种方法:
完成这些步骤后,您将拥有一个在 Azure 上运行的工作聊天机器人。 之后你可以下载源代码并添加你需要的东西。
备注:Web 应用程序机器人已正式弃用,但此快捷方式仍然有效。 并且将支持现有的网络应用程序机器人。
我已经通读了这里所说的大部分内容,我可以看出它有点令人困惑,所以让我提出一个让基本机器人工作的替代途径。
appsettings.json
中,填写您的 QnA 详细信息(我假设您已经准备好基本的 QnA 知识库。如果没有,请按照QnA 快速入门创建一个)appsettings.json
文件部署文档最近已更新,因此如果您仔细阅读并遵循概述的说明,您应该有一个可以构建的工作机器人。 如果您完全按照这些步骤操作,然后在按照这些步骤操作时遇到问题,将更容易确定到底是哪里出了问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.