【发布时间】:2019-08-05 23:01:51
【问题描述】:
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
//I have code here that works fine.
}
第二种方法
public QnABot(IConfiguration configuration, ILogger<QnABot> logger, IHttpClientFactory httpClientFactory)
{
_configuration = configuration;
_logger = logger;
_httpClientFactory = httpClientFactory;
}
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var httpClient = _httpClientFactory.CreateClient();
var qnaMaker = new QnAMaker(new QnAMakerEndpoint
{
KnowledgeBaseId = _configuration["QnAKnowledgebaseId"],
EndpointKey = _configuration["QnAAuthKey"],
Host = GetHostname()
},
null,
httpClient);
_logger.LogInformation("Calling QnA Maker");
// The actual call to the QnA Maker service.
var response = await qnaMaker.GetAnswersAsync(turnContext);
if (response != null && response.Length > 0)
{
await turnContext.SendActivityAsync(MessageFactory.Text(response[0].Answer), cancellationToken);
}
else
{
await turnContext.SendActivityAsync(MessageFactory.Text("No QnA Maker answers were found."), cancellationToken);
}
}
错误:“Type QnABot”已经定义了一个名为“OnMessageActivityAsync”且参数类型相同的成员。
我使用 HTTP 客户端在我的机器人中使用了第三方 API。现在,我想将 QnA 制造商添加到我的机器人中。 问题是我只希望用户在需要时使用 API,而 QnA 制造商出于不同的原因。 基本上,QnA 制造商拥有我们在我公司使用的特定应用程序的信息。 然而,API 知识库回答了自然语言问题,例如“如何在我的 iPhone 上安装 Outlook?”因此,用户可以选择是否需要来自 QnA 制造商的特定应用程序信息或询问“如何”来自 API 的问题。
我也已经制作了一个 QnA 机器人。我有 QnA 制造商的代码,现在我试图同时实现我的 web api 代码和 qna 制造商代码。我已使用 API 中的逻辑将其与我的 QnAbot.cs 文件一起使用,但我收到此 OnMessageActivityAsync 错误。显然是因为我有两个,而程序不知道何时访问哪个方法。那么如何区分这两种方法呢?
出现“OnMessageActivityAsync”错误,因为我有两种方法,但我不知道如何区分这两种方法。我需要机器人能够查询 API 或 QnA 制造商,而不是一起查询。This is my first OnMessageActivityAsync second on messageactivity which gives me an error
【问题讨论】:
-
您只给了我们编译器有问题的函数/部分 hte 代码。您实际上并没有告诉我们错误消息是什么。
标签: c# rest botframework azure-bot-service qnamaker