class Watson::Conversation::ManageDialog

Public Class Methods

new(username: "", password: "", workspace_id: "", storage: "hash") click to toggle source
# File lib/watson/conversation.rb, line 118
                def initialize(username: "", password: "", workspace_id: "", storage: "hash")
warn "[DEPRECATION] This gem has been renamed to `watson-assistant` and will no longer be supported. Please switch to `watson-assistant` as soon as possible."
                        @cnv = Dialog.new(
                                username: username,
                                password: password,
                                workspace_id: workspace_id
                        )
                
                        if storage == "hash"
                                @users = Hash.new
                        else
                                @users = Redis.new(:url => storage)
                        end

                        @mutex = Mutex.new
                end

Public Instance Methods

delete(user) click to toggle source
# File lib/watson/conversation.rb, line 146
def delete(user)
        @users.delete(user)
end
has_key?(user) click to toggle source
# File lib/watson/conversation.rb, line 141
def has_key?(user) 
        @users.has_key?(user)
end
talk(user, question) click to toggle source
# File lib/watson/conversation.rb, line 151
def talk(user, question)
        future_data = nil

        @mutex.synchronize do
                if @users.has_key?(user) == false
                        future_data = @cnv.talk("", "")
                else
                        future_data = @cnv.talk(question, context = @users.fetch(user))
                end
        end

        code, response = future_data.get_data()     

        output_texts = []
        if code == 200
                context = response["context"]
                response["output"]["text"].each do | text |
                        output_texts.push(text)
                end
        else
                #response["error"]["error"]["input.text"].each do | text |
                #end
                text = response["error"]
                output_texts.push(text)
        end

        @mutex.synchronize do
                if code == 200
                        @users.store(user, context)
                else
                        @users.delete(user)
                end
        end

        return {user: user, status_code: code, output: output_texts}.to_json
end
users() click to toggle source
# File lib/watson/conversation.rb, line 136
def users()
        @users
end