class BotPlatform::Dialogs::DialogContext

Attributes

dialog_stack[RW]
dialogs[RW]
turn_context[RW]

Public Class Methods

new(dialogs, turn_context, dialog_state) click to toggle source
# File lib/bot_platform/dialogs/dialog_context.rb, line 10
def initialize(dialogs, turn_context, dialog_state)
  assert_dialog_set_is_valid dialogs
  assert_turn_context_is_valid turn_context
  assert_dialog_state_is_valid dialog_state

  @dialogs = dialogs
  @turn_context = turn_context
  @dialog_stack = dialog_state.dialog_stack
end

Public Instance Methods

active_dialog() click to toggle source
# File lib/bot_platform/dialogs/dialog_context.rb, line 20
def active_dialog
  return nil if @dialog_stack.nil? || @dialog_stack.length==0
  @dialog_stack.last
end
continue_dialog() click to toggle source
# File lib/bot_platform/dialogs/dialog_context.rb, line 43
def continue_dialog
  instance = active_dialog 
  if instance != nil
    dialog = @dialogs.find instance.dialog_id
    if dialog
      return dialog.continue self
    end
  end

  return DialogResult.new :empty
end
prompt(dialog_id, options) click to toggle source
# File lib/bot_platform/dialogs/dialog_context.rb, line 36
def prompt(dialog_id, options)
  assert_dialog_id_is_valid dialog_id
  assert_is_not_empty options

  start_dialog dialog_id, options
end
replace_dialog(dialog_id, options) click to toggle source

stop active dialog and start a new dialog by given

# File lib/bot_platform/dialogs/dialog_context.rb, line 85
def replace_dialog(dialog_id, options)
  unless active_dialog.nil?
    @dialog_stack.pop
  end

  return start_dialog(dialog_id, options)
end
reprompt() click to toggle source
# File lib/bot_platform/dialogs/dialog_context.rb, line 93
def reprompt
  dialog = active_dialog
  if dialog != nil
    dialog.reprompt(turn_context)
  end
end
start_dialog(dialog_id, options) click to toggle source
# File lib/bot_platform/dialogs/dialog_context.rb, line 25
def start_dialog(dialog_id, options)
  assert_dialog_id_is_valid dialog_id

  dialog = @dialogs.find(dialog_id)
  raise "dialog(id=#{dialog_id}) cannot be found." if dialog.nil?
  dialog_instance = DialogInstance.new dialog_id
  @dialog_stack.push dialog_instance

  dialog.start self, options
end
stop_active_dialog() click to toggle source
# File lib/bot_platform/dialogs/dialog_context.rb, line 100
def stop_active_dialog
  dialog = active_dialog
  if dialog != nil
    dialog.stop
    @dialog_stack.pop
  end
end
stop_all() click to toggle source

stop all dialogs in the stack

# File lib/bot_platform/dialogs/dialog_context.rb, line 75
def stop_all
  if @dialog_stack.any?
    @dialog_stack.each do |dialog|
      dialog.stop
    end
    @dialog_stack = []
  end
end
stop_dialog(result=nil) click to toggle source
# File lib/bot_platform/dialogs/dialog_context.rb, line 55
def stop_dialog(result=nil)

  if @dialog_stack.any?
    @dialog_stack.pop
  end

  instance = active_dialog

  #previous dialog
  if !instance.nil?
    dialog = @dialogs.find instance.dialog_id
    if dialog
      return dialog.resume self, DialogReason::END_CALLED, result
    end
  else
    return DialogResult.new :complete, result
  end
end