class BotPlatform::Dialogs::Prompts::Prompt

Attributes

validator[R]

Public Class Methods

new(dialog_id, validtor=nil) click to toggle source
Calls superclass method BotPlatform::Dialogs::Dialog::new
# File lib/bot_platform/dialogs/prompts/prompt.rb, line 9
def initialize(dialog_id, validtor=nil)
  super(dialog_id)
  @validator = validator
end

Public Instance Methods

continue(dc) click to toggle source
# File lib/bot_platform/dialogs/prompts/prompt.rb, line 26
def continue(dc)
  assert_dialog_context_is_valid dc

  if dc.turn_context.activity.type != BotPlatform::Activity::TYPES[:message]
    # do nothing
    return BotPlatform::Dialogs::DialogResult.new :complete
  end

  instance = dc.active_dialog
  state = instance.state[:state]
  options = instance.state[:options]

  recognized = on_recognize(dc.turn_context, state, options)

  is_valid = false

  if !@validator.nil?
    prompt_validator_ctx = PromptValidatorContext.new dc.turn_context, recognized, state, options
    is_valid = @validator.send(prompt_validator_ctx)
  elsif recognized.succeeded
    is_valid = true
  end

  if is_valid
    return dc.stop_dialog(recognized.value)
  else
    on_prompt(dc.turn_context, state, options, true)
  end

  return BotPlatform::Dialogs::DialogResult.new :end_of_turn
end
on_prompt(turn_context, state, options, is_retry) click to toggle source
# File lib/bot_platform/dialogs/prompts/prompt.rb, line 75
def on_prompt(turn_context, state, options, is_retry)
  raise "not implemented(abstrct in super)"
end
on_recognize(turn_context, state, options, is_retry) click to toggle source
# File lib/bot_platform/dialogs/prompts/prompt.rb, line 79
def on_recognize(turn_context, state, options, is_retry)
  raise "not implemented(abstrct in super)"
end
repromp(ttx, instance) click to toggle source
# File lib/bot_platform/dialogs/prompts/prompt.rb, line 65
def repromp(ttx, instance)
  assert_turn_context_is_valid ttx
  assert_dialog_instance_is_valid instance

  state = instace.state[:state]
  options = instance.state[:options]

  on_prompt(ttx, state, options, false)
end
resume(dc, result=null) click to toggle source
# File lib/bot_platform/dialogs/prompts/prompt.rb, line 58
def resume(dc, result=null)
  assert_dialog_context_is_valid dc

  reprompt(dc.turn_context, dc.active_dialog)
  return BotPlatform::Dialogs::DialogResult.new :end_of_turn
end
start(dc, options) click to toggle source
# File lib/bot_platform/dialogs/prompts/prompt.rb, line 14
def start(dc, options)
  assert_dialog_context_is_valid dc
  assert_prompt_options_is_valid options

  state = dc.active_dialog.state
  state[:options] = options
  state[:state] = {}

  on_prompt(dc.turn_context, state[:state], state[:options], false)
  return BotPlatform::Dialogs::DialogResult.new :end_of_turn
end