我/我使用Lita创建了一个聊天机器人,我创建了一个名为dialog的句柄,并选择了将代码分开,在lita-dialog/lib/lita/handlers/dialog.rb
中有我的聊天路线,在{{1中有我的回复}}。
lita-dialog/bin/main.rb
lita-dialog/lib/lita/handlers/dialog
module Lita
module Handlers
class Dialog < Handler
# insert handler code here
route(/.*hello|hi|good morning|morning|welcome.*/i, :greeting_response, command: true)
Lita.register_handler(self)
end
end
end
lita-dialog/bin/main.rb
我正在使用RSpec来测试我的代码,并且测试通过了,但是当我测试bot以获得响应时,我没有收到预期的响应,
require_relative '../lib/dialog.rb'
def greeting_response(response)
greetingresponse = [
'Hello',
"Greetings, #{response.user.name}.",
"Well hello there, #{response.user.name}.",
"Hey #{response.user.name}, Hello!",
"Good day, #{response.user.name}",
'Hi.'
]
response.reply(greetingresponse.sample)
end
测试
Type "exit" or "quit" to end the session. │<rive/Microverse/Ruby/jaybot lita-dialog/spec/lita/handlers/dialog_spec.rb ruby utf-8 16% ☰ 1/6 : 1
jaybot > jaybot hello │6 lines yanked
jaybot >
这是我在处理程序文件夹中运行bot时得到的输出
require "spec_helper"
describe Lita::Handlers::Dialog, lita_handler: true do
it { is_expected.to(route_command('hello').to(:greeting_response)) }
it { is_expected.to_not(route('hello').to(:greeting_response)) }
end
答案 0 :(得分:0)
此答案的信用归Jimmy Cuadra
您显示的Lita处理程序定义了一条路由,该路由将在传入消息匹配时调用名为
greeting_response
的实例方法。没有定义该名称的实例方法,因此出现“未定义方法”异常。您有一个在另一个文件中定义了该名称的方法,但是在顶级范围内定义的方法与类中的实例方法不同。如果要将该方法包含在Lita处理程序类中,则应在处理程序中包含的模块中对其进行定义。