#もう少し丁寧なコミュニケーションを行う "〇ブウェイ 注文受付 BOT" (改良版)
前回は、選択肢による質問(複数)を行う定型プロセス ("〇ブウェイ注文受付 BOT"とします) の一番単純な形を FormFlow クラスで作成しました。今回は、FormFlow の基本機能を使って、もう少し丁寧な応答を行う BOT に作りこみます。
Microsoft Bot Framework v3.0 からはじめる BOT 開発: 〇ブウェイがBOTで注文を受付したら - FormFlow(1)
##下準備
FormFlow を使った、定型リスト質問を行う BOT 動作の開発 で作成した SandwichBot (〇ブウェイ注文受付 BOT) をベースとして改良していきます。
##選択を聞くメッセージの変更
"~を選択してください" という文言は、Bot Frameworkで用意されている標準メッセージです。これをもう少し注文に合うメッセージに変更します。
該当する質問項目の上に Prompt を用いてメッセージを入力しておくだけです。{?} には項目名、{||} は選択肢が入ります。
[Serializable]
public class SandwichOrder
{
[Prompt("{&}をひとつお選びください{||}")]
public SandwichOptions? サンドイッチの種類;
:
[Prompt("{&}(複数選択もOK)をお選びください{||}")]
public List<ToppingsOptions> 追加するオプション;
:
または TemplateAttibute を用いてメッセージを入力します。上記と出力結果は同じです。
[Serializable]
public class SandwichOrder
{
[Template(TemplateUsage.EnumSelectOne, "{&}をひとつお選びください{||}")]
public SandwichOptions? サンドイッチの種類;
:
[Template(TemplateUsage.EnumSelectMany, "{&}(複数選択もOK)をお選びください{||}")]
public List<ToppingsOptions> 追加するオプション;
:
##確認ダイアログの追加
IFormBuilder.Message でメッセージを出力し、IFormBuilder.Field を用いて1項目ずつ出力します。IFormBuilder.Confirm を使うと選択内容の確認(と再選択)のダイアログを追加できます。
[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)
確認ダイアログで [いいえ] を選択すると、変更したい項目を選択して変更できます。
#[参考]サンプルアプリを公開しました
ここまでの手順で作成したアプリを サンプルとして公開しました(GitHub)。