Hubot嵌套命令

时间:2017-04-25 02:12:37

标签: javascript coffeescript nested hubot rocket.chat

我想用hubot做支持服务创建一个树型问题和答案机器人,我无法弄清楚如何。我希望Hubot在有人进入房间时问一个问题(使用robot.enter)虽然这对Rocket没有用。但是,我找到了一个解决方法。但是,如果我想问一个问题并等待用户回复以保存他们的回复并问他们另一个问题,我该怎么做?

我尝试嵌套res.send并且它不允许我,在CoffeeScript上给我一个索引错误

2 个答案:

答案 0 :(得分:1)

如果您想要预先构建的内容,可以使用一些框架脚本来提供此功能:

https://github.com/lmarkus/hubot-conversation https://www.npmjs.com/package/hubot-dynamic-conversation

hubot-conversation更多JavaScripty(具有讽刺意味的是,更具动态性),而hubot-dynamic-conversation围绕着您构建会话流的JSON模型。

如果您不喜欢这些选项中的任何一个,您可以使用robot.listen的混合物来动态匹配消息和大脑来跟踪状态,从而实现自己的流程。

示例(我实际上没有经过测试,但应该给出正确的想法):

module.exports = (robot) ->
  robot.respond /hello$/, (res) ->
    res.reply 'Why hello there! How are you today?'
    # Record that we are mid-conversation
    convs = robot.brain.get('conversations')
    convs = convs.push(message.user.name)
    robot.brain.set('conversations', convs)

  robot.listen(
    # If we are mid-conversation, respond to whatever they say next
    (message) -> message.user.name in robot.brain.get('conversations')
    (response) ->
      response.reply 'I hope you have a great rest of the day!'
      # Record that we are done conversing
      convs = robot.brain.get('conversations')
      convs = convs.splice(convs.indexOf(message.user.name), 1)
      robot.brain.set('conversations', convs)
  )

答案 1 :(得分:0)

根据https://github.com/github/hubot/blob/master/docs/scripting.md 你可以使用:

  

robot.enter(res) - >       res.send res.random enterReplies