hubot对botkit的会话功能有类似的功能/解决方法吗? (并使hubot忘记回复)

时间:2016-07-25 07:28:18

标签: coffeescript hubot

主要是试图检查我想要做什么是可能的,因为我一直在努力在网上找到任何类似的例子。

我正在尝试使用hubot的框架创建一系列菜单,以便不必记住单个命令和值。相反,您只需在开头输入一个命令,在存储这些值之后提供相关信息,以便在菜单后面多次使用。

这样的事情:

robot.hear /blah/i, id:'start', (msg) ->
  currentPosition = 'start'
  msg.send "Please select an Option"
  selectOption msg

selectOption = (msg) ->
  currentPosition = 'selectOption'
  msg.send "Option 1"
  msg.send "Option 2"
  robot.hear /(.*)/i, id:'selectOption', (msg) ->
    displayOption1 msg if msg.match is '1'
    displayOption2 msg if msg.match is '2'

displayOption1 = (msg) ->
  currentPosition = 'displayOption1'
  msg.send "Please enter some information"
  robot.hear /(.*)/i, id: 'displayOption1', (msg) ->
    # if information is entered do something with information
    # pass the information onto another method etc...

# ....
# methods to do something with information and feedback results
# ....

# ....
# methods corresponding to option 2
# ....

# ....
# methods to do something with information and feedback results
# ....

end = (msg) ->
  currentPosition = 'none'
  msg.send "Thank you for using our service"

我一直在使用监听器中间件来确保您无法访问菜单中的顺序:

robot.listenerMiddleware (context, next, done) ->
  listenerID = context.listener.options?.id
  return unless listenerID?

  try
    if listenerID is 'start'
      if currentPosition is 'none'
        next()
      else
        done()

    if listenerID is 'selectOption'
      if currentPosition is 'selectOption'
        next()
      # etc...

  # Other similar examples to above for every "menu" ...

  catch err
    robot.emit ('error', err, context.response)       

当我第一次浏览菜单时,一切似乎都按预期工作,但是如果我尝试从头开始第二次启动问题就会出现问题。即使我在方法的开头或结尾将它们设置为null,值似乎也会被记住。当我接近结束时,它将开始打印两次。

我认为这是因为值被缓存/存储在别处,我需要重置它。我还假设它打印两次的原因是因为hubot记得我已经通过菜单一次,并且有两个实例同时运行(如果我第三次进行,它将开始打印三次)。然而,它似乎只是在最后这样做,并将按照预期的方式打印出前几种方法。

简单地说,是否有一种方法可以让hubot在'end'方法中忘记所有内容,以便它像我每次第一次运行它一样运行?我已经研究过了,但是像robot.shutdown这样的东西似乎不起作用。

如果无法解决上述问题,是否有解决方法?

编辑:如果它有帮助,我正在尝试制作类似于botkit的会话功能:https://github.com/howdyai/botkit#multi-message-replies-to-incoming-messages

1 个答案:

答案 0 :(得分:1)

我在github的帖子上链接到这个问题同样问题:

https://github.com/lmarkus/hubot-conversation

目前正在尝试查看它是否解决了我遇到的问题,如果不希望这会帮助其他人遇到类似问题。