Dialogflowでは、Developer entitiesというentitiesの複合体を作る事ができます。
このDeveloper entitiesは優先順位を持てますので、非常に便利です。
その利便性について例を持ってご紹介します。
つまりこういう事
ここは異世界のNippon。
TOKYO都 TOKYO市 TOKYO町にTOKYO駅
があったとします。
そして、
SHIBUYA都 SHIBUYA市 SHIBUYA町
には駅がありませんでした。
そんな異世界のNipponには、VUIでユーザーに遊べる場所を提案できるアプリが流行っていました。
アプリ「どこで遊びますか?」
ユーザ「TOKYO」
アプリ「...TOKYO都ですか?TOKYO市ですか?TOKYO町ですか?TOKYO駅ですか?」
ユーザ「消えろぶっとばされんうちにな」
こうならないように、アプリ側で予め優先順位を決めておきましょう。
その際Developer entitiesが便利なのです。
Developer entitiesの作り方
まずはEntitiesを登録する




ここのポイントとしては、 駅も町も市も都もすべてTOKYO、SHIBUYAと呼ばれることがある
です。地名はだいたいそんなもんです。
EntitiesをDeveloper entitiesに登録する



Developer entitiesをIntentsに登録する

こんな感じで、先程作ったDeveloper entities(place)をIntentsに登録しましょう。
これで完成です。
使ってみる
さっそく使ってみましょう。
TOKYOと言った場合には駅として認識されています。
SHIBUYAと言った場合には町になりました。
想定通りの動きです。
あとは受け取った先のプログラムでゴニョゴニョしましょう。
app.intent('place', (conv) => {
if(conv.parameters['place'].eki){
// 駅の場合
}else if(conv.parameters['place'].cho){
// 町の場合
}
})
ゴニョゴニョする簡単な例も載せておきます。
おわり
Developer entitiesを使わずとも実装する方法はたくさんありますが、使用するとIntentsが最小限で済みます。
自分としてはIntentsの管理が大変なので、自分はこの方法を愛用しております。
Dialogflow使いのみなさんのお役に立てば幸いです。