カスタム例

属性は、宣言するEnum型に以下のような感じでくっつけます。

        [Prompt("ハンバーガーを選んでください")]
        public Burger? ハンバーガー;

すると以下のような感じになります

image

これだと選択肢が出てこないので属性のテキストを少しカスタマイズします。

        [Prompt("ハンバーガーを選んでください{||}")]
        public Burger? ハンバーガー;

このように{||}を付けると以下のようになります。

image

こういったカスタムテキストもいくつか用意されているのでまた別の機会にまとめます。

属性の種類と内容

Describe

基本的にFormFlowでPlease ~ と出てくる文章は、宣言しているEnumプロパティの名前が表示されますが、その名前を明示的に指定したい場合はこの属性を付与します。

以下のような感じになります。

        [Describe("種類")]
        [Template(TemplateUsage.NotUnderstood, "ちょっと何言ってるかわかんね{||}")]
        [Optional]
        public Burger? ハンバーガー;

image

Numeric

入力できる数字の範囲を絞るための属性です。

以下のような感じで、評価を数値で入力したいといった場面で使えるかと思います。

image

Optional

属性を付与したプロパティに対して、選択しないという選択肢(オプション扱い)を付ける属性になります。

以下のような感じで、選択肢にNo Preferenceの項目が追加されます。

image

Prompt

表示するテキストを差し替える属性になります。

一番最初のカスタム例で使われている属性です。

Describe属性は、プロパティ名のみに左右するのに対して、この属性では表示する文章事態を差し替える動きをします。

また、選択肢のフォーマットのカスタマイズまで可能です。

ChoiceFormatを以下のように指定すると選択肢の表示が変化します。

        [Prompt("ハンバーガーを選んでください{||}", ChoiceFormat ="{1}")]
        [Template(TemplateUsage.NotUnderstood, "ちょっと何言ってるかわかんね{||}")]
        [Optional]
        public Burger? ハンバーガー;

image

Template

ユーザからの入力に対しての返答を細かく定義する属性です。

以下のような使い方です。今回は、入力内容がエラーだった場合の使い方です。

        [Prompt("ハンバーガーを選んでください{||}")]
        [Template(TemplateUsage.NotUnderstood, "ちょっと何言ってるかわかんね{||}")]
        [Optional]
        public Burger? ハンバーガー;

出力内容は、以下のようになります。

image

Terms

これは、Enum要素に付与する属性になります。

以下のような感じで使います。

    public enum Burger
    {
        [Terms("バーガー", "ハンバーガー", "普通の")]
        ハンバーガー,
        チーズバーガー,
        テリヤキバーガー,
        チキンバーガー
    };

すると、以下のように別名でも入力を受け付けてくれるようになります。

image

まとめ

これらを使用すれば、よりそれっぽいBotになるはずです。

これ以外にもいろいろとカスタマイズできることがあるのでそれについてもおいおいまとめていきます。

CATEGORIES