Voiceflowのアップデート、第3回は前回の続きで「Choice Block」の新しい機能「ダイアログモデル」についてご紹介します。
その前に、ダイアログモデルとはなんぞや?という方もおられると思うので、簡単に説明します。
ダイアログモデルとは?
Alexa道場の動画が一番わかり易いかと思いますのでぜひご覧ください。
「複数」のスロットを取得しないといけない場合、普通にやろうと思うと、
- それぞれのスロットを受け取るためのインテントを用意する。
- 必要なスロットが全部揃ったかどうかをチェックして、足りなければユーザに促す
みたいなことを全部自分で実装する必要があるのですが、ダイアログモデルを使うと、必要なスロットや発話を予め定義しておけば、Alexaがスロットが全部揃うようによしなにやってくれます。スロットが一つだけならそこまで必要性はないですが、例えば、旅行の予約スキルとかの場合だと、
- 出発日
- 帰宅日
- 場所
- 人数
などなど、必要な情報がたくさんあるので、これをなるべくかんたんにしようというものです。
百聞は一見にしかず、実際にやってみましょう。
ダイアログモデルの設定
前回の「コーヒーショップ」スキルの続きです。Alexa道場でもコーヒーショップスキルになっていますが、それよりも簡易にしてあります。
注文を受けるインテント、order_intentはこんな感じで、単に飲み物名だけをスロットとして受け取る感じになっていました。
飲み物名のスロット、slot_drinkはこんな感じ。
今回はこれに「数」を追加してダイアログモデルを使って取得するようにしましょう。以下のようなサンプル発話を入力します。
{slot_drink} を slot_amount つください
slot_amountをスロットにしますので、カーソルで選択、"Create"をクリックします。
スロット作成画面が表示されます。数なのでスロットタイプは”Number"を選択して、"Create"します。
元の画面に戻ってきたら、ENTERキーを押してサンプル発話を登録します。
サンプル発話が登録されるとともに、下のSlotのところにも表示されていますね。ここまでは前回と同じです。
ではこれをダイアログモデルで使えるようにします。下のSlotの slot_amount のところをどこでもいいのでクリックします。
画面が変わりました。ここでスロットを「必須化」することでダイアログモデルを有効にします。右のスイッチをクリックしてください。
スロットが「必須化(is required)」されました。次に下のSlot Promptsに、このスロットがない場合にAlexaに話させる内容を入力します。この例だと、数が指定されていないので数を聞くための発話になります。
Response Utterancesをクリックします。ここでは上のSlot Promptsに対して予想されるユーザのサンプル発話を入力します。
Slot Confirmationはそれに対する確認(よろしいですか?はい/いいえ)を有効にするかどうかです。せっかくなのでONにして、Alexaが話す確認メッセージを入力します。
最後に、Speak Blockのメッセージを少し変更して、数も話させるようにします。
ではテストです。
数量を指定せずに注文を言うと、Alexaが数量を聞いてきます。数量を答えると、確認を行われた後、最後のメッセージが発話されます。
数量も指定して注文を行うと、数量を聞く部分は省略されて、確認だけが行われて最後のメッセージが発話されます。
実際には、飲み物の方も必須にしないといけないでしょうし、確認はちょっとうざい感じもしますのでオフにしたほうがいいと思います。修正すべきところは多々あるかと思いますが、今回はサンプルなのでご了承ください。
いかがでしょうか?これを自分で実装しようとするとフローも作らないといけないのでけっこう大変なんですが、Choice Blockの設定だけで比較的簡単にできるということがおわかりいただけたかと思います。ぜひご活用ください。
次回はおまけ的にその他の変更点をまとめたいと思います。