class BotFramework::Dialogs::RegExpRecognizer
Attributes
expressions[RW]
intent[RW]
Public Class Methods
new(intent,expressions)
click to toggle source
# File lib/bot_framework/dialogs/reg_exp_recognizer.rb, line 6 def initialize(intent,expressions) @intent = intent if expressions.is_a? Regexp @expressions = {'*': expressions} else @expressions = expressions || {} end end
Public Instance Methods
recognize(context) { |nil, result| ... }
click to toggle source
# File lib/bot_framework/dialogs/reg_exp_recognizer.rb, line 15 def recognize(context) raise ArgumentError, "context must be a hash" unless context.is_a? Hash result = {score: 0.0, intent: nil} if context.fetch(:message, {}).fetch(:text, nil) utterance = context[:message][:text] locale = context[:message][:locale] || :* exp = @expressions[locale] ? @expressions[locale] : @expressions[:*] if exp matches = exp.match(utterance) if matches matched = matches.to_s result[:score] = matched.length / utterance.length result[:intent] = intent result[:expression] = exp result[:matched] = matches end yield nil, result else yield(ExpressionNotFoundForLocale, nil) end else yield(nil, result) end end