我正在开发一个机器人,目前通过调度工具将 1 KB 映射到 LUIS 中的一个 Intent。我按照这篇文章创建了调度。
我想在同一个 QnA 服务中创建更多知识库,并通过创建调度文件将它们映射到多个意图。我关注的 Microsoft 文章使用Caseswitch 语句来确定多个意图。这对我来说似乎非常依赖代码。
问题是:如果我通过调度文件创建多个意图和知识库,是否有办法摆脱这些 case switch 语句?或者我必须为每个知识库创建多个 case switch 语句,以便机器人映射到正确的知识库?
我有以下代码:
private async Task DispatchToTopIntentAsync(ITurnContext<IMessageActivity>
turnContext, string intent, RecognizerResult recognizerResult,
CancellationToken cancellationToken)
{
switch (intent)
{
case "l_HomeAutomation":
await ProcessHomeAutomationAsync(turnContext,
recognizerResult.Properties["luisResult"] as LuisResult,
cancellationToken);
break;
case "l_Weather":
await ProcessWeatherAsync(turnContext, recognizerResult.Properties["luisResult"] as LuisResult, cancellationToken);
break;
//case "q_sample-qna":
case "q_CivicSampleFAQ":
await ProcessSampleQnAAsync(turnContext, cancellationToken);
break;
default:
_logger.LogInformation($"Dispatch unrecognized intent: {intent}.");
// await turnContext.SendActivityAsync(MessageFactory.Text($"Dispatch unrecognized intent: {intent}."), cancellationToken);
break;
}
}
基本上情况q_CivicSampleFAQ决定处理的意图应该得到 QnA Maker KB 的回复。如果我有多个 KB,我可以创建多个案例,但这会限制我每次拥有新 KB 时或即使旧 KB 的名称发生更改时也必须更改代码。有什么想法如何绕过这个吗?
翻阅古今
相关分类