diff --git a/package.json b/package.json index b5fca13..145186c 100644 --- a/package.json +++ b/package.json @@ -6,19 +6,17 @@ "github hubot cisco spark adapter" ], "description": "A Cisco Spark adapter for hubot", - "licenses": [ - { - "type": "Apache-2.0", - "url": "http://github.com/tonybaloney/hubot-spark/raw/master/LICENSE" - } - ], + "licenses": [{ + "type": "Apache-2.0", + "url": "http://github.com/tonybaloney/hubot-spark/raw/master/LICENSE" + }], "license": "Apache-2.0", "repository": { "type": "git", "url": "git://github.com/tonybaloney/hubot-spark.git" }, "dependencies": { - "ciscospark": "^0.7.93", + "webex": "^1.80.85", "hubot": ">=2.3.0", "request": "2.9.3", "bluebird": "^3.5.0" diff --git a/src/spark-api.coffee b/src/spark-api.coffee index b35b1ab..26805a7 100644 --- a/src/spark-api.coffee +++ b/src/spark-api.coffee @@ -1,4 +1,6 @@ -spark = undefined + +Webex = require('webex') +webex = undefined class SparkApi person = undefined @@ -9,10 +11,15 @@ class SparkApi process.env['CISCOSPARK_ACCESS_TOKEN'] = @token process.env['HYDRA_SERVICE_URL'] = @uri - spark = require('ciscospark') + webex = Webex.init({ + credentials: { + access_token: @token + } + }) + init: () -> - spark.people.get({id: 'me'}).then((response) -> + webex.people.get('me').then((response) -> person = response ) @@ -26,11 +33,17 @@ class SparkApi if @isBot() options.mentionedPeople = 'me' options.max = 100 - spark.messages.list(options).then((messages) -> + webex.messages.list(options).then((messages) -> messages.items ) sendMessage: (options) -> - spark.messages.create(options) + webex.messages.create(options) + + getRooms: (options) -> + webex.rooms.list(options).then((rooms) -> + rooms.items + ) + module.exports = SparkApi diff --git a/src/spark.coffee b/src/spark.coffee index 3f52b63..63bc511 100644 --- a/src/spark.coffee +++ b/src/spark.coffee @@ -26,7 +26,7 @@ class SparkAdapter extends Adapter super send: (envelope, strings...) -> - user = if envelope.user then envelope.user else envelope + user = if envelope.user then envelope.user else envelope.room strings.forEach (str) => @prepare_string str, (message) => @bot.send user, message @@ -62,8 +62,9 @@ class SparkAdapter extends Adapter user = name: message.personEmail id: message.personId - room: message.roomId + roomId: message.roomId self.robot.logger.debug "Received #{text} from #{user.name}" + # self.robot.send user, text self.robot.receive new TextMessage user, text ) self.robot.logger.debug "Done with custom bot logic" @@ -89,6 +90,7 @@ class SparkRealtime extends EventEmitter spark = new SparkApi uri: options.api_uri token: options.access_token + return spark.init().then(() -> logger.debug "Connected as a bot? #{spark.isBot()}" logger.info "Created connection instance to Spark" @@ -103,21 +105,28 @@ class SparkRealtime extends EventEmitter ## Spark API call methods listen: (roomId, date, callback) -> - spark.getMessages(roomId: roomId).then (msges) => + newDate = new Date().toISOString() + spark.getMessages(roomId: roomId).then((msges) => + @robot.logger.debug "Messages recived: ", msges.length msges.forEach((msg) => if Date.parse(msg.created) > Date.parse(date) @robot.logger.debug "Matched new message #{msg.text}" + @robot.logger.debug "Message Object: ", msg callback [msg], roomId ) - newDate = new Date().toISOString() - setTimeout (=> - @listen roomId, newDate, callback - ), @refresh + ).catch((err) => + @robot.logger.debug "There was an error while getting messages for roomId #{roomId}" + newDate = date + ) + setTimeout (=> + @listen roomId, newDate, callback + ), @refresh send: (user, message) -> - @robot.logger.debug "Send message to room #{user.room} with text #{message}" + @robot.logger.debug user + @robot.logger.debug "Send message to room #{user.roomId} with text #{message}" spark.sendMessage - roomId: user.room + roomId: user.roomId text: message reply: (user, message) ->