1

ボット フレームワークのアダプティブ ダイアログを使用しています。認識エンジンを使用して luis データを読み取って、インテントと解決されたエンティティを取得する際に問題があります。子アダプティブ ダイアログで「turn.recognized」を読み取ることによって、応答で最高得点のインテントのみを取得します。luis を v3 に移行し、luis の呼び出し中に IncludeAllIntents プロパティを true に設定しました。LuisAdaptiveRecognizer のプロパティを設定し忘れましたか? ボットで2番目に高いスコアリングの意図を確認するシナリオがあるため、誰かがこれを解決するのを手伝ってくれますか? これはアダプティブ ダイアログの問題ですか?

Ms docs を使用して、ボットの適応ダイアログを作成しました。

そしてもう 1 つ、luis によって解決されたエンティティを、turn.recognized の結果から RecognizerResult の型として抽出する方法はありますか。

ルート ダイアログ:

var rootDialog = new AdaptiveDialog(nameof(AdaptiveDialog))
{
    Recognizer = new LuisAdaptiveRecognizer()
    {
        ApplicationId = Configuration["LuisAppId"],
        EndpointKey = Configuration["LuisAPIKey"],
        Endpoint = Configuration["LuisAPIHostName"],
        PredictionOptions = new Microsoft.Bot.Builder.AI.LuisV3.LuisPredictionOptions
        {
            IncludeAllIntents = true,
            IncludeInstanceData = true,
            IncludeAPIResults = true,
            PreferExternalEntities = true,
            Slot = "producton"
        }
    },
    Triggers = new List<OnCondition>()
    {
         new OnIntent("Greetings")
        {
            Actions = new List<Dialog>()
            {
                new SendActivity("${HelpRootDialog()}")
            }
        },
    },

子ダイアログ:

public FindLinks(IConfiguration configuration) : base(nameof(FindLinks))
{
    _configuration = configuration;
    this.LinksDialog = new AdaptiveDialog(nameof(FindLinks))
    {
        Triggers = new List<OnCondition>()
        {
            new OnBeginDialog()
            {
                Actions = new List<Dialog>()
                    {
                        new CodeAction(ResolveAndSendAnswer)
                    }
            },
        }
    };

    AddDialog(this._findLinksDialog);
    InitialDialogId = nameof(FindLinks);
}

private async Task<DialogTurnResult> ResolveAndSendAnswer(DialogContext dialogContext, System.Object options)
{
    JObject jObject;
    IList<string> queries = new List<string>();
    dialogContext.State.TryGetValue("turn.recognized", out jObject);

    ....This is how i resolved the luis data from the turn.
}
4

1 に答える 1