10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Microsoft Bot Framework v3.0 からはじめる BOT 開発: 〇ブウェイ 注文受付 BOT をもっと丁寧に - FormFlow(2)

Last updated at Posted at 2016-08-17

#もう少し丁寧なコミュニケーションを行う "〇ブウェイ 注文受付 BOT" (改良版)
前回は、選択肢による質問(複数)を行う定型プロセス ("〇ブウェイ注文受付 BOT"とします) の一番単純な形を FormFlow クラスで作成しました。今回は、FormFlow の基本機能を使って、もう少し丁寧な応答を行う BOT に作りこみます。

Microsoft Bot Framework v3.0 からはじめる BOT 開発: 〇ブウェイがBOTで注文を受付したら - FormFlow(1)

##下準備
FormFlow を使った、定型リスト質問を行う BOT 動作の開発 で作成した SandwichBot (〇ブウェイ注文受付 BOT) をベースとして改良していきます。

SandwichBot (〇ブウェイ注文受付 BOT) の単純形

##選択を聞くメッセージの変更
"~を選択してください" という文言は、Bot Frameworkで用意されている標準メッセージです。これをもう少し注文に合うメッセージに変更します。
該当する質問項目の上に Prompt を用いてメッセージを入力しておくだけです。{?} には項目名、{||} は選択肢が入ります。

MessagesController.cs
[Serializable]
public class SandwichOrder
{
    [Prompt("{&}をひとつお選びください{||}")]
    public SandwichOptions? サンドイッチの種類;
    :
    [Prompt("{&}(複数選択もOK)をお選びください{||}")]
    public List<ToppingsOptions> 追加するオプション;
    :

または TemplateAttibute を用いてメッセージを入力します。上記と出力結果は同じです。

MessagesController.cs
[Serializable]
public class SandwichOrder
{
    [Template(TemplateUsage.EnumSelectOne, "{&}をひとつお選びください{||}")]
    public SandwichOptions? サンドイッチの種類;
    :
    [Template(TemplateUsage.EnumSelectMany, "{&}(複数選択もOK)をお選びください{||}")]
    public List<ToppingsOptions> 追加するオプション;
    :

##確認ダイアログの追加
IFormBuilder.Message でメッセージを出力し、IFormBuilder.Field を用いて1項目ずつ出力します。IFormBuilder.Confirm を使うと選択内容の確認(と再選択)のダイアログを追加できます。

MessagesController.cs
[Serializable]
public class SandwichOrder
{
    :
    public static IForm<SandwichOrder> BuildForm()
    {
        return new FormBuilder<SandwichOrder>()
            //.Message("こんにちは! 野菜の○ブウェイです。ご注文をどうぞ!")
            //.Build();

            .Message("こんにちは! 野菜の○ブウェイです。ご注文を承ります!")
            .Field(nameof(サンドイッチの種類))
            .Field(nameof(サイズ))
            .Field(nameof(パンの種類))
            .Field(nameof(追加するオプション))
            .Field(nameof(抜きたい野菜))
            .Field(nameof(増やしたい野菜))
            .Field(nameof(ソース))
            .Confirm("注文はこちらでよろしいでしょうか? (宜しければ 1:はい, 変更する場合は 2:いいえ を送信してください) ----- {サンドイッチの種類}、{サイズ}サイズ&{パンの種類} (追加オプション:{追加するオプション}、野菜抜き:{抜きたい野菜}、野菜増量:{増やしたい野菜}、{ソース}ソース)")
            .Message("ご注文完了です。")
            .Build();
    }
}

##Emulator による動作確認
以上の内容で動作確認を行います。

Bot Framework Channel Emulator による動作確認方法はこちらをご覧ください。
Microsoft Bot Framework v3.0 からはじめる BOT 開発: Botアプリケーションのローカル実行とエミュレーターによるアクセス

7つの質問項目が提示され、それに回答していくフローは 前回 と同じです。

今回は、確認ダイアログが表示されるので、選択した内容で確定する場合は「はい」を、再選択する場合は「いいえ」を入力します。(Locale:ja-jp の場合)

ダイアログや Locale についてはこちらをご確認ください。
Microsoft Bot Framework v3.0 からはじめる BOT 開発: Yes/No ダイアログを表示する - Dialog(2)

IFormBuilder.Confirm による確認ダイアログ

確認ダイアログで [いいえ] を選択すると、変更したい項目を選択して変更できます。
IFormBuilder.Confirm による確認ダイアログ(いいえを選択した場合)

#[参考]サンプルアプリを公開しました
ここまでの手順で作成したアプリを サンプルとして公開しました(GitHub)

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?