我尝试在Lita中实现一个小问卷作为样本:
您想为哪个系统打开一个呼叫? SYSInitials 你有什么问题? 我忘记密码了 ,谢谢!你的电话被打开了!
有什么能帮上忙的吗?
所以,我试试看:
module Lita
module Handlers
class Helpdesk < Handler
on :shut_down_complete, :clear_context
route(/^abrir chamado$/i, :abrir_chamado)
route(/^.*$/i, :motivo)
http.get '/info', :web
def motivo(response)
return unless context == 'abrir_chamado'
response.reply('Thanks! Your call was opened!')
clear_context
end
def abrir_chamado(response)
redis.set(:context, :abrir_chamado)
user = response.user
response.reply(
%(Hello #{user.name}, What is your problem?)
)
end
def context
@contetx ||= redis.get(:context)
end
def clear_context
redis.del(:context)
end
Lita.register_handler(Helpdesk)
end
end
end但是当我注册时,:informar_motivo route在通过:abrir_chamado route之后也是匹配的:informar_motivo路由。

但我需要:
me: abrir chamado Lita: Hello用户,您有什么问题? 我:,我忘了密码 丽塔:,谢谢!你的电话被打开了!
发布于 2017-04-07 14:24:02
我找到了一个丑陋的解决方案,但奏效了:P
module Lita
module Handlers
class Helpdesk < Handler
on :shut_down_complete, :clear_context
on :unhandled_message, :motivo
route(/^abrir chamado$/i, :abrir_chamado)
http.get '/info', :web
def motivo(payload)
response = payload[:message]
return unless context == 'abrir_chamado'
response.reply('Thanks! Your call was opened!')
clear_context
end
def abrir_chamado(response)
redis.set(:context, :abrir_chamado)
user = response.user
response.reply(
%(Hello #{user.name}, What is your problem?)
)
end
def context
@contetx ||= redis.get(:context)
end
def clear_context
redis.del(:context)
end
Lita.register_handler(Helpdesk)
end
end
end

https://stackoverflow.com/questions/43258415
复制相似问题