kun432's blog

技術ネタ、読書記録、など。2015年から人生をやり直し中です。

Voiceflowのアップデートご紹介 ③ ダイアログモデル

Voiceflowのアップデート、第3回は前回の続きで「Choice Block」の新しい機能「ダイアログモデル」についてご紹介します。

その前に、ダイアログモデルとはなんぞや?という方もおられると思うので、簡単に説明します。

ダイアログモデルとは?

Alexa道場の動画が一番わかり易いかと思いますのでぜひご覧ください。

「複数」のスロットを取得しないといけない場合、普通にやろうと思うと、

  • それぞれのスロットを受け取るためのインテントを用意する。
  • 必要なスロットが全部揃ったかどうかをチェックして、足りなければユーザに促す

みたいなことを全部自分で実装する必要があるのですが、ダイアログモデルを使うと、必要なスロットや発話を予め定義しておけば、Alexaがスロットが全部揃うようによしなにやってくれます。スロットが一つだけならそこまで必要性はないですが、例えば、旅行の予約スキルとかの場合だと、

  • 出発日
  • 帰宅日
  • 場所
  • 人数

などなど、必要な情報がたくさんあるので、これをなるべくかんたんにしようというものです。

百聞は一見にしかず、実際にやってみましょう。

ダイアログモデルの設定

前回の「コーヒーショップ」スキルの続きです。Alexa道場でもコーヒーショップスキルになっていますが、それよりも簡易にしてあります。

f:id:kun432:20200211160940p:plain

注文を受けるインテント、order_intentはこんな感じで、単に飲み物名だけをスロットとして受け取る感じになっていました。

f:id:kun432:20200211164924p:plain

飲み物名のスロット、slot_drinkはこんな感じ。

f:id:kun432:20200211164935p:plain

今回はこれに「数」を追加してダイアログモデルを使って取得するようにしましょう。以下のようなサンプル発話を入力します。

{slot_drink} を slot_amount つください

f:id:kun432:20200211164732p:plain

slot_amountをスロットにしますので、カーソルで選択、"Create"をクリックします。

f:id:kun432:20200211164743p:plain

スロット作成画面が表示されます。数なのでスロットタイプは”Number"を選択して、"Create"します。

f:id:kun432:20200211165021p:plain

元の画面に戻ってきたら、ENTERキーを押してサンプル発話を登録します。

f:id:kun432:20200211165115p:plain

サンプル発話が登録されるとともに、下のSlotのところにも表示されていますね。ここまでは前回と同じです。

f:id:kun432:20200211165158p:plain

ではこれをダイアログモデルで使えるようにします。下のSlotの slot_amount のところをどこでもいいのでクリックします。

f:id:kun432:20200211165250p:plain

画面が変わりました。ここでスロットを「必須化」することでダイアログモデルを有効にします。右のスイッチをクリックしてください。

f:id:kun432:20200211165354p:plain

スロットが「必須化(is required)」されました。次に下のSlot Promptsに、このスロットがない場合にAlexaに話させる内容を入力します。この例だと、数が指定されていないので数を聞くための発話になります。

f:id:kun432:20200211165445p:plain

Response Utterancesをクリックします。ここでは上のSlot Promptsに対して予想されるユーザのサンプル発話を入力します。

f:id:kun432:20200211165554p:plain

Slot Confirmationはそれに対する確認(よろしいですか?はい/いいえ)を有効にするかどうかです。せっかくなのでONにして、Alexaが話す確認メッセージを入力します。

f:id:kun432:20200211165756p:plain

最後に、Speak Blockのメッセージを少し変更して、数も話させるようにします。

f:id:kun432:20200211165846p:plain ではテストです。

数量を指定せずに注文を言うと、Alexaが数量を聞いてきます。数量を答えると、確認を行われた後、最後のメッセージが発話されます。

f:id:kun432:20200211163820p:plain

数量も指定して注文を行うと、数量を聞く部分は省略されて、確認だけが行われて最後のメッセージが発話されます。

f:id:kun432:20200211163835p:plain

実際には、飲み物の方も必須にしないといけないでしょうし、確認はちょっとうざい感じもしますのでオフにしたほうがいいと思います。修正すべきところは多々あるかと思いますが、今回はサンプルなのでご了承ください。


いかがでしょうか?これを自分で実装しようとするとフローも作らないといけないのでけっこう大変なんですが、Choice Blockの設定だけで比較的簡単にできるということがおわかりいただけたかと思います。ぜひご活用ください。

次回はおまけ的にその他の変更点をまとめたいと思います。