class RasaCore::Client

Attributes

response_format[RW]

Public Class Methods

new(args={}) click to toggle source
# File lib/rasa_core/client.rb, line 7
def initialize(args={})
  @server = args[:server]
  @port = args[:port]
end

Public Instance Methods

append_action(args={}) click to toggle source
# File lib/rasa_core/client.rb, line 54
def append_action(args={})
  body = {
    event: 'action',
    timestamp: args[:timestamp],
    name: args[:name],
    policy: args[:policy],
    confidence: args[:confidence]}
  append_event_to_tracker(args, body)
end
append_slot(args={}) click to toggle source
# File lib/rasa_core/client.rb, line 40
def append_slot(args={})
  body = {
    event: 'slot',
    timestamp: args[:timestamp],
    name: args[:name],
    value: args[:value]}
  append_event_to_tracker(args, body)
end
check_health() click to toggle source
# File lib/rasa_core/client.rb, line 12
def check_health
  build_response(run_request(url: build_url), :no_format)
end
conversation_tracker(args={}) click to toggle source
# File lib/rasa_core/client.rb, line 33
def conversation_tracker(args={})
  path = ['conversations', args[:sender_id] || "default", 'tracker'].join('/')
  query = {include_events: args[:include_events] || "AFTER_RESTART"}
  url = build_url(path: path, query: query)
  build_response(run_request(url: url))
end
reset_slots(args={}) click to toggle source
# File lib/rasa_core/client.rb, line 49
def reset_slots(args={})
  body = {event: 'reset_slots', timestamp: args[:timestamp]}
  append_event_to_tracker(args, body)
end
send_message(args={}) click to toggle source
# File lib/rasa_core/client.rb, line 26
def send_message(args={})
  path = "webhooks/rest/webhook"
  body = {sender: args[:sender_id] || 'default', message: args[:message]}
  response = run_request(url: build_url(path: path), body: body, method: 'post')
  build_response(response)
end
status() click to toggle source
# File lib/rasa_core/client.rb, line 21
def status
  response = run_request(url: build_url(path: 'status'))
  build_response(response)
end
version() click to toggle source
# File lib/rasa_core/client.rb, line 16
def version
  response = run_request(url: build_url(path: 'version'))
  build_response(response)
end

Private Instance Methods

append_event_to_tracker(args={}, body={}) click to toggle source
# File lib/rasa_core/client.rb, line 89
def append_event_to_tracker(args={}, body={})
  path = ['conversations', args[:sender_id] || "default", 'tracker/events'].join('/')
  query = {include_events: args[:include_events] || "AFTER_RESTART"}
  response = run_request(url: build_url(path: path), query: query, body: body, method: 'post')
  build_response(response)
end
build_response(response, frmt=nil) click to toggle source
# File lib/rasa_core/client.rb, line 76
def build_response(response, frmt=nil)
  body = response.body
  body = format_response_body(body, frmt || self.response_format) if response.success?

  {
    success: response.success?,
    timed_out: response.timed_out?,
    return_message: response.return_message,
    code: response.code,
    body: body
  }
end
build_url(args={}) click to toggle source
# File lib/rasa_core/client.rb, line 66
def build_url(args={})
  "#{@server}:#{@port}/#{args[:path]}#{build_url_query(args[:query])}"
end
build_url_query(query) click to toggle source
# File lib/rasa_core/client.rb, line 70
def build_url_query(query)
  q = URI.encode_www_form(query || {})
  q.empty? ? "" : '?'+q
end