QnAMakerDialog - 使用元数据

时间:2018-05-17 08:17:03

标签: c# botframework qnamaker

使用qnamaker 4.0 api(我认为甚至是3.0)你可以向api发送元数据并使用它来提高包含元数据标签的答案的分数。我在使用C#SDK中的private async Task RepeatableMethod(CancellationToken cancellationToken) { try { //some logic } catch (Exception e) { } finally { await Task.Delay(TimeSpan.FromSeconds(2), cancellationToken) .ContinueWith(_ => RepeatableMethod(cancellationToken),cancellationToken); } } 时遇到了问题。是否有一种简单的方法可以执行此操作,还是需要创建自己的服务/对话框来实现此功能?

另外,与此相关,是否无法在QnAMakerDialog之前获取消息?就像重写QnAMakerDialog一样(你不能这样做,因为它不是虚拟的 - 至少不是我使用的版本,Bot.Builder.CognitiveServices 1.1.7)

1 个答案:

答案 0 :(得分:1)

根据您使用Nuget包async function readValuesFromDB(codes) { console.log('trying to read values from DB'); let dbPromises = []; for(let code in codes) { let refId = 'some_random_reference_id_generated_from_codes[i]'; dbPromises.push(MyDb.getPromise(refId)); // getPromise() returns a promise that reads from DB } console.log('waiting for all promises to resolve...'); // waiting for all promises to finish let allPromises = await Promise.all(dbPromises); for(let i in allPromises) { console.log('OK..read from DB'); } console.log('all promises resolved'); allPromises = ['a', 'b', 'c']; // Dumb values for example return allPromises; } console.log('calling readValuesFromDB()'); readValuesFromDB().then(response => { console.log('finished readValuesFromDB()'); console.log(response) });的事实,可用here

我查看了当前的源代码(它是在Github上开源的,here),正如您可以看到here,这个软件包(至少现在是1.1.7版本)是使用QnAMaker API v2:

Microsoft.Bot.Builder.CognitiveServices

因此,您将无法获得QnAMaker API v3中引入的元数据的好处