 
             msg = msg.substring(breakIndex, msg.length)
 
-        @client.sendMessage(m, envelope.room) for m in submessages
+        @sendFormatted(m, envelope.room) for m in submessages
+
+  sendFormatted: (message, room) ->    
+    # RTM doesn't support formatted Urls, so we'll use the web client instead
+    if /<.+\|.+>/.test(message)
+      @webClient.chat.postMessage(room, message)
+    else
+      @client.sendMessage(message, room)
+
 
   reply: (envelope, messages...) ->
     @robot.logger.debug "Sending reply"

    return @robot.logger.error "No services token provided to Hubot" unless @options.token
    return @robot.logger.error "v2 services token provided, please follow the upgrade instructions" unless (@options.token.substring(0, 5) in ['xoxb-', 'xoxp-'])

    # Create our slack client object
    @client = new RtmClient @options.token, @options

    # Setup event handlers
    # TODO: Handle eventual events at (re-)connection time for unreads and provide a config for whether we want to process them

      @robot.logger.debug "Sending to #{envelope.room}: #{msg}"

      if msg.length <= SlackBot.MAX_MESSAGE_LENGTH
        @sendFormatted msg, envelope.room

      # If message is greater than MAX_MESSAGE_LENGTH, split it into multiple messages
      else
