2014-02-12 7 views
5

Gibt es eine Möglichkeit, Hubot den Kontext der Konversation zwischen Nachrichten verstehen zu lassen? So dass er mich Fragen stellen könnte?Wie kann Hubot den Chat-Kontext verstehen?

Zum Beispiel:

me: hey, create a branch plz 
Hubot: How should I name it? 
me: super-duper 
Hubot: Branch 'super-duper' created 

Sollte ich eine Art Zustandsmaschine? Irgendwelche Ratschläge dazu?

Antwort

8

Sie können das Gehirn des Roboters verwenden, um den Zustand zu erhalten.

robot.respond /hey, create a branch plz/i, (res) -> 
    res.reply "Ok, lets start" 
    user = {stage: 1} 
    name = res.message.user.name.toLowerCase() 
    robot.brain.set name, user 

robot.hear /(\w+)\s(\w+)/i, (msg) -> 
    name = msg.message.user.name.toLowerCase() 
    user = robot.brain.get(name) or null 
    if user != null 
     answer = msg.match[2] 
     switch user.stage 
     when 1 
      msg.reply "How should I name it?" 
     when 2 
      user.name = answer 
      msg.reply "Are you sure (y/n) ?" 
     when 3 
      user.confimation=answer 

     user.stage += 1 
     robot.brain.set name, user 

     if user.stage > 3 #End of process 
     if /y/i.test(user.confimation) 
      msg.reply "Branch #{user.name} created." 
     else 
      msg.reply "Branch creation aborted" 

     robot.brain.remove name 
+0

Nicht die schönste Lösung aller Zeiten, aber ich mag es. Vielen Dank! –

0

Sie könnten etwas wie eine Sitzung zuweisen.

Wir tun dies für Anmeldungen. Wenn ich ihn anmelde, ist er an den anrufenden Benutzer gebunden. Vorteil ist, dass Sie dies im Gehirn speichern können. Nachteil ist, dass ein Benutzer nur eine Sitzung haben kann. (Sie könnten dies überwinden, indem Sie ihnen eine ID zuweisen lassen.)

Verwandte Themen