2017-10-24 11 views
1

ボットフレームワーク(NodeJS API)では、プロンプトの選択を、部分一致またはあいまい一致を行うのではなく、正確に一致するユーザー入力と一致するように強制する方法を教えてください。私は何かとても基本的なカスタムプロンプトを作成する必要がありますか?ボットフレームワークのプロンプト選択では、完全一致を許可するにはどうすればよいですか?

私はこのコードを使用しています:

var choices_films = JSON.parse(fs.readFileSync('films.json', 'utf8')); 
builder.Prompts.choice(session, "Say one film", choices_films, { listStyle: builder.ListStyle.button, minScore: 1.0 }); 

そしてfilms.jsonはこれを含んでいます

[ 
    { 
     "value": "House of Cards", 
     "synonyms": ["house of cards", "house cards", "cards"] 
}, 
{ 
     "value": "House of Kings", 
     "synonyms": ["house kings", "house of kings", "kings"] 
}, 
{ 
     "value": "Matrix Revolutions", 
     "synonyms": ["matrix", "revolutions"] 
}] 

私は "家を" と言う場合は、 "カードの家" が選択されている、それはので、ボットのフレームワークは私の "minScore:1.0"を無視しています。現時点では、私はカスタム選択やミドルウェアを使用してそれをキャプチャして修正する必要があるため、歓迎します。

+1

あなたの質問を詳しく説明できますか?コード例も役に立ちます – JasonSowers

+2

言語? C#またはノード? –

+0

こんにちはダニエル - 私はこれが良いと答えられる質問だと思って、私は少し言葉をきれいにするためにそれを編集しました。つまり、@EzequielJadibが述べたように、Botフレームワークに関する質問をするときにC#またはNode.js SDKを使用しているかどうかを明確にすることができれば、特定のシナリオに対してユーザーが簡単に答えを出すことができます。ありがとう! –

答えて

0

SDKのC#バージョンを使用している場合は、PromptDialog.Choice signature (任意)認識された選択肢がマッチとみなされるために必要な最小スコアは、0.0から1.0までの最小スコアです(オプション)。a parameter called minScoreが含まれ、以下のように記述されています:

デフォルト値は "0.4"です。

minScoreが1未満の値に設定されている場合、ファジーマッチングが使用されますが、値を1に設定すると完全一致のみが受け入れられます。次のように

メソッドシグネチャは次のとおりです。

public static void Choice<T>(IDialogContext context, ResumeAfter<T> resume, IPromptOptions<T> promptOptions, bool recognizeChoices = true, bool recognizeNumbers = true, bool recognizeOrdinals = true, double minScore = 0.4) 

あなたがSDKのNode.jsのバージョンを使用している場合equivalent minScore parameterpassed to the PromptChoice constructorあるIPromptChoiceFeaturesインターフェース(link to source)、でありますように、それは、見えます同様に同様にしきい値を設定できるはずですが、それ以上の場合は、Node.js SDKを個人的に使用していないため、具体的な構文については言及できません。

+0

チップのための@SamHanleyありがとう、私はNodeJSを使用していますが、私はminScore 1.0を試してみましたが、それでも部分的に一致しています。 'builder.Prompts.choice(セッション、"一つのオプションを選んで、choose_list、{listStyle:builder.ListStyle.button、minScore:1.0}); ' –

+0

これを使って、問題?私が言ったように、私は明らかにNodeではなくC#バージョンのみを使用しましたが、ユースケースについての明確な情報がなくても、これは動作するはずのコードです。 –

+0

私は、異なるオプションで同義語のように複数の単語を使用し、単語を繰り返すと問題が発生すると思います。例えば、「家の王」と「カードの家」。 –

関連する問題