Dialog には、必要な情報が得られるまで自動で何度も聞き返してくれるスロット・フィリング機能がありますが、Actions に関しては、マニュアルやチュートリアルを見ても、スロットという用語さえ出てきません。スロット・フィリング機能は提供されていないのでしょうか?
スロット・フィリング機能がない場合、不足情報を判定し、聞き返す処理を組み込まなくてはいけなくなります。
意味深な記述
オンライン・マニュアルのステップをスキップするか、常にステップを要求するか、ステップを要求しないを読んでいたら、こんな記述を見つけました。
『顧客応答は特定のステップに関連付けられていますが、アシスタントはアクション実行中に任意の時点で必要な情報を認識できます。 デフォルトでは、ステップの値がユーザー入力で既に指定されている場合、そのステップはスキップされるように設定されます。 』
どうも、これがスロット・フィリング機能に相当していそうです。
それともう 1 つ、こんな記述もあります。
『ステップの後に値が指定された場合は、ステップ自体で指定された値が新しい値に置き換えられます。』
Dialog もサポートしていますが、Actions でも、一度埋まったスロットを言い直しで変更できそうです。
早速、試してみます。
スロット・フィリング相当機能の確認
Preview のデバッグ機能を使いながら確認してみます。
「マルゲリータのピザを注文」と入力してみます。
ピザの種類の聞き返しをスキップし、サイズを聞いています!
「マルゲリータでMサイズのピザを注文」と入力してみます。
ピザの種類とサイズの聞き返しをスキップし、配達時刻を聞いています!
「マルゲリータでMサイズで15時でピザを注文」と入力してみます。
ピザの種類、サイズ、配達時刻の聞き返しをスキップし、一気に注文内容の確認に飛びました!
Actions ではスロット・フィリングの定義を意識させずとも自動的にスロット・フィリング機能が働く事がわかりました。
Actions は Dialog に比べて、少ないステップで対話フローを構成できるように設計されていますが、スロット・フィリング機能をこんな自然な形で実装しています。
さらに、Actions では、常に確認する(誤認識の回避) と 確認しない(冗長的な質問をスキップ) の追加オプションの設定が可能です。詳しくはオンライン・マニュアを参照ください。
オンライ・マニュアル: 顧客から情報を収集
一度埋まったスロットを言い直しで変更
「マルゲリータでMサイズで15時でピザを注文」と入力すれば、一気に注文内容の確認に飛びました。
ここで「やっぱりシーフード」と入力してみます。
上の方のステップで確認した内容がちゃんと変更されました。
ステップの構成(条件)や順番に手を加える事なく、言い直しを受け付けてくれるのはとっても便利ですね。
いかがでしたでしょうか
Actions にもちゃんとスロット・フィリングに相当する機能がありました。
従来の Dialog スキルに慣れた人にとっては、気が付きにくかったのかもしれませんが、わかってしまえば、この仕掛けは対話フローの作成を楽にしてくれると感じました。
参考
公式オンライン・マニュアル: ステップをスキップするか、常にステップを要求するか、ステップを要求しない
公式オンライン・マニュアル: 常に確認する
公式オンライン・マニュアル: 確認しない