読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Bot Frameworkでenumの選択肢を日本語にしたい

Bot Framework

デフォルト英語フレンドりーなのでEnumの選択肢はEnumの値がそのまま出てきます。

Formを定義するときに以下のようにFieldReflectorを使うと、日本語で表示させることができます。

return new FormBuilder<Order>()
    .Message("注文をお伺いします")
    .Field(new FieldReflector<Order>(nameof(Order.Drink))
        .SetDefine((state, field) =>
        {
            field.AddDescription(Size.S, "Sサイズ");
            field.AddDescription(Size.M, "Mサイズ");
            field.AddDescription(Size.L, "Lサイズ");
            return Task.FromResult(true);
        }))
    .Build();

OrderSizeの定義は以下のような感じ。

using Microsoft.Bot.Builder.FormFlow;
using System;

namespace FormDialogSample.Models
{
    public enum Size
    {
        S = 1, M, L
    }

    [Serializable]
    public class Order
    {
        [Prompt("飲み物のサイズは何にしますか?{||}")]
        public Size Drink { get; set; }
    }
}