当我使用Describe属性时,机器人不理解该值

问题描述 投票:1回答:2

我正在使用示例“SandwichOrder”代码。当我使用属性“描述”来更改项目值时,机器人不理解设置的值。

public enum LengthOptions
{
    [Describe("Test 1")]
    SixInch = 1,

    [Describe("Test 2")]
    FootLong = 2
};

这是输出:

enter image description here

azure bots botframework formflow
2个回答
1
投票

这是FormFlow在用户选择后如何处理反馈的问题,结果实际上是LengthOptions的类型。由于我们无法修改BotBuilder SDK的源代码,以下是解决此问题的解决方法:我们尝试覆盖FormFlow中此项的反馈,这是构建FormDialog时的代码:

...
.Field(nameof(Length),
    validate: async (state, response) =>
     {
         var result = new ValidateResult { IsValid = true, Value = response };
         var value = (LengthOptions)response;
         result.Feedback = "Your selection means " + value;
         return result;
     })
...

上面代码中的Length属性可以这样定义:

public enum LengthOptions
{
    [Describe("Test 1")]
    SixInch = 1,

    [Describe("Test 2")]
    FootLong = 2
};

public LengthOptions? Length { get; set; }

这是测试结果:

enter image description here


0
投票

@Grace Feng提到的是一种方法。另一种更简单的方法是将Terms装饰添加到LengthOptions每个项目。

所以代码是:

public enum LengthOptions
    {
        [Terms(new string[] { "Test 1" })]
        [Describe("Test 1")]
        SixInch = 1,

        [Terms(new string[] { "Test 2" })]
        [Describe("Test 2")]
        FootLong = 2
    };

现在你的机器人会自动将“Test 1”的值理解为SixInch,将“Test 2”的值理解为FootLong

© www.soinside.com 2019 - 2024. All rights reserved.