我正在使用一个Ruby Gem for wit.ai,并且已经在ROR中创建了一个查询wit.ai客户端的API。
但出乎意料的是,API中的方法继续重复调用客户端方法,即使在获得响应之后也是如此。
由于这个原因,API方法永远不会呈现JSON响应。
如何解决此问题?为什么会发生这种情况?
如果我在Rails控制台上做同样的事情,它会工作得很好。
ApiController
module Api
module V0
class ApiController < ApplicationController
def response
q = params[:q]
response = Api::V0::ApiModel.handle_response q
render :json => response, :status => 200
end
end
end
endApiModel
module Api
module V0
class ApiModel
def self.handle_response q
response = ChatbotHelper.query q
if response['type'] == "msg"
message = response["msg"]
json = {"message" => message}
else
json = response
end
json
end
end
end
endChatbotHelper
module ChatbotHelper
def self.init
actions = {
send: -> (request, response) {
puts "REQUEST #{request} RESPONSE #{response}"
puts("#{response['text']}")
response
},
getData: -> (context){
},
}
@client = Wit.new(access_token: "XYZ", actions: actions)
end
def self.query q
begin
self.init
response = self.get_response q
rescue SocketError
response = {"message": "SocketError"}
end
response
end
def self.get_response q
puts "GET RESPONSE"
response = @client.converse("b", q, {})
response
end
end发布于 2016-07-27 19:47:10
啊!这是由于API控制器中的函数名称造成的,即response。看起来它是ROR的内置函数..
https://stackoverflow.com/questions/38605435
复制相似问题