Class: WitBot::Message
- Inherits:
-
Object
- Object
- WitBot::Message
- Defined in:
- lib/wit_bot/models/message.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#_outcomes ⇒ Object
readonly
Returns the value of attribute _outcomes.
-
#_text ⇒ Object
readonly
Returns the value of attribute _text.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#outcomes ⇒ Object
readonly
Returns the value of attribute outcomes.
-
#sent ⇒ Object
readonly
Returns the value of attribute sent.
-
#text ⇒ Object
readonly
Returns the value of attribute text.
-
#thread ⇒ Object
readonly
Returns the value of attribute thread.
Class Method Summary collapse
Instance Method Summary collapse
- #bot? ⇒ Boolean
- #from_hash(json) ⇒ Object
-
#initialize(thread = WitBot.thread, text, id: SecureRandom.uuid) ⇒ Message
constructor
A new instance of Message.
- #outcome ⇒ Object
- #params(p = nil) ⇒ Object
- #parse_outcomes(outcomes = @_outcomes) ⇒ Object
- #parse_outcomes!(outcomes = @_outcomes) ⇒ Object
- #send(n = 1, keep_context = true) ⇒ Object
- #to_hash ⇒ Object
Constructor Details
#initialize(thread = WitBot.thread, text, id: SecureRandom.uuid) ⇒ Message
Returns a new instance of Message.
5 6 7 8 9 10 11 12 |
# File 'lib/wit_bot/models/message.rb', line 5 def initialize(thread=WitBot.thread, text, id: SecureRandom.uuid) @thread = thread @text = text @_text = nil @id = id @sent = false @outcomes = @_outcomes = nil end |
Instance Attribute Details
#_outcomes ⇒ Object (readonly)
Returns the value of attribute _outcomes.
3 4 5 |
# File 'lib/wit_bot/models/message.rb', line 3 def _outcomes @_outcomes end |
#_text ⇒ Object (readonly)
Returns the value of attribute _text.
3 4 5 |
# File 'lib/wit_bot/models/message.rb', line 3 def _text @_text end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
3 4 5 |
# File 'lib/wit_bot/models/message.rb', line 3 def id @id end |
#outcomes ⇒ Object (readonly)
Returns the value of attribute outcomes.
3 4 5 |
# File 'lib/wit_bot/models/message.rb', line 3 def outcomes @outcomes end |
#sent ⇒ Object (readonly)
Returns the value of attribute sent.
3 4 5 |
# File 'lib/wit_bot/models/message.rb', line 3 def sent @sent end |
#text ⇒ Object (readonly)
Returns the value of attribute text.
3 4 5 |
# File 'lib/wit_bot/models/message.rb', line 3 def text @text end |
#thread ⇒ Object (readonly)
Returns the value of attribute thread.
3 4 5 |
# File 'lib/wit_bot/models/message.rb', line 3 def thread @thread end |
Class Method Details
.from_hash(thread, id, json) ⇒ Object
36 37 38 39 |
# File 'lib/wit_bot/models/message.rb', line 36 def self.from_hash(thread, id, json) return Bot::Message.from_hash thread, id, json if json[:bot] self.new(thread, json[:text], id: id).from_hash json end |
.many_from_hash(thread, json) ⇒ Object
40 41 42 |
# File 'lib/wit_bot/models/message.rb', line 40 def self.many_from_hash(thread, json) json.inject({}) { |h, (id, )| h[id] = self.from_hash thread, id, ; h } end |
Instance Method Details
#bot? ⇒ Boolean
14 15 16 |
# File 'lib/wit_bot/models/message.rb', line 14 def bot? false end |
#from_hash(json) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/wit_bot/models/message.rb', line 29 def from_hash(json) @_text = json[:_text] @sent = json[:sent] @_outcomes = json[:_outcomes] parse_outcomes! self end |
#outcome ⇒ Object
76 77 78 |
# File 'lib/wit_bot/models/message.rb', line 76 def outcome outcomes.first end |
#params(p = nil) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/wit_bot/models/message.rb', line 44 def params(p=nil) params = { q: text, msg_id: id, thread_id: thread.id } params[:context] = JSON.dump thread.context.as_json unless thread.context.empty? p ? params.merge(p) : params end |
#parse_outcomes(outcomes = @_outcomes) ⇒ Object
68 69 70 |
# File 'lib/wit_bot/models/message.rb', line 68 def parse_outcomes(outcomes=@_outcomes) outcomes.each_with_index.map { |outcome, i| Outcome.new self, outcome, i } end |
#parse_outcomes!(outcomes = @_outcomes) ⇒ Object
72 73 74 |
# File 'lib/wit_bot/models/message.rb', line 72 def parse_outcomes!(outcomes=@_outcomes) @outcomes = parse_outcomes outcomes end |
#send(n = 1, keep_context = true) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/wit_bot/models/message.rb', line 54 def send(n=1, keep_context=true) response = MessageRequest.new.request(self, n) @sent = true thread.reset_context unless keep_context @_text = response['_text'] @_outcomes = response['outcomes'] parse_outcomes! self end |
#to_hash ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/wit_bot/models/message.rb', line 18 def to_hash { text: @text, _text: @_text, id: @id, bot: bot?, sent: @sent, _outcomes: @_outcomes } end |