ごきげんよう
この記事は
「するめごはんのVUI・スマートスピーカー Advent Calendar 2018」
の9日目の記事です。
みなさん、SearchQuery使ってますか?
これを使うとユーザーから何かしら話しかけられ、他のIntentに分類できなかった場合、
このSearchQueryが実装されているIntentに割り振られます。
つまり、自由な単語・発話をSearchQueryに対応させたいという発想になりますが、ビルドが通らない場合あります。
今回はそれを 無理やり通す 方法について記載します。
もちろん、各自の自己責任にて。
#一般的?の実装方法
SearchQueryはこの「なんでも該当」という強さから、一般的に他の単語と組み合わせて実装します。
例えば以下のように。
●●●と、サーチクエリ と話しかけれた際の●●の部分に用います。
#ビルドに通らない場合
ただ、上記のような、「●●とサーチクエリ」のようにやりたくはなく、SearchQueryのみで実装したい場合、ビルドが通らない場合があります。
エラーメッセージは
Sample utterance "{searchQuerySlot} " in intent "SearchQueryIntent" must include a carrier phrase. Sample intent utterances with phrase types cannot consist of only slots.エラーコード: MissingCarrierPhraseWithPhraseSlot
自由度が高すぎて制御されているのではないかと考えています。
なので通常は他の具体的な話しかけ方と組みあわせて使うべきなのでしょう。
#それでもビルドしたい場合
他のフレーズは一切いれず、何がなんでもSearchQueryのみ実装して、想定していないユーザーの発話はすべてここに集約したいという場合も存在します。
その場合、以下のようにするとビルドに通ります。
さて、どうやったでしょうか。
答えは 半角スペース + SearchQuery です。
こうすると他のIntentやSlotに割り振られない場合、このように作成したSearchQueryに無理やり分類させることができます。
#ご利用は自己責任で
おそらくこれは、不具合に近いバグのような気がします。
仕様といえば仕様なのでしょうが。。。
ともあれ、ユーザーかどのように話しかけられたのかを丸々取得したい等の場合は、このような技で切り抜けることが一応できます。
実際には他のフレーズを組み合わせるべきだとは思いますが、このようなやり方も可能ではあるということを記載してみました。
本日は以上です。