首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wit.ai红宝石,重复呼叫,呼叫未结束

wit.ai红宝石,重复呼叫,呼叫未结束
EN

Stack Overflow用户
提问于 2016-07-27 14:37:29
回答 1查看 103关注 0票数 0

我正在使用一个Ruby Gem for wit.ai,并且已经在ROR中创建了一个查询wit.ai客户端的API。

但出乎意料的是,API中的方法继续重复调用客户端方法,即使在获得响应之后也是如此。

由于这个原因,API方法永远不会呈现JSON响应。

如何解决此问题?为什么会发生这种情况?

如果我在Rails控制台上做同样的事情,它会工作得很好。

ApiController

代码语言:javascript
复制
 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
end

ApiModel

代码语言:javascript
复制
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
 end

ChatbotHelper

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2016-07-27 19:47:10

啊!这是由于API控制器中的函数名称造成的,即response。看起来它是ROR的内置函数..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38605435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档