diff --git a/scripts/bot/index.coffee b/scripts/bot/index.coffee index 6f4e3cdff14da30caba90d466a25be9901151d63..7e1baa44b4d904b030b0a74f71a73cd480064d40 100644 --- a/scripts/bot/index.coffee +++ b/scripts/bot/index.coffee @@ -41,6 +41,7 @@ sendWithNaturalDelay = (msgs, elapsed=0) -> delay = Math.min(Math.max((msg.length / keysPerSecond) * 1000 - elapsed, 0), maxResponseTimeInSeconds * 1000) typing @, true + setTimeout => @send msg @@ -51,21 +52,13 @@ sendWithNaturalDelay = (msgs, elapsed=0) -> cb?() , delay -# check these -livechatTransferHuman = (res) -> - setTimeout -> - res.robot.adapter.callMethod 'livechat:transfer', - roomId: res.envelope.room - departmentId: process.env.DEPARTMENT_ID - , 1000 - -setUserName = (res, name) -> - res.robot.adapter.callMethod 'livechat:saveInfo', - _id: res.envelope.user.id - name: name - , - _id: res.envelope.room -# +# setUserName = (res, name) -> +# res.robot.adapter.callMethod 'livechat:saveInfo', +# _id: res.envelope.user.id +# name: name +# , +# _id: res.envelope.room +# # classifyInteraction = (interaction, classifier) -> if Array.isArray interaction.expect @@ -247,17 +240,10 @@ module.exports = (_config, _configPath, robot) -> msg = res.match[0].replace res.robot.name+' ', '' msg = msg.replace(/^\s+/, '') msg = msg.replace(/\s+&/, '') - # console.log '\n\n' - # console.log JSON.stringify(res.robot) - # console.log '\n\n' - console.log JSON.stringify(res.message) - console.log '\n\n' - console.log JSON.stringify(res.envelope) - console.log '\n\n' # check if robot should respond if res.envelope.user.roomType in ['c','p'] if (res.message.text.match new RegExp('\\b' + res.robot.name + '\\b', 'i')) or (res.message.text.match new RegExp('\\b' + res.robot.alias + '\\b', 'i')) processMessage res, msg - # TODO: Add engaged user conversation recognition + # TODO: Add engaged user conversation recognition/tracking else if res.envelope.user.roomType in ['d','l'] processMessage res, msg diff --git a/scripts/events/respond.coffee b/scripts/events/respond.coffee index 104ea9fca0183ae2ffb94040c4a0ca94757da704..35bdd74f43e340b128ed3cf8026dface329d1ca5 100644 --- a/scripts/events/respond.coffee +++ b/scripts/events/respond.coffee @@ -3,19 +3,34 @@ natural = require 'natural' {msgVariables, stringElseRandomKey} = require path.join '..', 'lib', 'common.coffee' answers = {} +livechat_department = (process.env.LIVECHAT_DEPARTMENT_ID || null ) class respond constructor: (@interaction) -> process: (msg) => + action = @interaction.action?.toLowerCase() or false + switch action + when 'transfer' + @livechatTransfer(msg) + type = @interaction.type?.toLowerCase() or 'random' switch type when 'block' messages = @interaction.answer.map (line) -> return msgVariables line, msg - msg.sendWithNaturalDelay messages + msg.sendWithNaturalDelay messages, 0, action when 'random' message = stringElseRandomKey @interaction.answer message = msgVariables message, msg - msg.sendWithNaturalDelay message + msg.sendWithNaturalDelay message, 0, action + + livechatTransfer: (msg) -> + setTimeout ( -> msg.robot.adapter.callMethod('livechat:transfer', + roomId: msg.envelope.room + departmentId: livechat_department + ).then (result) -> + console.log 'livechatTransfer executed! ' + result + ), 3000 + module.exports = respond diff --git a/training_data/catbot-en.yml b/training_data/catbot-en.yml index 625365a35ad4843fcee08ac1750c7842529121bc..633c0c6f5887f6ceb935659ae1deb2170c060861 100644 --- a/training_data/catbot-en.yml +++ b/training_data/catbot-en.yml @@ -87,8 +87,7 @@ interactions: - Ok, I'm transfering this to a real person. - one moment please. event: respond - context: clear - action: tranfer + action: transfer type: block - name: greeting-help @@ -122,6 +121,99 @@ interactions: context: clear event: respond type: block + + - name: greeting-how-are-you + expect: + - How are you? + - How are doing? + - How are you feeling? + answer: + - I am great, $user. Everything is peaceful around here... + - How can I be useful to you? + event: respond + type: block + + - name: greeting-miss-you + expect: + - long time no see + - I missed you + - did you miss me + - do you remember me + answer: + - I missed you too... + - $user! It's been a while! + - I was starting to think you wouldn't remember me anymore =) + event: respond + type: random + + - name: greeting-answer + expect: + - I'm fine + - I'm good + - I'm great + answer: + - cool =)! How can I help you? + - That's great! + - Awesome + - ok =) + event: respond + type: random + + - name: greeting-thankful + expect: + - Thanks + - Thank you + - awesome Thanks + - thks + - thank you very much + answer: + - you're welcome =) there is anything else? + - great! if you need something else please feel free to ask + - cool, glad to help. + event: respond + type: random + + - name: greeting-morning + expect: + - good morning + - morning + - morning bot + - good morning bot + answer: + - Hello, $user. I wish you a great day! + - Good morning, $user. How's the weather outside? + - It's a beatiful day to surf on the internert + - So great, $user ;) + - It's all better now that you got here, $user + event: respond + type: random + + - name: greeting-afternoon + expect: + - afternoon + - good afternoon + answer: + - Hellos, $user! i wish you a fantastic afteroon! + - Good afternoon, $user. Did you have lunch already? + - It's a beautiful afternoon for a quick sleep mode ;) + - Good afternooooon, $user! + - $user, I was starting to miss you already + event: respond + type: random + + - name: greeting-night + expect: + - good night + - good evening + - night + - evening + answer: + - A very good night to you as well, $user! + - Good night, $user! + - It is truely a good night, $user + event: respond + type: random + # RocketChat Installation - name: install-intro @@ -1131,104 +1223,12 @@ interactions: - son of a bitch answer: - whaaaat? you don't need to be rude, I'm just a machine.. - - Oh yeh?! but at least my mother-board teached better.. + - Oh yeh?! but at least my mother-board teached me better.. - You touch people with those fingers? - sorry $user, I'm only an experimental bot... event: respond type: random - - name: greeting-how-are-you - expect: - - How are you? - - How are doing? - - How are you feeling? - answer: - - I am great, $user. Everything is peaceful around here... - - How can I be useful to you? - event: respond - type: block - - - name: greeting-miss-you - expect: - - long time no see - - I missed you - - did you miss me - - do you remember me - answer: - - I missed you too... - - $user! It's been a while! - - I was starting to think you wouldn't remember me anymore =) - event: respond - type: random - - - name: greeting-answer - expect: - - I'm fine - - I'm good - - I'm great - answer: - - cool =)! How can I help you? - - That's great! - - Awesome - - ok =) - event: respond - type: random - - - name: greeting-thankful - expect: - - Thanks - - Thank you - - awesome Thanks - - thks - - thank you very much - answer: - - you're welcome =) there is anything else? - - great! if you need something else please feel free to ask - - cool, glad to help. - event: respond - type: random - - - name: greeting-morning - expect: - - good morning - - morning - - morning bot - - good morning bot - answer: - - Hello, $user. I wish you a great day! - - Good morning, $user. How's the weather outside? - - It's a beatiful day to surf on the internert - - So great, $user ;) - - It's all better now that you got here, $user - event: respond - type: random - - - name: greeting-afternoon - expect: - - afternoon - - good afternoon - answer: - - Hellos, $user! i wish you a fantastic afteroon! - - Good afternoon, $user. Did you have lunch already? - - It's a beautiful afternoon for a quick sleep mode ;) - - Good afternooooon, $user! - - $user, I was starting to miss you already - event: respond - type: random - - - name: greeting-night - expect: - - good night - - good evening - - night - - evening - answer: - - A very good night to you as well, $user! - - Good night, $user! - - It is truely a good night, $user - event: respond - type: random - # Configuration - name: configure-debug expect: @@ -1261,3 +1261,17 @@ interactions: type: random action: train role: admin + + - name: configure-livechat + expect: + - "configure livechat-" + - "set livechat-" + - "var livechat-" + answer: + - $key changed to $value! + - Got it! Now $key is $value + - $key = $value -> https://media.giphy.com/media/12NUbkX6p4xOO4/giphy.gif + event: configure + type: random + action: setVariable + role: admin