Class: BotPlatform::TurnContext

Inherits:
Object
  • Object
show all
Includes:
Asserts
Defined in:
lib/bot_platform/turn_context.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Asserts

#assert_activity_is_not_null, #assert_activity_list_is_not_null, #assert_activity_type_is_not_null, #assert_context_is_not_null, #assert_conversation_reference_is_not_null, #assert_dialog_context_is_valid, #assert_dialog_id_is_valid, #assert_dialog_is_uniq, #assert_dialog_is_valid, #assert_dialog_set_is_valid, #assert_dialog_state_is_valid, #assert_is_not_empty, #assert_middleware_is_not_null, #assert_middleware_list_is_not_null, #assert_prompt_options_is_valid, #assert_turn_context_is_valid, #assert_waterfall_step_context_is_valid

Constructor Details

#initialize(adapter, activity) ⇒ TurnContext

Returns a new instance of TurnContext.



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/bot_platform/turn_context.rb', line 21

def initialize(adapter, activity)
  @adapter = adapter
  @activity = activity # incoming activity
  @from = activity.from
  @channel_id = activity.channel_id
  @responded = false
  @locale = "ja"
  @_on_send_activities = []
  @_on_update_activities = []
  @_on_delete_activities = []

end

Instance Attribute Details

#_on_delete_activitiesObject

コンテキストに登録されたサービスを保持



12
13
14
# File 'lib/bot_platform/turn_context.rb', line 12

def _on_delete_activities
  @_on_delete_activities
end

#_on_send_activitiesObject

コンテキストに登録されたサービスを保持



12
13
14
# File 'lib/bot_platform/turn_context.rb', line 12

def _on_send_activities
  @_on_send_activities
end

#_on_update_activitiesObject

コンテキストに登録されたサービスを保持



12
13
14
# File 'lib/bot_platform/turn_context.rb', line 12

def _on_update_activities
  @_on_update_activities
end

#activityObject (readonly)

元のアダプター情報



7
8
9
# File 'lib/bot_platform/turn_context.rb', line 7

def activity
  @activity
end

#adpterObject (readonly)

元のアダプター情報



7
8
9
# File 'lib/bot_platform/turn_context.rb', line 7

def adpter
  @adpter
end

#buffered_reply_activitiesObject

コンテキストに登録されたサービスを保持



12
13
14
# File 'lib/bot_platform/turn_context.rb', line 12

def buffered_reply_activities
  @buffered_reply_activities
end

#channel_idObject (readonly)

元のアダプター情報



7
8
9
# File 'lib/bot_platform/turn_context.rb', line 7

def channel_id
  @channel_id
end

#fromObject (readonly)

元のアダプター情報



7
8
9
# File 'lib/bot_platform/turn_context.rb', line 7

def from
  @from
end

#localeObject

コンテキストに登録されたサービスを保持



12
13
14
# File 'lib/bot_platform/turn_context.rb', line 12

def locale
  @locale
end

#respondedObject

コンテキストに登録されたサービスを保持



12
13
14
# File 'lib/bot_platform/turn_context.rb', line 12

def responded
  @responded
end

#stateObject

コンテキストに登録されたサービスを保持



12
13
14
# File 'lib/bot_platform/turn_context.rb', line 12

def state
  @state
end

#turn_stateObject

コンテキストに登録されたサービスを保持



12
13
14
# File 'lib/bot_platform/turn_context.rb', line 12

def turn_state
  @turn_state
end

Class Method Details

.dup_context(context, activity) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/bot_platform/turn_context.rb', line 49

def self.dup_context(context, activity)
  ctx = TurnContext.new context.adapter, activity
  ctx.state = context.state
  ctx.responded = context.responded
  if context.is_a?(TurnContext)
    ctx.buffered_reply_activities = context.buffered_reply_activities
    # keep private middleware pipeline hooks.
    ctx._on_send_activities = context._on_send_activities
    ctx._on_update_activity = context._on_update_activity
    ctx._on_delete_activity = context._on_delete_activity
  end
  return ctx
end

Instance Method Details

#add_on_delete_activits(activity_handler) ⇒ Object



44
45
46
47
# File 'lib/bot_platform/turn_context.rb', line 44

def add_on_delete_activits(activity_handler)
  @_on_delete_activities << activity_handler
  self
end

#add_on_send_activities(activity_handler) ⇒ Object



34
35
36
37
# File 'lib/bot_platform/turn_context.rb', line 34

def add_on_send_activities(activity_handler)
  @_on_send_activities << activity_handler
  self
end

#add_on_update_activities(activity_handler) ⇒ Object



39
40
41
42
# File 'lib/bot_platform/turn_context.rb', line 39

def add_on_update_activities(activity_handler)
  @_on_update_activities << activity_handler
  self
end

#send_activities(activities) ⇒ Object

Sends a set of activities to the sender of the incoming activity.



96
97
98
99
100
101
# File 'lib/bot_platform/turn_context.rb', line 96

def send_activities(activities)
  assert_activity_is_not_null activities
  assert_activity_is_not_null activities[0]

  @adapter.send_activities(self, activities)
end

#send_activity(activity) ⇒ Object



90
91
92
93
# File 'lib/bot_platform/turn_context.rb', line 90

def send_activity(activity)
  activity.to = @activity.from
  send_activities([activity])
end

#send_confirm(text, prefix = "") ⇒ Object



68
69
70
71
# File 'lib/bot_platform/turn_context.rb', line 68

def send_confirm(text,prefix="")
  activity_to_send = Activity.new(Activity::TYPES[:confirm], {text: text, prefix: prefix})
  send_activity(activity_to_send)
end

#send_content(content) ⇒ Object



83
84
85
86
87
88
# File 'lib/bot_platform/turn_context.rb', line 83

def send_content(content)
  activity_to_send = Activity.new(Activity::TYPES[:carousel], {
    content: content, to: @activity.from
  })
  send_activity(activity_to_send)
end

#send_image(preview_url, resource_url) ⇒ Object



78
79
80
81
# File 'lib/bot_platform/turn_context.rb', line 78

def send_image(preview_url, resource_url)
  activity_to_send = Activity.new(Activity::TYPES[:image], {resource_url: resource_url, preview_url: preview_url})
  send_activity(activity_to_send)
end

#send_message(text) ⇒ Object



63
64
65
66
# File 'lib/bot_platform/turn_context.rb', line 63

def send_message(text)
  activity_to_send = Activity.new(Activity::TYPES[:message], {text: text})
  send_activity(activity_to_send)
end

#send_options(caption, prefix, options) ⇒ Object



73
74
75
76
# File 'lib/bot_platform/turn_context.rb', line 73

def send_options(caption, prefix, options)
  activity_to_send = Activity.new(Activity::TYPES[:options], {text: caption, options: options, prefix: prefix})
  send_activity(activity_to_send)
end