hubot-sample
Version:
teste de adapter
72 lines (58 loc) • 2.22 kB
text/coffeescript
require 'coffeescript/register'
{ regexEscape, loadConfigfile } = require '../lib/common'
{ getUserRoles, checkRole } = require '../lib/security'
actionHandler = require './action-handler'
classifier = require './classifier'
typing = (res, t) ->
res.robot.adapter.callMethod 'stream-notify-room',
res.envelope.user.roomID + '/typing', res.robot.alias, t is true
sendWithNaturalDelay = (msgs, elapsed = 0) ->
if !Array.isArray msgs
msgs = [msgs]
console.log "sendWithnatural"
keysPerSecond = 50
maxResponseTimeInSeconds = 2
msg = msgs.shift()
if typeof msg isnt 'string'
cb = msg.callback
msg = msg.answer
# minTimeTyping = maxResponseTimeInSeconds * 1000
# timeToType = (msg.length / keysPerSecond) * 1000 - elapsed
# delay = Math.min(Math.max(timeToType, 0), minTimeTyping)
# typing @, true
setTimeout =>
@send msg
if msgs.length
sendWithNaturalDelay.call @, msgs
else
# typing @, false
cb?()
, 100
createMatch = (text, pattern) ->
return text.match new RegExp('\\b' + pattern + '\\b', 'i')
module.exports = (_config, robot) ->
global.config = _config
# global.usersAndRoles = getUserRoles(robot)
if not global.config.interactions?.length
robot.logger.warning 'No interactions configured.'
return
if not global.config.trust
robot.logger.warning 'No trust level configured.'
return
actionHandler.registerActions(global.config)
classifier.train()
robot.hear /(.+)/i, (res) ->
res.sendWithNaturalDelay = sendWithNaturalDelay.bind(res)
msg = (res.match[0].replace res.robot.name + ' ', '').trim()
console.log "msg", msg
# check if robot should respond
# if res.envelope.user.roomType in ['c', 'p']
# if (createMatch(res.message.text, res.robot.name) or
# createMatch(res.message.text, res.robot.alias))
# actionName = classifier.processMessage(res, msg)
# actionHandler.takeAction(actionName, res)
# # TODO: Add engaged user conversation recognition/tracking
# else if res.envelope.user.roomType in ['d', 'l']
actionName = classifier.processMessage(res, msg)
console.log "action", actionName
actionHandler.takeAction(actionName, res)