Bot (V4) показывает противоречивые результаты в diff канале для базового выбора. - PullRequest
0 голосов
/ 01 ноября 2018

Я получаю противоречивый результат для запроса основного выбора в боте, использующем V4 на другом канале. Также, когда я ввожу недопустимые параметры, он иногда добавляет список параметров в некоторый канал. не уверен, что я делаю не так.

например в эмуляторе это показывает, как это прекрасно, большую часть времени

например, когда я публикуюсь в лазурном боте веб-приложения, при тестировании в веб-чате. это не показывает выбор в полях, но показывает как список предложений, а также добавляет список опций после того, как я введу неправильную опцию. см. В портале веб-чат

например, в Microsoft Teams, он не показывает выбор в полях, но отображается как список предложений, а также добавляет список параметров после того, как я ввел неправильную опцию. см. Здесь в Microsoft Teams

Мой код похож на ниже

    public MytestBotRootDialog()
        : base(nameof(PowerBICSSRootDialog))
    {
        this.rootChoices = new List<Choice>();
        this.rootChoices.Add(new Choice { Value = "Service"});
        this.rootChoices.Add(new Choice { Value = "Desktop"});
        this.rootChoices.Add(new Choice { Value = "Other"});

        var waterfallSteps = new WaterfallStep[]
        {
            PromptForRootChoicesAsync,
            RouteToSpecificDialogAsync,
            RepeatRootChoiceAsync
        };
        AddDialog(new WaterfallDialog(rootdialog, waterfallSteps));
        AddDialog(new ChoicePrompt(rootchoicesprompt));
        AddDialog(new ContentPackRootDialog());
    }

    private async Task<DialogTurnResult> PromptForRootChoicesAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
    {
        var opts = new PromptOptions
        {
            Prompt = MessageFactory.Text("Select the Area"),
            Choices = rootChoices,
            RetryPrompt = MessageFactory.Text("Please enter valid Area"),
        };

        return await stepContext.PromptAsync(rootchoicesprompt, opts, cancellationToken);
    }

    private async Task<DialogTurnResult> RouteToSpecificDialogAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
    {
        var selectedchoice = stepContext.Result as FoundChoice;
        var result = selectedchoice.Value.ToLowerInvariant();
        if (selectedchoice.Index == 0 || result.Contains("service"))
        {
            var context = stepContext.Context;
            await context.SendActivityAsync($"You Selected Service");
            return await stepContext.NextAsync();
        }
        else if (selectedchoice.Index == 1 || result.Contains("desktop"))
        {
            var context = stepContext.Context;
            await context.SendActivityAsync($"You Selected Dekstop");
            return await stepContext.NextAsync();
        }
        else if (selectedchoice.Index == 2 || result.Contains("other"))
        {
            return await stepContext.BeginDialogAsync(nameof(ContentPackRootDialog));
        }
        else
            return await stepContext.NextAsync();
    }
    private async Task<DialogTurnResult> RepeatRootChoiceAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
    {
        return await stepContext.ReplaceDialogAsync(rootdialog, null, cancellationToken);
    }
...